本章博客主要分析YoloV5代码中的detect程序代码,按照程序运行步骤顺序主要分为3大部分。

1、包与库的导入

1.1 导入安装好的python库、torch库等等


其中:argparse模块、os模块、sys模块都是Python内置模块。
argparse模块:它是一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息;
os模块:它提供了多种操作系统的接口。通过os模块提供的操作系统接口,我们可以对操作系统里文件、终端、进程等进行操作;
sys模块:它是与python解释器交互的一个接口,该模块提供对解释器使用或维护的一些变量的访问和获取,它提供了许多函数和变量来处理 Python 运行时环境的不同部分。

from pathlib import Path

该段代码意思是指从External Libraries->pathlib->path 导入Path库,具体说明如下:
Path表示文件系统路径,但与PurePath不同,它还提供方法对路径对象进行系统调用。根据您的系统,实例化路径将返回PosixPath或WindowsPath对象也可以直接实例化PosixPath或WindowsPath,但不能在POSIX系统上实例化WindowsPath,反之亦然。

import torch
import torch.backends.cudnn as cudnn

添加torch库,CUDNN 是英伟达专门为深度神经网络所开发出来的 GPU 加速库,针对卷积、池化等常见操作做了非常多的底层优化,比一般的 GPU 程序要快很多。在使用 GPU 的时候,PyTorch 会默认使用 CUDNN 加速。

1.2 导入相对路径下的库


导入、添加项目文件下相对应的文件夹中的库文件。

1.3 定义一些文件路径


_ _ file _ _表示当前detect.py的文件路径,第一行代码获取其绝对路径,第二行代码获取其根目录,sys.path表示模块的查询路径列表。

2、执行函数


if name == ‘main’:的作用,一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if name == ‘main’: 的作用就是控制这两种情况执行代码的过程,在 if name == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。
(1)解析命令行传进的参数;opt = parse_opt()
该段代码分为三部分,第一部分定义了一些可以传导的参数类型,第二部分对于imgsize部分进行了额外的判断(640*640),第三部分打印所有参数信息,opt变量存储所有的参数信息,并返回。
(2)执行命令行参数; main(opt)
该段代码分为两部分,第一部分首先完成对于requirements.txt的检查,检测这些依赖包有没有安装;第二部分,将opt变量参数传入,执行run函数。

3、Run函数


run函数的整体运行部分可以概括为6个部分。

3.1 对source传入的东西进行额外判断


此处的source对应run函数中的source,代表图片路径;第三行代码判断是否传入为文件地址,IMG_FORMATS表示各种图片类型,VID_FORMATS表示各种视频类型;第四行代码判断是否为网络流传入;第五行代码source.isnumeric判断是否传入为数字,–source 0,数字0表示打开电脑的第一个摄像头;如果是一个网络流且是一个文件,就会进行下载操作。

3.2 新建了一个保存结果的文件夹


代码中的 project 指 run 函数中的 project,对应的是 runs/detect 的目录,name 对应 run 函数中的“name=exp”,然后进行拼接操作;increment_path 表示增量路径;判断 save_txt 是否为 true,save_txt 在 run 函数以及 parse_opt() 函数中都有相应操作,如果传入save_txt,新建 “labels” 文件夹存储结果。

3.3 加载模型权重


首先根据代码环境选择加载设备,GPU/CPU。选择多后端框架,判断你的深度学习框架,本次是pytorch,加载模型,
读取模型参数,判断 imgsz,步长 stride 一般是32。

3.4 DataLoad模块,加载待预测的图片


首先是判断 webcam 是否为 true,前面已经定义,不为True,因此执行 datasets.py下的LoadImages函数,完成输入数据的加载过程。

3.5 模型的推理过程


执行模型推理过程,把图片或者视频输入模型,产生一个预测结果,并用检测框标记出来。
首先,让模型进行一个预热,然后定义 dt,seen 两个变量,遍历 dataset ,整理图片信息;进行预测,根据 run 函数里面的置信度以及IOU参数,进行信息过滤;对检测框进行后续处理,画框选择,坐标映射(640*640坐标映射为原图坐标),是否保存绘画结果。

3.6 打印出一些输出信息

打印结果,记录了一些总共的耗时,以及信息保存。

本次进行了一些简短的分析,如果有帮助的话,点赞支持一下,后续有需要在进行其他文件程序。交流学习,互相进步~

