我用ppyolov2在自定义的数据库上做检测,按照优化方法修改锚框,并使用发布的608模型作为预训练模型进行训练
python tools/anchor_cluster.py \ -c configs/ppyolo/ppyolo.yml \ # 模型配置文件 -n 9 \ # 聚类的个数,即anchor的个数 -s 608 \ # 图片输入尺寸,这里对应EvalReader中Resize后的尺寸 -i 1000 # kmeans聚类算法迭代次数
锚框修改前
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.722
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.946
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.926
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.743
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = -1.000
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = -1.000
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.731
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.783
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.785
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.785
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = -1.000
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = -1.000
锚框修改后
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.682
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.925
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.894
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.723
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = -1.000
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = -1.000
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.697
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.781
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.781
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.781
感觉被反。优化了,这是啥原因???
缓缓聚类数目试试呢
anchor的个数?
聚类时设定的聚成多少类,就是聚类成多少个宽高比类别
9个。聚类我就是按照官方的配置文件,改了下yaml配置文件,其他都没变
!python tools/anchor_cluster.py -c configs/ppyolo/ppyolov2_r50vd_dcn_365e_coco.yml -n 9 -s 608 -i 1000
如果用的自己的数据集,还是要重新用聚类算法算出新的宽高值的。不只改yaml文件
嗯嗯,我就是重新聚类,替换了原来的锚框设置
是不是聚类出来的框的大小比较接近,就是说你的数据集里的目标大小可能都是集中在一个范围里