做橡胶应该看什么网站,网站建设制作需要多少钱,新手要如何让网站被收录,友汇网站建设文章目录 1、标注数据1.1、标注1.2、生成训练列表文件train.txt1.3、转换数据标注格式 2、训练数据整理2.1、修改train.txt路径2.2、修改yolov3.cfg2.3、obj.name和obj.data2.4、训练脚本文件trian.sh2.5、测试脚本文件test.sh 3、训练 本文对应的脚本文件和程序下载链接 darke… 文章目录 1、标注数据1.1、标注1.2、生成训练列表文件train.txt1.3、转换数据标注格式 2、训练数据整理2.1、修改train.txt路径2.2、修改yolov3.cfg2.3、obj.name和obj.data2.4、训练脚本文件trian.sh2.5、测试脚本文件test.sh 3、训练 本文对应的脚本文件和程序下载链接 darkent yolo自定义数据标注训练全流程说明示例也可发私信获取。
1、标注数据
使用labelImg.exe工具对数据进行标注默认使用voc的数据集格式之后使用脚本转换为yolo专用的数据格式并且生成一些训练依赖的准备数据。
准备工作:
1执行脚本 0——清理train文件下的img、xml、txt文件文件 将上次训练的所有数据删除需要的话进行备份2复制训练图片到 train/JPEGImages 目录下 图片过大建议等比缩放到1080以下
exe和train的目录结构
1.1、标注
使用脚本 1——LabelImg.cmd 打开工具 按钮 Open Dir 选择待标注的图片数据目录 这里为 to_path/train/JPEGImages 按钮 Change Save Dir选择存放标注文件xml目录to_path/train/Annotations
加载图片之后点击 Edit label按钮 标注目标的类别标签 按键 a 、d 切换图片 按键 w 开始绘制标准框 ctrls 保存当前标注图片数据。
详细参考互联网内容搜索 yolov3标注自定义数据。标注完成后目录下train/Annotations会得到每一张图片对应的的xml标注文件
1.2、生成训练列表文件train.txt
训练需要给出所有图片的绝对地址这里注意标注机器可能和后期训练不在一个机器路径会变化后期根据实际路径进行批量修改替换。
执行脚本 2——Label_generate_traintxt.cmd 即可会在当前目录生成train.txt文件。如下 红框目录可能变化可以通过修改脚本的参数自动生成
1.3、转换数据标注格式
先修改脚本文件 exe/label_conver_voc_2_yolo.py 中的classes 列表为标注工具中的标签名例如有4个标签 carhuocheguache和keche那么将之前行用#注释修改如下图。
修改后保存之后执行脚本 3——Label_conver_voc_2_yolo.cmd 之后可以在目录 train\labels看到txt格式的标注文件 格式为 标签序号 x y w h 这里标签序号从0开始值为python脚本中 classes 列表的下标位置为相对图像宽高尺寸的百分比例。
这里实际是通过标注文件目录下train/Annotations的xml文件转换得到一一对应txt,xml图片都要一一对应。 可能出现的问题 LabelImage.exe标注得到的xml文件中图像宽高尺寸为0导致txt转换错误训练时报错。脚本使用PIL库增加验证修复环节保证转换正确无误。 提示标签不存在因为标注时lable输入错误和脚本中的classes列表元素不一致 2、训练数据整理
在训练机器上的训练工具目录darknet下拷贝标注文件目录train和列表文件train.txt到新建训练目录如data-vehicle-0926-772这里的目录结构如下
2.1、修改train.txt路径
修改图片列表文件路径的真实路径前面 1.2、 生成训练列表文件train.txt 已经说明。注意要换行格式要求unix、utf8格否可能在训练出错、但会提示STB类似错误。
2.2、修改yolov3.cfg
从darknet目录复制一份原始yolov3.cfg文件到当前训练目录。修改地方有两快 1 修改网络结构参数 找到cfg文件中的 所有[yolo]标签段共3个修改红框中的数据 classes修改为标注时的类别数量例如4类filters修改 (类别数5)*3这里就修改为(45)*3 27。后期其他类别对应修改即可 注意一共是修改3组数据。 2 修改训练参数 这里参数比较专业在大量数据训练时需要不断调参设计。当前我们使用默认设计。训练时使用 batch64, subdivision16如果机器GPU性能好显存足够可以将subdivision降低为8、4、2等3090可以修改为2。
2.3、obj.name和obj.data
照着修改即可
2.4、训练脚本文件trian.sh
脚本内容为
cd ..
./darknet detector train data-vehicle-0926-772/obj.data data-vehicle-0926-772/yolov3.cfg /yolov3.cfg darknet53.conv.74 -i 0 -clear例如机器上已有的脚本文件为
2.5、测试脚本文件test.sh
训练完成后进行使用训练的指定模型文件对图片进行测试并生成结果图片。 例如在服务器的darknet目录下执行
./darknet detector test car-0612-400/obj.data car-0612-400/yolov3-tiny.cfg car-0612-400/weights/yolov3-tiny_best.weights -i 0 -thresh 0.25 ./car-0612-400/train/JPEGImages/11.jpg -ext_output控制台会打印检测的结果运行完成后会生成一个 predictions.jpg 的文件
3、训练
在训练数据目录下执行train.sh训练脚本即可根据控制台训练数据输入检查是否存在错误进行针对性调整。 正式训练时后台执行使用 命令 nohup train.sh 即可 生成nohup.out 的训练日志。 训练中间的输出关注中间的 avg loss直观上一般越低越好。 后面可以使用脚本drawLossPlot.py绘制losstrain曲线