自助免费建站,wordpress电商小程序,鄂州网站建设哪家好,免费关键词挖掘网站Yolov8目标识别特征检测如需安装运行环境或远程调试#xff0c;见文章底部个人QQ名片#xff0c;由专业技术人员远程协助#xff01;前言这篇博客针对Yolov8目标识别特征检测编写代码#xff0c;代码整洁#xff0c;规则#xff0c;易读。 学习与应用推荐…Yolov8目标识别特征检测如需安装运行环境或远程调试见文章底部个人QQ名片由专业技术人员远程协助前言这篇博客针对Yolov8目标识别特征检测编写代码代码整洁规则易读。 学习与应用推荐首选。文章目录 一、所需工具软件 二、使用步骤1. 引入库2. 识别图像特征3. 参数设置4. 运行结果三、在线协助一、所需工具软件1. Pycharm, Python2. Yolov8, OpenCV二、使用步骤1.引入库代码如下示例import torchfrom ultralytics.yolo.engine.predictor import BasePredictor
from ultralytics.yolo.engine.results import Results
from ultralytics.yolo.utils import DEFAULT_CFG, ROOT, ops
from ultralytics.yolo.utils.plotting import Annotator, colors, save_one_box2.识别图像特征代码如下示例class DetectionPredictor(BasePredictor):def get_annotator(self, img):return Annotator(img, line_widthself.args.line_thickness, examplestr(self.model.names))def preprocess(self, img):img torch.from_numpy(img).to(self.model.device)img img.half() if self.model.fp16 else img.float() # uint8 to fp16/32img / 255 # 0 - 255 to 0.0 - 1.0return imgdef postprocess(self, preds, img, orig_img):preds ops.non_max_suppression(preds,self.args.conf,self.args.iou,agnosticself.args.agnostic_nms,max_detself.args.max_det,classesself.args.classes)results []for i, pred in enumerate(preds):orig_img orig_img[i] if isinstance(orig_img, list) else orig_imgshape orig_img.shapepred[:, :4] ops.scale_boxes(img.shape[2:], pred[:, :4], shape).round()results.append(Results(boxespred, orig_imgorig_img, namesself.model.names))return resultsdef write_results(self, idx, results, batch):p, im, im0 batchlog_string if len(im.shape) 3:im im[None] # expand for batch dimself.seen 1imc im0.copy() if self.args.save_crop else im0if self.source_type.webcam or self.source_type.from_img: # batch_size 1log_string f{idx}: frame self.dataset.countelse:frame getattr(self.dataset, frame, 0)self.data_path pself.txt_path str(self.save_dir / labels / p.stem) ( if self.dataset.mode image else f_{frame})log_string %gx%g % im.shape[2:] # print stringself.annotator self.get_annotator(im0)det results[idx].boxes # TODO: make boxes inherit from tensorsif len(det) 0:return log_stringfor c in det.cls.unique():n (det.cls c).sum() # detections per classlog_string f{n} {self.model.names[int(c)]}{s * (n 1)}, # writefor d in reversed(det):cls, conf d.cls.squeeze(), d.conf.squeeze()if self.args.save_txt: # Write to fileline (cls, *(d.xywhn.view(-1).tolist()), conf) \if self.args.save_conf else (cls, *(d.xywhn.view(-1).tolist())) # label formatwith open(f{self.txt_path}.txt, a) as f:f.write((%g * len(line)).rstrip() % line \n)if self.args.save or self.args.save_crop or self.args.show: # Add bbox to imagec int(cls) # integer classname fid:{int(d.id.item())} {self.model.names[c]} if d.id is not None else self.model.names[c]label None if self.args.hide_labels else (name if self.args.hide_conf else f{name} {conf:.2f})self.annotator.box_label(d.xyxy.squeeze(), label, colorcolors(c, True))if self.args.save_crop:save_one_box(d.xyxy,imc,fileself.save_dir / crops / self.model.model.names[c] / f{self.data_path.stem}.jpg,BGRTrue)return log_string3.参数定义代码如下示例if __name__ __main__:parser argparse.ArgumentParser()parser.add_argument(--weights, nargs, typestr, defaultyolov5_best_road_crack_recog.pt, helpmodel.pt path(s))parser.add_argument(--img-size, typeint, default640, helpinference size (pixels))parser.add_argument(--conf-thres, typefloat, default0.25, helpobject confidence threshold)parser.add_argument(--iou-thres, typefloat, default0.45, helpIOU threshold for NMS)parser.add_argument(--view-img, actionstore_true, helpdisplay results)parser.add_argument(--save-txt, actionstore_true, helpsave results to *.txt)parser.add_argument(--classes, nargs, typeint, default0, helpfilter by class: --class 0, or --class 0 2 3)parser.add_argument(--agnostic-nms, actionstore_true, helpclass-agnostic NMS)parser.add_argument(--augment, actionstore_true, helpaugmented inference)parser.add_argument(--update, actionstore_true, helpupdate all models)parser.add_argument(--project, defaultruns/detect, helpsave results to project/name)parser.add_argument(--name, defaultexp, helpsave results to project/name)parser.add_argument(--exist-ok, actionstore_true, helpexisting project/name ok, do not increment)opt parser.parse_args()4.运行结果如下 三、在线协助 如需安装运行环境或远程调试见文章底部个人QQ名片由专业技术人员远程协助1远程安装运行环境代码调试2Qt, C, Python入门指导3界面美化4软件制作博主推荐文章https://blog.csdn.net/alicema1111/article/details/123851014个人博客主页https://blog.csdn.net/alicema1111?typeblog博主所有文章点这里https://blog.csdn.net/alicema1111?typeblog