Inference
data_process/kitti_dataset
里面设置了用testing
文件下的测试图片- 这里pretrained_model用的是作者提供的,自行从.md文件里下载就行
- 运行脚本:
python test.py --gpu_idx 0 --pretrained_path complex_yolov4_mse_loss.pth --cfgfile ./config/cfg/complex_yolov4.cfg --show_image
Evaluate
- 作者这里val模式没有定义,我们修改一下代码来进行validation
if self.mode == 'test':
sub_folder = 'testing'
elif self.mode == 'val':
sub_folder = 'validation'
else:
sub_folder = 'training'
# sub_folder = 'testing' if self.is_test else 'training'
# 这一行注释掉,其他的不变就可以了~
- 运行脚本:
python evaluate.py --gpu_idx 1 --pretrained_path complex_yolov4_mse_loss.pth --cfgfile ./config/cfg/complex_yolov4.cfg --img_size 600
(这github博主提供的模型召回率不太行啊qwq…)
Training
那咱们来训一下吧。
#!/usr/bin/env bash
python train.py \
--saved_fn 'complexnewwwww' \
--arch 'darknet' \
--cfgfile ./config/cfg/complex_yolov4.cfg \
--pretrained_path complex_yolov4_mse_loss.pth\
--batch_size 4 \
--num_workers 4 \
--no-val \
--gpu_idx 1 \
--num_epochs 100
每10epoch保存一次。
对比
car | person | cyclist | mAP | |
---|---|---|---|---|
官网mse300epoch | 0.45 | 0.03 | 0.03 | 0.17 |
10epoch | 0.67 | 0.04 | 0.02 | 0.24 |
20epoch | 0.70 | 0.04 | 0.06 | 0.27 |
30epoch | 0.70 | 0.03 | 0.04 | 0.26 |
40epoch | 0.71 | 0.06 | 0.02 | 0.27 |
50epoch | 0.72 | 0.04 | 0.03 | 0.26 |
60epoch | 0.68 | 0.03 | 0.02 | 0.24 |
70epoch | 0.67 | 0.04 | 0.02 | 0.25 |
80epoch | 0.70 | 0.03 | 0.02 | 0.25 |
90epoch | 0.71 | 0.04 | 0.02 | 0.26 |
100epoch | 0.70 | 0.04 | 0.02 | 0.25 |
在验证集上的测试结果,首先是行人和骑自行车的人检测效果非常不好,0.0几是认真的吗,得亏老哥还吹着说能设计了更好的anchor-box来进行行人检测。。
我开始怀疑了,虽然数据集划分不一致,github复现的老哥是6000/1400左右的,我是1:1,但是讲道理,他的训练集图片更多,并且和验证集里的数据有重复,应该召回率更高才对啊(知道原因的伙计可以评论一下)。还是我理解的有问题,数据集这里需要再深究。
训练上,大概50epoch就差不多性能巅峰了,这和二维目标检测完全不一样。
但不排除我训练方式有问题,(but参数就是原文的参数)
再捣鼓捣鼓吧。先写报告了。
每一类的precision,recall,AP,f1计算数据
-
10epoch
-
20epoch
-
30epoch
-
40epoch
-
50epoch
-
60 epoch
-
70epoch
-
80epoch
-
90epoch
-
100 epoch