YoLoV5学习(4)--detect.py程序(预测图片、视频、网络流)逐段讲解~相关推荐

  1. YOLOV5检测代码detect.py注释与解析

    YOLOv5代码注释版更新啦,注释的是最近的2021.07.14的版本,且注释更全 github: https://github.com/Laughing-q/yolov5_annotations Y ...

  2. uniapp做小程序的图片(视频)上传的组件封装

    最近在做小程序,最后想试试新不同的技术,所以选择了用uniapp做小程序. 要求实现多张图片的上传 ,可以限制图片上传的数量,图片预览,多次使用对图片的上传顺序排序 <template>& ...

  3. 魔改并封装 YoloV5 Version7 的 detect.py 成 API接口以供 python 程序使用

    文章目录 Introduction Section 1 起因 Section 2 魔改的思路 Section 3 代码 Part 1 参数部分 Part 2 识别 API Part 3 完整的 `De ...

  4. Python —— 解析Yolov5 - detect.py

    Yolov5自带detect.py加入cv2简单操作      说明:im0为mat的原图     detect.py参数解析      1.运行detect.py的两种方式:           ( ...

  5. yolov5的推理输出detect.py部分

    文章目录 前言 detect.py 1.输入参数 2.设置文件保存路径 3.加载训练好的模型权重 4.数据处理 5.进行推理 6.yolov5里的nms 总结 yolov5 系列 前言     推理阶 ...

  6. 小程序云开发——图片视频资源上传云端并返回云端路径

    在现在的应用中,包括小程序,图片视频等元素是产品必不可少的一部分.如果一个产品仅支持文字,将会很单调.有时候我们需要将图片视频上传到云端或者服务器.我这里将介绍在小程序中怎么上传图片和视频到云端,并返 ...

  7. 将yolov5的detect.py改写成可以供其他程序调用的方式,并实现低时延(<0.5s)直播推理

    将yolov5的推理代码改成可供其它程序调用的方式,并实现低时延(<0.5s)直播推理 yolov5的代码具有高度的模块化,对于初学者十分友好,但是如果咱们要做二次开发,想直接调用其中一些函数, ...

  8. YOLOv5的Tricks | 【Trick13】YOLOv5的detect.py脚本的解析与简化

    如有错误,恳请指出. 在之前介绍了一堆yolov5的训练技巧,train.py脚本也介绍得差不多了.之后还有detect和val两个脚本文件,还想把它们总结完. 在之前测试yolov5训练好的模型时, ...

  9. 爆改YOLOV7的detect.py制作成API接口供其他python程序调用(超低延时)

    一.前言 YOLO系列框架凭借其超高的运行流畅度和不俗的准确率,一直被广泛地应用到各个领域. 刚刚推出不久的YOLOV7在5 FPS到160 FPS范围内的速度和精度达到了新的高度,并在GPU V10 ...

最新文章

  1. 使用Windows的SHFileOperation外壳函数实现文件操作
  2. 9个用于构建容错系统的开源工具
  3. 第五届“达观杯”自然语言处理文本分类竞赛开启报名,丰厚奖金等你来战!...
  4. 最可怕的企业“内卷化”,是走入以下10个误区而不自知
  5. ubuntu16.04搞出百度的方法
  6. 网站如何进行渠道跟踪_网站前期要如何进行SEO优化?
  7. java stream 使用局部变量
  8. ArcMap 导入 wrl_ai文件导入c4d没反应怎么办? c4d导入ai源文件失败的原因分析_Illustrator教程_平面设计...
  9. Java集合类的整理
  10. Excel如何将数据填充完下方的空白单元格
  11. 安装torch与luarocks的一些问题
  12. cad图纸解析java_Java库以编程方式将AutoCAD .dwg文件转换为PDF或图像?
  13. html复制粘贴的文字自动换行,如何解决Word中粘贴网页上的文字自动换行的现象...
  14. 打篮球的妙处——让男人更帅,更有魅力
  15. 透视矩阵的推导(最直观、最深入、最还原,看完请点赞。)
  16. OLE、ActiceX、COM、DLL
  17. Chat Bot(聊天机器人)自动化测试脚本来解决人工测试的问题
  18. 计算促销最优组合方案
  19. 手写一个基于NIO的迷你版Tomcat
  20. ZEMAX | 照明设计的理论背景与概念

热门文章

  1. Lua 求表中元素的最大值和最小值
  2. 20155314 2016-2017-2 《Java程序设计》第4周学习总结
  3. 安装Win10 Ubuntu20.04双系统
  4. python web面试题部分汇总
  5. 不可战胜的苹果:全球最酷企业十大经验
  6. oracle12c生命周期,Oracle 12c 新特性之: ILM 数据生命周期管理
  7. 【MOOC】华中科技大学操作系统慕课答案-第1~3章单元测试
  8. 如何去除图片背景颜色?怎样将背景色变透明?
  9. iphone避坑指南
  10. 微信小程序通过微信群发消息(订阅消息)