YOLO3 Windows训练自己的数据集

下载VOCdevkit置于darknet-master\build\darknet\x64目录下

1.xml放Annotations img放JPEGImages
2.cd到VOCdevkit\VOC2007 运行
python test.py
在C:\darknet-master\VOCdevkit\VOC2007\ImageSets\Main生成train.txt test.txt val.txt(所有图像名字的序号)
3.cd到VOCdevkit同一目录下 运行

修改voc_label.py中的sets年份
修改voc_label.py中的classes名字
python voc_label.py

结果1.生成图像的绝对路径 2007_train.txt 2007_test.txt 2007_val.txt(所有图像的绝对路径)放到C:\darknet-master\build\darknet\x64\data
结果2.生成txt标签文件,在labels下

修改cfg/voc.data中的classes数目  voc.data中指定了train.txt test.txt路径  voc.name路径 训练结果保存路径
修改data/voc.name中的类别名字
修改cfg/yolov3-voc.cfg中的
[net]
# Testing
# batch=1        #这里的batch跟subdivisions原来不是注释掉的,但是训练后没成功,有的blog上说为1的时候太小难以收敛,但是不知道下面训练模式的 batch=64 subdivisions=8 会不会覆盖掉,总之注释掉后就成功了,不过这个脚本不是很明白,还来不及验证 
# subdivisions=1
# Training
 batch=64            
 subdivisions=8    
......
[convolutional]
size=1
stride=1
pad=1
filters=30        #---------------修改为3*(classes+5)即3*5+5=30
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=5        #---------------修改为标签类别个数,5类
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0            #1,如果显存很小,将random设置为0,关闭多尺度训练;(转自别的blog,还不太明白)
......
[convolutional]
size=1
stride=1
pad=1
filters=30        #---------------修改同上
activation=linear
 
[yolo]
mask = 3,4,5
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=5        #---------------修改同上
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0       
......
[convolutional]
size=1
stride=1
pad=1
filters=30        #---------------修改同上
activation=linear
 
[yolo]
mask = 0,1,2
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=5        #---------------修改同上
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0        

5.下载卷积层的预训练权重(154 MB),然后放到目录中build\darknet\x64中
6.训练语句

cd C:\darknet-master\build\darknet\x64
darknet.exe detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74  -map

经验

  1. 数据集最好每个类有2000张图片,至少需要迭代2000*类的个数
  2. 数据集最好有没有标注的对象,即负样本,对应空的txt文件,最好有多少样本就设计多少负样本

为了小目标:

  1. 提升分辨率
  2. 在测试时候提升分辨率
  3. 数据集添加跟正样本数量一样多的负样本
  4. 数据集每个类至少2000张,训练迭代次数2000*classes个数
  5. 设置自己数据集的anchor

关于数据集的信息

  1. max_batches 最大训练次数:classes*2000 但不少于 4000
  2. 生成的txt标签文本 形如
<object-class> <x_center> <y_center> <width> <height>

然而:
- 代表物体类别的整数 ,从 0 到 (classes-1)
<x_center> <y_center> - 相对于整张图像长和宽的浮点数, 等同于区间 (0.0 to 1.0]
例如: = <absolute_x> / <image_width> or = <absolute_height> / <image_height>
注意: <x_center> <y_center> - 矩形框的中心 (并非左上角)

关于过拟合

形如你可以检测到数据集中训练过的图像,但是不能检测任何其他的图像. 你应该从Early Stopping Point:获得最终的权重
在这里插入图片描述
2.1. 首先,在文件 obj.data中你应该指定验证集的路径 valid = valid.txt (format of valid.txt as in train.txt),并且如果你没有验证集图像 , 就拷贝 data\train.txt 到 data\valid.txt.

2.2 如果训练在 9000 iterations后停了下来,为了验证之前的权重 使用命令行:

(If you use another GitHub repository, then use darknet.exe detector recall… instead of darknet.exe detector map…)

darknet.exe detector map data/obj.data yolo-obj.cfg backup\yolo-obj_7000.weights
darknet.exe detector map data/obj.data yolo-obj.cfg backup\yolo-obj_8000.weights
darknet.exe detector map data/obj.data yolo-obj.cfg backup\yolo-obj_9000.weights

并且比较每个权重最后的输出曲线
选择拥有最高的mAP (mean average precision) 或 IoU (intersect over union)的权重文件
或者干脆训练的时候 命令行加上后缀 -map

darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 -map

mAP 值每4 Epochs会被计算一次,使用在obj.data file指定的valid=valid.txt 文件中的内容
(1 Epoch = images_in_train_txt / batch iterations)

YOLO是一种目标检测算法,而YOLOX是旷视提出的一种改进的YOLO算法。研究者在YOLOX中巧妙地集成了解耦头、数据增强、无锚点以及标签分类等优秀进展,不仅实现了超越YOLOv3、YOLOv4和YOLOv5的平均准确率(AP),而且具有竞争力的推理速度。 对于YOLOv5训练自己的数据集,可以参考相关的博客和教程,如CSDN博客上的《YOLOv5训练自己的数据集(超详细完整版)》和iCode9网站上的《手把手教你用YOLOv5训练自己的数据集(从Windows环境配置到模型部署)》。这些资源提供了详细的步骤和指导,帮助初学者完成YOLOv5模型的数据集训练。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOX训练自己的数据集(超详细)](https://blog.csdn.net/qq_40716944/article/details/120409457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Yolov5训练自己的数据集(详细完整版)](https://blog.csdn.net/qq_45945548/article/details/121701492)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值