我参加 NVIDIA Sky Hackathon---Yolov5环境配置

Yolov5 环境配置完成后配置练习文件以及练习数据注意事项

参考https://blog.csdn.net/qq_36756866/article/details/109111065

1)准备自己的数据集

  1. yolov5目录下创建 yolo_1文件夹(名字可以自定义),目录结构如下,将之前labelImg标注好的xml文件和图片放到对应目录下 yolo_1

…images # 存放图片

…Annotations # 存放图片对应的xml文件

…ImageSets/Main #之后会在Main文件夹内自动生成train.txtval.txttest.txttrainval.txt四个文件,存放训练集、验证集、测试集图片的名字(无后缀.jpg

示例如下:

如果生成的是xml文件是以下的步骤(txt生成的在下面

开始{

 yolo_1文件夹下内容如下:

 

Annotations文件夹下面为xml文件(标注工具采用labelImage),内容如下:

images为VOC数据集格式中的JPEGImages,内容如下:

 

 

脚本内容在

脚本功能:ImageSets文件夹下面有个Main子文件夹,其下面存放训练集、验证集、测试集的划分,通过脚本生成,可以创建randomfile_xmlstep1一个文件

运行代码后,在Main文件夹下生成下面四个txt文档:

 

2.接下来准备labels,把数据集格式转换成yolo_txt格式,即将每个xml标注提取bbox信息为txt格式(这种数据集格式成为yolo_txt格式),每个图像对应一个txt文件,文件每一行为一个目标的信息,包括class, x_center, y_center, width, height格式。格式如下:

 

创建labels

创建 脚本,将训练集、验证集、测试集生成label标签(训练中要用到),同时将数据集路径导入txt文件中

运行后会生成如下laels文件夹和三个包含数据集的txt文件,其中labels中为不同图像的标注文件,train.txttxt文件为划分后图像所在位置的绝对路径,如train.txt就含有所有训练集图像的绝对路径。

运行voc_label.py时报错“ZeroDivisionError: float division by zero”的原因是:标注文件中存在width0或者height0的数据,检查修改后可解决。

 

三个txt文件里面的内容如下:

 

}结束

如果生成的是txt文件是以下的步骤

开始{

运行生成ImageSets内容的脚本

 

 

脚本内容在

脚本功能:ImageSets文件夹下面有个Main子文件夹,其下面存放训练集、验证集、测试集的划分,通过脚本生成,可以创建randomfile_xmlstep1一个文件

运行代码后,在Main文件夹下生成下面四个txt文档:

 

2.接下来准备labels,把数据集格式转换成yolo_txt格式,即将每个xml标注提取bbox信息为txt格式(这种数据集格式成为yolo_txt格式),每个图像对应一个txt文件,文件每一行为一个目标的信息,包括class, x_center, y_center, width, height格式。格式如下:

 

创建labels

创建 脚本,将训练集、验证集、测试集生成label标签(训练中要用到),同时将数据集路径导入txt文件中

运行后会生成如下labels文件夹和三个包含数据集的txt文件,其中labels中为不同图像的标注文件,train.txttxt文件为划分后图像所在位置的绝对路径,如train.txt就含有所有训练集图像的绝对路径。

运行voc_label.py时报错“ZeroDivisionError: float division by zero”的原因是:标注文件中存在width0或者height0的数据,检查修改后可解决。

三个txt文件里面的内容如下:

 

}结束 调用脚本的时候需要更改其中的相关路径

3配置文件

1)数据集的配置

yolov5目录下的data文件夹下新建一个ab.yaml文件(可以自定义命名),用来存放训练集和验证集的划分文件(train.txtval.txt),这两个文件是通过运行voc_label.py代码生成的,然后是目标的类别数目和具体类别列表

疑问:ab.yaml文件中trainval通过train.txtval.txt指定,我在训练时报错会提示datasets文件找不到 说明路径设置的不对 脚本生成的文本路径也会影响

2)模型训练

源码中在yolov5目录下的weights文件夹下提供了下载四种预训练模型的脚本----download_weights.sh

2.训练

在train.py进行以下几个修改:

 

 

以上参数解释如下:

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:单类别的训练集

之后运行训练命令如下:

python train_1.py --img 640 --batch 8 --epochs 300 --data data/ab.yaml --weights yolov5x.pt

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值