小白也能使用yolov5训练自己的数据集实现目标检测
小白也能使用yolov5训练自己的数据集实现目标检测
YOLOv5是目前最流行的目标检测框架之一,具有速度快、精度高、部署便捷等特点。本文将从零开始,详细讲解如何使用YOLOv5训练自己的数据集实现目标检测。本文适合深度学习初学者,将带领你完成从环境配置到模型训练和测试的完整流程。
0.yolov5的简单介绍
YOLOv5是一种实时目标检测算法,其核心工作原理包括以下几个方面:
网络架构:
- Backbone: 使用CSPDarknet进行特征提取
- Neck: 使用PANet进行特征融合
- Head: 用于预测目标的类别、位置和置信度
预测流程:
- 将输入图像分割成 SxS 网格
- 每个网格预测多个边界框
- 每个边界框包含:
- 中心点坐标(x,y)
- 宽高(w,h)
- 置信度分数
- 类别概率
YOLOv5的优势:
- 速度快:实时检测能力强
- 精度高:在各种数据集上表现优异
- 部署便捷:支持多种推理框架
- 使用简单:配置和训练流程清晰
- 代码开源:社区支持度高
1.下载yolov5资源
项目地址:https://github.com/ultralytics/yolov5/tree/v5.0
在GitHub中的项目ultralytics/yolov5中,有很多标签,如下图所示:
建议使用以下命令下载资源:
git clone https://github.com/ultralytics/yolov5.git
下载完成后,需要切换到v5.0版本:
git checkout v5.0
2.训练数据集的介绍
下载好之后的文件分布如下:
在data文件夹中,我们主要关注coco128.yaml这个数据集配置文件。这个数据集配置方式比较简单,适合小白理解。
# COCO 2017 dataset http://cocodataset.org - first 128 training images
# Train command: python train.py --data coco128.yaml
# Default dataset location is next to /yolov5:
# /parent_folder
# /coco128
# /yolov5
download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../coco128/images/train2017/ # 128 images
val: ../coco128/images/train2017/ # 128 images
# number of classes
nc: 80
# class names
names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
'hair drier', 'toothbrush' ]
3.如何配置文件
首先,使用coco128的数据集进行训练,按照上面的地址,直接下载,然后解压,放在yolov5的目录下。
然后,修改coco128.yaml:
- 将download注释掉,因为我们已经自己下载好了
- 修改后面的路径
4.下载各种依赖和环境
需要安装anaconda,创建虚拟环境:
conda create -n yolov5 python=3.8
conda activate yolov5
pip install -r requirements.txt
5.训练yolov5模型
找到train.py文件,修改里面的超参数:
- 将cfg参数配置为yolov5s.yaml
- 将weights参数配置为yolov5s.pt
yolov5的训练权重,可以在下面的链接里下载:
https://github.com/ultralytics/yolov5/releases
进入上面的页面,找到v5.0的标题,然后点击Assets这个小选项,点开后选择yolov5s.pt下载,然后将下载好的模型放到我们自己的yolov5的目录下。
然后可以直接运行下面的命令:
python train.py
可能会遇到以下报错:
- numpy版本太高:可以通过
pip install numpy==1.22
解决 - pytorch版本太高:可以通过修改代码或降低torch版本解决
6.测试yolov5模型
找到test.py,然后修改超参数,运行python test.py就可以对刚才的模型进行测试。
7.使用yolov5模型进行目标检测
找到detect.py文件,修改超参数,然后运行python detect.py,在run/detect中找到监测结果。
8.训练自己的数据集
提供了一份关于奶牛的stand和lie两种行为识别的数据集:
链接: https://pan.baidu.com/s/1azXUz70pK8BxNzpSIXlsIw?pwd=1111 提取码: 1111
下面是cow_detect的文件分布:
将cow_detect这个文件夹放在这个yolov5的目录下。
配置步骤:
- 将data中的coco128.yaml文件复制一份,命名为cow_detect.yaml
- 修改里面的参数
- 将models中yolov5s.yaml也复制一份,命名为yolov5_cowdetect.yaml,然后将里面的nc修改成2
- 修改train.py、test.py和detect.py中的超参数
可以得到这样的结果: