Yolov5训练

1.提取coco数据集的行人数据(单类)

(1) 下载数据集

可以在官网上下载

https://cocodataset.org/#download

可以直接下载(直接有txt格式的用于训练的labels)

https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip

具体数据集下载网址在data文件夹的.yaml文件里面有

数据集设置文件

(2)json文件转xml文件(json2xml.py)(从官网下载的数据集的标签是json格式的)

需要自己改的部分:savepath、img_dir、anno_dir、classes_names、dataDir

最终效果是分别提取数据集train和val里面包括人的图片存到新的train和val的文件夹里面

有个缺点是annotations没有分类存到分别对应的val和train文件夹里面,存到了同一个文件夹,所以还需要后面分开的操作

(3) xml文件转txt文件(xml2txt.py)

(4) 把txt文件分成两个文件夹(copy.py),对应train和val的图片名称

数据集和代码的文件夹要并列放在同一个目录下

文件位置


2.改配置文件

(1)修改./data文件夹中的yaml文件(train.py中的data参数对应的文件)

新建一个yaml文件,这里命名为pedestrain.yaml,里面的内容为用于训练和测试的图片的路径、 nc值(有几类)、类别名

(2)修改./models文件夹中的yaml文件(train.py中的cfg参数对应的文件)

这里用到的是yolov5s,所以改yolov5s.yaml,只需要改nc参数即可(这里改为1)

3.训练

可以直接在train.py中修改参数,包括:

--weights 初始模型.pth(预训练模型)的位置,这里用的是yolov5s,官网获取

--cfg 修改后的yolov5s.yaml的位置 “./models/yolov5s.yaml”

--data 新建的pedestrain.yaml的位置 “./data/pedestrain.yaml”

--epochs 一般取50-200,过小欠拟合,过大过拟合

--batch-size 根据计算机的性能选择,memory不够就调小一点

然后开始训练:

python train.py

一些解释(摘抄自 https://www.it610.com/article/1283375016167096320.htm)

epochs:指的就是训练过程中整个数据集将被迭代多少次,显卡不行你就调小点。

batch-size:一次看完多少张图片才进行权重更新,梯度下降的mini-batch,显卡不行你就调小点。

cfg:存储模型结构的配置文件

data:存储训练、测试数据的文件

img-size:输入图片宽高,显卡不行你就调小点。

rect:进行矩形训练

resume:恢复最近保存的模型开始训练

nosave:仅保存最终checkpoint

notest:仅测试最后的epoch

evolve:进化超参数

bucket:gsutil bucket

cache-images:缓存图像以加快训练速度

weights:权重文件路径

name: 重命名results.txt to results_name.txt

device:cuda device, i.e. 0 or 0,1,2,3 or cpu

adam:使用adam优化

multi-scale:多尺度训练,img-size +/- 50%

single-cls:单类别的训练集


训练得到的权重会保存在runs/train/exp/weights文件夹下,有last.pt和best.py,一般使用best.py。还包括了训练过程中的其他信息。

如果不想花时间训练,可以直接通过链接下载已经训练好的权重:

https://download.csdn.net/download/weixin_52415611/14925850

其中包括了epochs为25、35、50、100、200时的五个权重。

4.使用权重

只需要将所需要使用的权重放置在与detect.py的同一目录下,将权重的default改为需要使用的权重即可。

你可能感兴趣的:(Yolov5训练)