(1)数据标注
安装labelImg,数据标注, 保存为YOLO (.txt)格式
pip install labelImg
注意: 标注了一部分数据集,关闭软件后,随后又打开labelimg, 之前的classes.txt 会消失。解决办法如下:
1. 找到如下路径,打开labelImg.py
2. 在 大约114行初,添加以下代码,把之前的classes.txt的路径(绝对路径),写到代码中。
default_prefdef_class_file='path/to/classes.txt' #写classes.txt的路径
self.load_predefined_classes(default_prefdef_class_file)
(2)数据集划分格式 重要!!!
建立一个Data文件夹,子文件包括:train val ,train 文件夹包括: images, labels, val 文件夹包括 images,labels。 划分比例为 0.8 0.2 ,0.7 0.3
(3)从github/gitee上下载 yolov5安装包, 注意有不同的版本,老版本会有各种问题,建议下载较新的版本。
https://github.com/ultralytics/yolov5
安装yolov5的依赖包,如下:
conda create -n yolov5 python==3.9 #创建虚拟环境
conda activate yolov5 #激活虚拟环境
pip install -r requirements.txt #安装yolov5的依赖包
(4)在yolov5/data文件中, 找到coco128.yaml ,复制一份,重命名data.yaml,这里面可以指定自定义数据集路径。打开进行以下修改:
path: ./data #自定义数据集data的路径
train: train # data/train 文件夹的 相对路径
val: val #data/val 文件夹的 相对路径
nc: 5 # number of classes 类别数据
names: ['normal', 'rot', 'special-shaped', 'special-shaped_rot','stem'] ##类别名称
(5) 测试yolov5是否可以正常跑通
运行以下命令,结果会保存到runs/exp下。 代码能跑通,测试就通过。
python detect.py --source path/to/video.mp4 # 测试视频
python detect.py --source path/to/bus.jpg #测试图片
python detect.py --source 0 #测试摄像头
(6) 修改 models/yolov5s.yaml 中的nc ,自定义数据集的类别。
(7) 训练自己的数据集
1 . 打开train.py 进行修改
--weights 使用预训练权重,
--cfg 模型的选择(不使用预训练权重)
--data 上述第4点的data.yaml (数据集路径)
--epochs 训练轮数
-- imgsz 图片尺寸大小, 640/320
2. 命令行指定参数
python train.py --weights path/to/yolov5s.pt --cfg data/data.yaml --epochs 100 --imgsz 640