点击上方“码农的后花园”,选择“星标” 公众号
精选文章,第一时间送达
今天在浏览器中闲逛,无意中发现,为了方便使用YOLO目标检测算法的快捷使用,有网友已经将其做成了Python的外接工具库,提交到了官方的索引库 pypi 上。
现在已经有关于YOLO的各个版本库都已经发布,这意味着我们可以直接使用 pip 一键进行安装,然后导入包,进行方法调用就可以了,真的是太方便了。就是没有源代码,不好进行模型修改和训练了。
不知不觉,YOLOv7都出来了,我记得前段时间美团刚出来YOLOv6,不知道怎么YOLOv7在今年2月份就横空出世,但是拒解释说:这里的7,不是下一代YOLO,而是一个幸运数字,姑且可以看作是一个代号。它的目的是让YOLO全面开花,不仅仅只是做目标检测。
YOLOv7论文相关源码地址:
https:// github.com/WongKinYiu/yolov7
GitHub - jinfagang/yolov7: YOLO with Transformers and Instance Segmentation, with TensorRT acceleration!
打开命令行,输入以下命令创建python的虚拟环境和相关安装包。
conda create -n yolov5 python=3.8
conda activate yolov5 # 激活虚拟环境yolov5
一键pip安装yolov5,注意:python3.6版本以下的需要提前安装指定版本的 numpy 和 matplotlib,python 版本大于3.7,则可以直接使用 pip 安装。
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
【不使用CUDA进行加速检测】:首先将官方提供的 yolov5s.pt 模型权重weights下载下来,然后执行下面的脚本。
# 导入模块
import yolov5
# 载入模型
model = yolov5.load('yolov5s.pt')
# 待检测的图片
img = 'https://github.com/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.com/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.com/p/410743156
精彩推荐:
YOLOv6更快一步,制作自己的数据集训练YOLOv6模型保姆级教程
Yolov3算法实现社交距离安全检测项目讲解和实战(Social Distance Detector)
万字长文,用代码的思想讲解Yolo3算法实现原理,Visdrone数据集和自己制作数据集两种方式在Pytorch训练Yolo模型