Content
1. 前言
YOLOv5 🚀 是世界上最受欢迎的视觉 AI,代表 Ultralytics 对未来视觉 AI 方法的开源研究,结合了经过数千小时的研究和开发而形成的经验教训和最佳实践。
2. 使用yolov5训练自己数据集的基本流程
- 给自己的电脑安装CUDA和CuDNN,参考:详解 Windows 10 安装 CUDA 和 CUDNN
- 使用合适的工具制作一个符合yolov5需求的数据集,可使用LabelImg进行制作,参考:Windows系统中数据标注软件LabelImg的安装和基本使用
- 从GitHub上面克隆或者下载Ultralytics的yolov5代码:https://github.com/ultralytics/yolov5
- 配置yolov5代码运行的Python环境。
- 使用yolov5训练自己的数据集,包括:
- 编写自己数据集yaml配置文件
- 选择一个合适的yolov5模型
- 调用train.py进行训练,主要包括以下两种方式:
- 直接修改train.py中的参数,然后运行train.py文件
- 通过命令行代码运行train.py文件,并传入相关参数。
下面yolov5使用参考假设你已经给自己的电脑安装好CUDA和CuDNN,并且也已经制作完成了一个符合yolov5要求的自定义数据集。
3. 下载yolov5代码
git clone https://github.com/ultralytics/yolov5
4. 配置YOLOv5运行环境
- Anaconda创建一个Python虚拟环境,建议直接命名
yolov5
conda create --name yolov5 python=3.9
- 优先安装PyTorch,在安装requirements需要的第三方库(PyTorch官网:https://pytorch.org/)
需要安装不同版本的PyTorch指令参考:https://pytorch.org/get-started/previous-versions/
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
- pip安装requirements.txt。
pip install -r requirements.txt
5. 准备自己的目标检测数据集
YOLOv5支持多种数据集目录组织结构:1.1) directory: path/images/
2.2) file: path/images.txt
3.3) list: [path1/images/, path2/images/]
。不同的组织方式也对应了下面数据集yaml
文件的配置方式。
- 方式1:
数据集图片和标签置于同一个文件夹下:./train/images/
、../train/labels/
、./val/images/
、./val/images/
。 - 方式2(推荐👍👍):
数据集和训练集的标签置于不同的文件夹下:./images/train/
、./images/val/
、./labels/train/
、./labels/val/
。
6. 训练自己的数据集
6.1 数据集YAML文件的配置
采用5中方式2的数据集组织方式配置自己的数据集yaml文件,例如:coco28.yaml。注意此处的配置文件应该和下面6.2中的训练命令–data参数值匹配。
path: ../datasets/coco128 # 数据及根目录
train: images/train2017 # 训练集图片地址 (相对于'path')
val: images/train2017 # 验证集图片地址 (相对于'path')
test: # 测试集图片地址 (可选)
# 数据集标签类别,有多少就写多少
names:
0: person
1: bicycle
# 数据集下载脚本或者URL (可选,不填即可)
download:
6.2 命令行训练
执行下述命令即可训练自己的数据集了,训练所需的其他参数参考6.3。
python train.py --data coco128.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128
6.3 训练脚本train.py命令行参数说明
参数 | 说明 | 参数 | 说明 |
---|---|---|---|
–weights | 预训练权重文件的存储地址 | –cfg | 模型yaml配置文件地址 |
–data | 数据集配置yaml文件地址 | –hyp | 训练网络的一些超参数设置(一般用不到) |
–epochs | 训练轮数 | –batch-size | 训练时batch的大小 |
–imgsz | 输入图片的尺寸,一般为640 | –rect | 是否采用矩形训练 |
–resume | 指定之前训练的网络模型,并继续训练这个模型 | –nosave | 是否只保留最后一次的网络模型 |
–noval | 是否只在最后一次进行测试 | –noautoanchor | 是否采用自动锚框 |
–noplots | 是否不绘制训练结果 | –evolve | 是否自动进化寻找最优参数 |
–bucket | 是否上传到谷歌云盘,方便下载 | –cache | 是否对图片进行缓存,可以加快训练 |
–image-weights | 对训练不太好的图片增加权重 | –device | 训练采用的设备 |
–multi-scale | 训练过程中对图片进行尺度变换 | –single-cls | 训练数据集是单类别还是多类别 |
–optimizer | 优化器,默认SGD | –sync-bn | 多 GPU 进行分布式训练 |
–workers | 最大的数据加载器数 | –project | 训练结果存储的根目录 |
–name | 每一次训练结果存储目录 | –exist-ok | 是否不采用递增文件夹的存储方式 |
–quad | quad数据加载器 | –cos-lr | cos学习率 |
–label-smoothing | 标签平滑值,默认0.0 | –patience | 训练结果没有改善情况下继续训练的最大轮数 |
–freeze | 冻结训练层数 | –save-period | 保存间隔 |
–seed | 全局训练随机种子 | –local_rank | 自动DDP多GPU参数(没有特殊情况,请勿修改!!!) |
注意:
- –cfg参数用于完全随机初始化开始训练,需要–weights为空,例如:–weights ‘’ --cfg yolov5s.yaml
- –name参数是相对于–project参数的
以上就是Windows系统的电脑端“详解YOLOv5训练自己的目标检测数据集!”的全部操作。“收集、整理、实测”不易,读者老爷若觉得有用,请点赞
👍、收藏
⭐️,谢谢支持!❤️❤️