yolov5-7.0版本detect修改自己调用

第一:在项目目录下创建一个DetectAPI.py  文件然后把下面代码复制到py文件里:

import argparse
import os
import platform
import random
import sys
import time
from pathlib import Path

import torch
from torch.backends import cudnn

FILE = Path(__file__).resolve()
ROOT = FILE.parents[0]  # YOLOv5 root directory
if str(ROOT) not in sys.path:
    sys.path.append(str(ROOT))  # add ROOT to PATH
ROOT = Path(os.path.relpath(ROOT, Path.cwd()))  # relative
from models.common import DetectMultiBackend
from utils.dataloaders import IMG_FORMATS, VID_FORMATS, LoadImages, LoadScreenshots, LoadStreams
from utils.general import (LOGGER, Profile, check_file, check_img_size, check_imshow, check_requirements, colorstr, cv2,
                           increment_path, non_max_suppression, print_args, scale_boxes, strip_optimizer, xyxy2xywh)
from utils.plots import Annotator, colors, save_one_box
from utils.torch_utils import select_device, smart_inference_mode, time_sync

"""
使用面向对象编程中的类来封装,需要去除掉原始 detect.py 中的结果保存方法,重写
保存方法将结果保存到一个 csv 文件中并打上视频的对应帧率

"""


class YoloOpt:
    def __init__(self, weights='weights/last.pt',
                 imgsz=(640, 640), conf_thres=0.25,
                 iou_thres=0.45, device='0', view_img=False,
                 classes=None, agnostic_nms=False,
                 augment=False, update=False, exist_ok=False,
                 project='/detect/result', name='result_exp',
                 save_csv=True,
                 half_yn=False):
        self.weights = weights  # 权重文件地址
        self.source = None  # 待识别的图像
        if imgsz is None:
            self.imgsz = (640, 640)
        self.imgsz = imgsz  # 输入图片的大小,默认 (640,640)
        self.conf_thres = conf_thres  # object置信度阈值 默认0.25  用在nms中
        self.iou_thres = iou_thres  # 做nms的iou阈值 默认0.45   用在nms中
        self.device = device  # 执行代码的设备,由于项目只能用 CPU,这里只封装了 CPU 的方法
        self.view_img = view_img  # 是否展示预测之后的图片或视频 默认False
        self.classes = classes  # 只保留一部分的类别,默认是全部保留
        s
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将未识别出来的图片单独存放,您可以按照以下步骤修改yolov5-7.0detect.py中的源码: 1. 首先,在detect.py的最前面添加以下代码行,以便导入所需的库和设置相关参数: ```python import os import shutil save_dir = "unrecognized_images" if not os.path.exists(save_dir): os.makedirs(save_dir) img_size = 640 # 修改为您需要的图片大小 conf_thres = 0.4 # 修改为您需要的置信度阈值 iou_thres = 0.5 # 修改为您需要的IoU阈值 ``` 2. 在detect.py的detect()函数的循环中添加以下代码行,以便将未识别出来的图片单独存放: ```python for i, (img, im0s, vid_cap) in enumerate(dataset): img = torch.from_numpy(img).to(device) img = img.float() / 255.0 if img.ndimension() == 3: img = img.unsqueeze(0) img = img.permute(0, 3, 1, 2) pred = model(img)[0] pred = non_max_suppression(pred, conf_thres, iou_thres) if pred[0] is None: img_name = dataset.img_files[i].split("/")[-1] shutil.copyfile(dataset.img_files[i], os.path.join(save_dir, img_name)) continue # 其他代码行 ``` 以上代码中,我们首先使用non_max_suppression()函数对预测结果进行筛选,如果没有识别出来任何物体,则将其对应的图片复制到指定的目录下。注意,这里我们假设detect.py中的数据集是使用的yolov5.utils.datasets.LoadImages类,该类中包含了所有待检测的图片路径。如果您使用的是其他数据集,请根据实际情况进行修改。 3. 最后,保存修改后的detect.py文件,并运行以下命令即可启动检测并将未识别出来的图片单独存放: ```bash python detect.py --source path/to/images --weights path/to/weights.pt --save-txt --save-conf ``` 其中,--source指定待检测的图片目录,--weights指定模型权重文件,--save-txt和--save-conf用于保存检测结果。未识别出来的图片将会被存放在指定的目录下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值