yolo: dark train my custom database

1. 自定义数据集合==> 训练集 & 测试集 
	文件路径分别保存到 : train.txt 和 valid.txt
	
2. 修改 yolov4-tiny-custom.cfg 文件中必须的参数

3. 预训练模型 yolov4-tiny.conv.29

4. *.data 文件。 输入 classes 个数, train.txt / valid.txt 路径, classes.txt 路径

5 classes.txt 文件。内容是 label 名称列表
## *.data
classes=2
train=m_data/train_list.txt
valid=m_data/test_list.txt
names=m_data/mynet.names
backup=m_data/net_backup
# classes.txt

RecoveryNetwork
Shadow

数据集合的切分

1. YOLO 格式 txt 文件和 图片文件存放到同一个目录下面
2. 训练集 和 验证集 的比例建议为 9:1 或者是 8:2

训练集 和 测试集合 都需要保罗可能出现的各种图像,比如可能出现的形状、角度、灯光效果等

切分好的数据集合 将用作训练的图片保存到 trains.txt 文件中,验证用的图片路径保存到 valid.txt 中. 一行代表一张图片的路径 (当对于 可执行文件 darknet 的相对路径)

修改 yolov4-tiny-custom.cfg 文件中必须的参数

1. net 节点下面的 batch 和 subdivisions  
	
	这两个参数的值和训练机器的内存大小是有关系的。 batch 的默认设置为 64, ==》 每64个样本更新一次参数
	subdivisions=16 ===> 将 batch 分割为 subdivisions 个子 batch, 每个 子 batch 的大小为 batch/subdivisions
	
	如果训练过程中,提示 out of memory, 可以将 subdivision 的值再设置大点, 比如为 32 或者 64.
	
	e.g, 
		batch=64
		subdivisions=16
	
2. net 节点的 width 和 height, 是指训练的神经网络的宽度和高度,值需要是 32 的倍数
	
	一般来说,这两个值越大越好,但是这个值也不能超过图像的宽度和高度 首先我们默认为 416 × 416 
	
3. net 节点下面的 max_batches ,训练的最大 batch 次, 值越大, 训练耗时越久
	
	设置准则:
		max_batches = classes * 2000 
		不能小于图片的数量
		不能小于 6000

4. net 节点下的 steps 的值, steps = 0.8 × max_batches, 0.9 * max_batches
1. yolo 节点下面的额 classes 的个数 , 每一个yolo层都需要进行修改 

2. convolutional 节点的 filteres 的值 ,不需要全部节点都需要进行修改, 只需要修改离 yolo 层最近的 filters 的值即可
	
	filters = (classes + 5) * (number of mask)
		(标签的个数 + 5)× yolo层 mask 值的个数
		
	number of mask : 靠近的yolo节点的mask 个数

开始训练

# train_images and label must be the sama path.
./darknet detector train m_data/net.data m_data/cfg/yolov4-tiny-custom.cfg backup/yolov4.conv.137 
# result
...
total_bbox = 183764, rewritten_bbox = 0.312901 % 

6000: 0.132380, 0.150676 avg loss, 0.000026 rate, 0.534962 seconds, 96000 images, 0.014835 hours left
Saving weights to m_data/net_backup/yolov4-tiny-custom_6000.weights
Saving weights to m_data/net_backup/yolov4-tiny-custom_last.weights
Saving weights to m_data/net_backup/yolov4-tiny-custom_final.weights
If you want to train from the beginning, then use flag in the end of training command: -clear 

检测

./darknet detector test m_data/net.data m_data/cfg/yolov4-tiny-custom.cfg m_data/net_backup/yolov4-tiny-custom_final.weights
上一篇:机器学习-阿里天池训练task02笔记朴素贝叶斯(Naive Bayes)


下一篇:【机器学习实战】垃圾分类快速理解机器学习中的朴素贝叶斯(Naive Bayes)