坚持写博客,分享自己的在学习、工作中的所得
- 给自己做备忘
- 对知识点记录、总结,加深理解
- 给有需要的人一些帮助,少踩一个坑,多走几步路
尽量以合适的方式排版,图文兼有
如果写的有误,或者有不理解的,均可在评论区留言
如果内容对你有帮助,欢迎点赞 收藏 ⭐留言 。
虽然平台并不会有任何奖励,但是我会很开心,可以让我保持写博客的热情
时间:2021年11月3日16:53:47
版本:当前代码的release版本为v6.0
命令:git clone -b v6.0 https://github.com/ultralytics/yolov5.git
注意:v6.0使用wandb会有问题,这个bug目前已经修复 5308
数据集配置文件:data\coco.yaml
目前已经实现的公开数据集有9个,如果是使用公开数据集的配置文件,训练公开数据集,按照文件的配置,会把公开数据集下载到代码父级目录下的datasets文件夹下
以COCO数据集为例,文件结构为:
# data\coco.yaml
parent
├── yolov5
└── datasets
└── coco ← downloads here
在COCO数据集的配置文件中有以下参数:
path: …/datasets/coco # dataset root dir
这是数据集的路径,相对于代码的根目录;如果没有这个参数,则默认当前路径,也就是代码根目录;
使用path
的路径与后面的train
、val
、test
的路径或文件或文件名进行拼接,得到对应路径
# train.py
# Parse yaml
path = extract_dir or Path(data.get('path') or '') # optional 'path' default to '.'
for k in 'train', 'val', 'test':
if data.get(k): # prepend path
data[k] = str(path / data[k]) if isinstance(data[k], str) else [str(path / x) for x in data[k]]
train: train2017.txt # train images (relative to ‘path’) 118287 images
这是训练集,路径相对于前面的path
,这里不能为绝对路径,因为代码(utils\general.py中的check_dataset函数)中会将路径进行拼接;文件中每一行存储训练集中的一张图片的路径;
.txt中的路径需要有/images/
,因为datasets.py
中的img2label_paths()
会自动将images
替换为labels
。
额外数据集或者增强的数据可以单独放在一个文件夹,换行,缩进,加-
(参考data\GlobalWheat2020.yaml
),具体代码:utils\general.py
中的check_dataset()
即:
train:
- train1.txt
- train2.txt
- train3.txt
val: val2017.txt # train images (relative to ‘path’) 5000 images
这是验证集,参考train
;
test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794
这是测试集,参考train
;
nc: 80 # number of classes
类别数,这个参数必须要有,否则将报错;
names: [‘person’, …, ‘toothbrush’] # class names
类别名称,按照索引与标注数据对应;如果没有这个参数,则会根据参数nc
自动命名类别名对class_i
,i为索引;
如果训练的命令设置了--single-cls
,那么nc
会被设置为1,同时names
如果提供了不止一个类别名,那么类别名将被设置为item
# train.py
names = ['item'] if single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names
download: …
下载数据集的代码或命令行。如果是使用自己的数据集,不需要下载的话,需要把这个参数去掉。
如果内容对你有帮助,或者觉得写的不错
️欢迎点赞 收藏 ⭐留言
有问题,请在评论区留言