训练集配比 7:2:1
训练语句
./darknet detector train data/car1.data cfg/car.cfg yolov3.weights -clear
./darknet detector train data/car2.data cfg/car2.cfg yolov3.weights -clear
断点续训语句
./darknet detector train data/car1.data cfg/car.cfg .\backup\car_last.weights
测试语句
./darknet detect cfg/car.cfg car_last.weights D:\project\shipdata\car_test\20210610_144412_801-0.00.04.50.jpg
推荐训练配置 和参数修改
训练 Yolo v3:
创建yolo-obj.cfg与中相同内容的文件yolov3.cfg(或复制yolov3.cfg到yolo-obj.cfg)并:
将行批次更改为batch=64
将线细分更改为subdivisions=8
将 max_batches 行更改为 ( classes*2000),如果您训练 3 类,则设定 max_batches=6000
将行步更改为 max_batches的 80% 和 90%steps=4800,5400
将classes=80行更改为 3 层中的每个对象的数量
[yolo]层位置:
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L610
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L696
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L783
将 [ filters=255] 改为 filters=(classes + 5)x3 ,需要修改的filters 在三个[yolo]层前的[convolutional]层中
定位如下
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L603
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L689
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L776
所以如果classes=1then 应该是filters=18. 如果classes=2那么写filters=21。
权重测试语句
如果训练在 9000 次迭代后停止,要验证之前的一些权重,请使用以下命令:
(如果您使用另一个 GitHub 存储库,则使用darknet.exe detector recall… 而不是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
如果您在 cfg 文件中更改了 width= 或 height=,则新的宽度和高度必须能被 32 整除。
预训练文件生成
yolov3-tiny.conv.15使用命令获取预训练的权重:darknet.exe partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
./darknet partial yolo-fastest.cfg yolo-fastest.weights yolo-fastest.conv.109 109