1000行代码完美复现YOLOV4的训练和测试,精度、速度以及配置完全相同,两者模型可以无障碍相互转换。
Model | train | test | net_size | mAP@0.5 | mAP@0.75 | FPS |
---|---|---|---|---|---|---|
yolov4(train from Darknet-AlexeyAB) | 0712 | 2007_test | 416x416 | 86.05 | 67.09 | 55 |
yolov4(ours) | 0712 | 2007_test | 416x416 | 86.85 | 68.14 | 55 |
yolov4(yolov5-loss) | 0712 | 2007_test | 416x416 | 88.74 | 74.93 | 55 |
yolov4(yolov5-loss + ema) | 0712 | 2007_test | 416x416 | 89.22 | 74.96 | 55 |
Python >= 3.6 \ PyTorch >= 1.4
数据集下载
cd <path-to-voc>/ wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar tar xf VOCtrainval_11-May-2012.tar tar xf VOCtrainval_06-Nov-2007.tar tar xf VOCtest_06-Nov-2007.tar
数据生成
cd data/voc0712 python voc_label.py cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt
预训练模型下载
cd pretrain wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137
训练和测试
python train.py
已训练好的模型:百度云(提取码:8888)
python detect.py
计算mAP
模型转换至darknet
python cvt2darknet.py
编译原始版本darknet
./darknet detector map cfg/voc.data cfg/yolov4-voc.cfg weights/yolov4-140.weights
burning in
和one circle scheduler
mosaic
数据增强,resize
替换letter_box
darknet-yolo_layer
的loss
计算方式
grid_cell
的3个bbox
与所有target
的iou<0.7
,且不属于正样本bbox
的下标,同时添加了compare_yolo_class
grid_cell
的3个anchors
与targets
最大iou
的下标
anchor
可以分别预测多个targets
,并不是只有一个,且每个anchor
可预测多个class
confidence
的target
为1,不是iou
bbox
回归的损失函数为CIoULoss
average classes in on box
https://blog.csdn.net/samylee
https://github.com/AlexeyAB/darknet