admin管理员组

文章数量:1644030

点击上方码农的后花园”,选择星标” 公众号

精选文章,第一时间送达

今天在浏览器中闲逛,无意中发现,为了方便使用YOLO目标检测算法的快捷使用,有网友已经将其做成了Python的外接工具库,提交到了官方的索引库 pypi 上。

现在已经有关于YOLO的各个版本库都已经发布,这意味着我们可以直接使用 pip 一键进行安装,然后导入包,进行方法调用就可以了,真的是太方便了。就是没有源代码,不好进行模型修改和训练了。

不知不觉,YOLOv7都出来了,我记得前段时间美团刚出来YOLOv6,不知道怎么YOLOv7在今年2月份就横空出世,但是拒解释说:这里的7,不是下一代YOLO,而是一个幸运数字,姑且可以看作是一个代号。它的目的是让YOLO全面开花,不仅仅只是做目标检测。

YOLOv7论文相关源码地址:

https:// github/WongKinYiu/yolov7

GitHub - jinfagang/yolov7: 🔥🔥🔥🔥 YOLO with Transformers and Instance Segmentation, with TensorRT acceleration! 🔥🔥🔥

一键pip使用YOLOv7

1.创建虚拟环境和下载安装包

打开命令行,输入以下命令创建python的虚拟环境和相关安装包。

conda create -n yolov5 python=3.8 
conda activate yolov5 # 激活虚拟环境yolov5

一键pip安装yolov5,注意:python3.6版本以下的需要提前安装指定版本的 numpy 和 matplotlib,python 版本大于3.7,则可以直接使用 pip 安装。

2.yolov5模型检测detecet、训练trian、验证val和导出export

yolov5 库安装好后,同时会生成 yolov5 的命令行工具,其使用方法与源码中的 detect.py 非常类似。

使用yolov5进行检测detect

yolov5 detect --source 0  # webcam
                    file.jpg  # image
                    file.mp4  # video
                    path/  # directory
                    path/*.jpg  # glob
                    rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa  # rtsp stream
                    rtmp://192.168.1.105/live/test  # rtmp stream
                    http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8  # http stream

注意:cpu 的环境下,图片、视频检测都没问题,但是如果使用 gpu 的话,就会报错了,这可能是目前版本的 bug。目前 gpu 的支持还不够完善,像本地视频、网络视频( rtsp 协议)都不支持检测,

使用yolov5进行模型训练

yolov5 train --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64
                                    yolov5m                                40
                                    yolov5l                                24
                                    yolov5x                                16

另外关于 val 和 export 命令的使用,可以通过 --help 来查看其具体支持的参数,如:yolov5 export --help

3.使用yolov5完整检测示例

【不使用CUDA进行加速检测】:首先将官方提供的 yolov5s.pt 模型权重weights下载下来,然后执行下面的脚本。

# 导入模块
import yolov5

# 载入模型
model = yolov5.load('yolov5s.pt')

# 待检测的图片
img = 'https://github/ultralytics/yolov5/raw/master/data/images/zidane.jpg'

# 推理,默认参数
# results = model(img)

# 使用特定尺寸进行推理
# results = model(img, size=1280)

# 数据增强,能够检测出更多的目标,当然也有可能出现误检
results = model(img, augment=True)

# 检测结果数据解析,所属类别、置信度、目标位置信息
predictions = results.pred[0]
boxes = predictions[:, :4] # x1, x2, y1, y2
scores = predictions[:, 4]
categories = predictions[:, 5]

# 显示检测结果
results.show()

# 保存检测结果图片
results.save(save_dir='results/')

检测结果如下所示:

【使用CUDA进行加速检测】: 使用cuda进行加速检测,需要提前下载安装 gpu版本的 pytorch,和原版一样,通过指定参数device来指定cuda加速。

from yolov5 import YOLOv5

# 模型路径
model_path = 'yolov5s.pt'

# 指定参数cuda进行加速
device = "cuda" # or "cpu"

# 模型初始化
yolov5 = YOLOv5(model_path, device)

# 待检测图片
image = 'https://github/ultralytics/yolov5/raw/master/data/images/zidane.jpg'

# 推理,默认参数
results = yolov5.predict(image)

# 使用特定尺寸进行推理
results = yolov5.predict(image, size=1280)

# 数据增强,能够检测出更多的目标,当然也有可能出现误检
# results = yolov5.predict(image, augment=True)

# 多个参数一起使用
# results = yolov5.predict(image, size=1280, augment=True)

# 如果需要检测多张图片的话,可以使用列表
# results = yolov5.predict([image1, image2], size=1280, augment=True)

# 检测结果数据解析,所属类别、置信度、目标位置信息
predictions = results.pred[0]
boxes = predictions[:, :4] # x1, x2, y1, y2
scores = predictions[:, 4]
categories = predictions[:, 5]

# 显示检测结果
results.show()

# 保存检测结果
results.save(save_dir='results/')

Reference: https://zhuanlan.zhihu/p/410743156

精彩推荐:

YOLOv6更快一步,制作自己的数据集训练YOLOv6模型保姆级教程

Yolov3算法实现社交距离安全检测项目讲解和实战(Social Distance Detector)

万字长文,用代码的思想讲解Yolo3算法实现原理,Visdrone数据集和自己制作数据集两种方式在Pytorch训练Yolo模型

本文标签: 都能一键算法目标系列