前言:本人最近在学着使用yolo,为了方便调用,今天看了下detect.py源码并做了点修改,不过由于训练的模型是单类型的,所以在推理在结果中还没看出哪个数值代表“类型”,所以以下内容只针对单类型的模型,后面琢磨出来了会更新。希望有大佬能指导一下。

在detect.py中添加如下代码块

class yolo_detector:def __init__(self,weights='./Weights/last.pt',    # 用train.py训练出的.pt文件imgsz=(640,640),conf_thres=0.25,iou_thres=0.45,half=False,):self.conf_thres = conf_thresself.iou_thres = iou_thresself.device = select_device('0')self.model = DetectMultiBackend(weights, device=self.device)   # 加载模型stride, names, pt = self.model.stride, self.model.names, self.model.ptself.imgsz = check_img_size(imgsz, s=stride)  # check image sizehalf &= pt and self.device.type != 'cpu'  # half precision only supported by PyTorch on CUDAself.half = halfif pt:self.model.model.half() if half else self.model.model.float()self.view_img = check_imshow()cudnn.benchmark = True  # set True to speed up constant image size inferenceself.model.warmup(imgsz=(1, 3, *self.imgsz), half=self.half)def run(self, frame):# (h, w, c) to (c, h, w)b, g, r = cv2.split(frame)im0 = numpy.array([b, g, r])im = torch.from_numpy(im0).to(self.device)im = im.half() if self.half else im.float()  # uint8 to fp16/32im /= 255  # 0 - 255 to 0.0 - 1.0if len(im.shape) == 3:im = im[None]  # expand for batch dimpred = self.model(im)pred = non_max_suppression(pred, self.conf_thres, self.iou_thres, max_det=5)results = []for i, det in enumerate(pred):if len(det):# Rescale boxes from img_size to im0 sizedet[:, :4] = scale_coords(im.shape[2:], det[:, :4], frame.shape).round()if det.numel():x1, y1, x2, y2 = int(det[0, 0].item()), int(det[0, 1].item()), int(det[0, 2].item()), int(det[0, 3].item())lu = (x1, y1)rd = (x2, y2)results.append((lu, rd))return results

调用实例:

import cv2
import detect_remake
cap=cv2.VideoCapture(0)
a = detect_remake.yolo_detector()
while True:rec,img = cap.read()results = a.run(img)if results:for i, pts in enumerate(results):cv2.rectangle(img, pts[0], pts[1], (0, 0, 255), 2)cv2.imshow("video",img)if cv2.waitKey(1)==ord('q'):break

YOLOv5 修改detect模块以方便调用(单类型目标)相关推荐

  1. 修改yolov5的detect层,提高Triton推理服务的性能

    修改yolov5的detect层,提高Triton推理服务的性能 1. 测试方法 2. 修改前的性能指标 3. 具体步骤 3.1 clone ultralytics yolov5 repo 3.2 改 ...

  2. Winform开发框架中工作流模块的业务表单开发

    在我们开发工作流的时候,往往需要设计到具体业务表单信息的编辑,有些是采用动态编辑的,有些则是在开发过程中处理的,各有各的优点,动态编辑的则方便维护各种各样的表单,但是数据的绑定及处理则比较麻烦,而自定 ...

  3. yolov5修改骨干网络--原网络说明

    yolov5修改骨干网络–原网络说明 yolov5修改骨干网络-使用pytorch自带的网络-以Mobilenet和efficientnet为例 yolov5修改骨干网络-使用自己搭建的网络-以eff ...

  4. 【Android Gradle 插件】settings.gradle 配置文件 ( 配置基本作用 | include 函数用法 | 目录层级配置 | 修改 Module 模块构建脚本名称 )

    文章目录 一.settings.gradle 配置 1.基本作用 2.include 函数用法 3.Module 目录层级配置 4.修改 Module 模块的 build.gradle 默认构建脚本名 ...

  5. 自己的模块给其他人调用是怎么打包的_webpack实战——模块打包

    写在前面 这是webpack实战系列的第二篇:模块和模块打包.上一篇:webpack实战--打包第一个应用 记录了webpack的一些基础内容与一个简单的小例子,开启了webpack的实战之路,这一篇 ...

  6. Jeecg-Boot2.1.2 版本,手工集成Online在线开发模块(Online表单、Online报表)

    Jeecg-Boot2.1.2 版本,手工集成Online在线开发模块(Online表单.Online报表) 友情提醒: 如果你想去掉Online模块,也可以参考此文档 1.ant-design-je ...

  7. 2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程——使用theos tweak 注入hook修改游戏执行代码上传动态头像

    2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程--使用theos tweak 注入hook修改游戏执行代码上传动态头像 开篇 需求&最终效果 环境要求与即将使用的 ...

  8. ncnn opencv VS2017 window10 yolov5调用摄像头实时目标检测

    Contents 环境下载.编译 1 OpenCV-4.5.4下载.配置 2 CMake下载安装.配置 3 下载.编译protobuf-3.4.0 4 下载.编译ncnn VS2017新建项目--编译 ...

  9. 10.1 黑马Vue电商后台管理系统之完善订单管理模块--加入修改订单模块

    效果如下: 实现如下: 1.我仍然保留了添加地址这一个对话框,但只是绑定在另一个按钮上面,而点击左侧第一个按钮就会跳转到"修改订单"模块 <template v-slot=& ...

最新文章

  1. 给模型加装饰器Java,装饰器设计模式
  2. beautifulsoup关于标签的初学习
  3. JSP(1)—基础知识
  4. 三星s9没有推送android10,2月14日 三星Galaxy S9/S9+开始推送Android 9.0正式版
  5. 鸿蒙大陆武器合成,鸿蒙大陆9.1攻略(附隐藏英雄密码)
  6. HttpClient4.5.2调用示例(转载+原创)
  7. C++文本文件操作和二进制文件读写
  8. 利用Quartz2D--context绘制矩形
  9. VMWare 装mac os x 一个必备优化神器 beamoff
  10. 图像匹配几种常见算法与实践
  11. excel - 单元格的表示方式 (称为:单元格引用 )(类似:变量表示单元格)
  12. python中for怎么无限循环_Python中无限循环有什么条件
  13. 点云配准(一) 线性代数基础
  14. 基于FPGA的数据采集系统(一)
  15. 计算机页面里的坚果云删不了怎么回事,坚果云如何卸载?卸载坚果云的几种方法...
  16. python爬取猫眼遇到动态字体反爬
  17. 为什么人人都爱康师傅
  18. 软件工程——软件总体设计
  19. Android Remote Views
  20. 将笔记本外接显示器设置为主显示器

热门文章

  1. 微信小程序实现快递查询功能(附源码)
  2. Python大牛用的贼溜,9个实用技巧分享给你
  3. 深度揭密:2015年微商怎么玩才赚钱?
  4. 浅谈Robots.txt文件给网站带来的好处
  5. 实现物联网的技术要素
  6. 《大话西游》你真的看懂了吗,kotlin命令行编译
  7. ko 绑定html,WeX5的正确打开方式(3)——绑定机制
  8. 小鲨鱼在51nod小学
  9. 手把手教你搭建SpringBoot+MySQL+Mybatis项目(采坑日记)
  10. c语言医生值班题目讲解,C趣味程序百例(17)哪个大夫哪天值班