yolov5
YOLOv5
是一种流行的目标检测算法,属于 YOLO(You Only Look Once)
系列的第五代版本。
YOLO
算法以其快速和高效而闻名,在实时目标检测任务中表现出色。
关键特点:
快速检测:YOLOv5
能够实现快速的目标检测,适合需要实时处理的应用场景
单阶段检测器:与两阶段检测器(如 Faster R-CNN
)不同,YOLO
算法采用单阶段检测方法,直接在图像上预测边界框和类别概率
锚框:YOLOv5
使用锚框(anchor boxes
)来预测目标的边界框,锚框是在训练过程中学习得到的,用于提高检测的准确性
损失函数: YOLOv5
对损失函数进行了优化,包括对象存在性、边界框坐标和类别概率的损失。
自适应锚框:YOLOv5
引入了自适应锚框的机制,可以根据不同的数据集自动调整锚框的大小和比例。
数据增强:YOLOv5
在训练过程中使用了多种数据增强技术,增强模型的泛化能力。
多尺度预测:YOLOv5
支持多尺度预测,可以检测不同大小的目标。
易于部署:YOLOv5
模型通常比较轻量化,易于在各种平台上部署,包括服务器、移动设备和嵌入式设备。
安装
github: github.com/ultralytics…
首先本地需要安装 python
环境,最好 python
版本不要超过 3.10
下载
--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
git clone https://github.com/ultralytics/yolov5
配置环境
在 pycharm
中打开项目
项目->设置->选择 python
解释器
打开控制台,安装依赖
--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
pip install -r requirements.txt
数据标注
数据标注是训练模型的关键步骤之一,而 LabelImg
是一个常用且功能强大的图像标注工具,支持多种目标检测数据集格式,如 PASCAL VOC
和 COCO
等
安装 LabelImg
--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
pip install labelimg
打开 LabelImg
--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
# 在命令行中输入labelimg即可打开 labelimg
开始标注
点击
标注错误
在开始标注的时候,拉不了框,一拉就闪退了,错误提示如下图:
通过错误提示发现是数据类型错误,由于我测试用的 python3.10
对类型有些要求,所以提示这个错误。
解决办法:降低 python
版本,如用 python 3.9
再试下
更换版本后,重新标注:
保存标注
模型训练
在进行模型训练的时候,需要把上面标注的数据整理归类
数据归类格式如下:
新建一个 dateaset
文件夹,用于存放数据集。
head3
为标注的标签,文件 00001.jpg
为训练的图片,00001.txt
为标注数据,需要一一对应。
添加配置项
在 yolov5/data
文件夹下新建 head3.yaml
内容如下所示:
--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path: E:\project-py\yolov5\dataset\head # dataset root dir train: images/train # train images (relative to 'path') val: images/val # val images (relative to 'path') test: # test images (optional) # Classes nc: 1 # number of classes names: ["head"] # class names
其中:
path:数据集的根目录
train:训练集与 path
的相对路径
val:验证集与 path
的相对路径
nc:类别数量,因为这个数据集只有一个类别(fire)
,nc
即为1。
names:类别名字。
下载预训练模型
现在,我们准备好了数据,接下来,下载好预训练模型:
预训练模型地址:github.com/ultralytics…
选择你所需要的模型下载即可,这里我选择 yolov5s.pt
下载
模型下载完成后,将 xx.pt
复制在 yolov5
文件夹下。如下图所示:
开始训练
打开运行调试菜单,选择编辑或者新增:
添加运行参数:
--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
--weights yolov5s.pt --data data/fire.yaml --workers 1 --batch-size 8
点击运行,至此,模型则开始训练
模型测试
模型训练完成后,将 runs/exp/weights
下的模型(best.pt
)复制在 yolov5
文件夹下。如下图所示:
开始测试
--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
python detect.py --weights best.pt --source ../datasets/head3/images/val
其中参数:
weights
:是你训练好的模型的路径
source
:是你测试的数据路径
测试结果保存在 runs/detect
下
总结
YOLOv5
是一种先进的目标检测算法,属于 YOLO
(You Only Look Once
)系列的第五代。
它继承了 YOLO
系列算法的快速和高效的特点,并且在性能上进行了显著提升。
YOLOv5
的成功在于其速度和准确性的平衡,使其成为许多实时目标检测任务的首选算法。
随着计算机视觉领域的不断发展,YOLOv5
及其后续版本将继续在目标检测技术中扮演重要角色