参加目标检测7日打卡营,RCNN系列模型优化策略里的作业实战问题记录
作业说明:基于PaddleDetection中的RCNN系列算法,完成印刷电路板(PCB)瑕疵数据集的训练与评估任务。要求在验证集上采用IoU=0.5,area=all的mAP作为评价指标,得分=mAP * 100,范围[0,100],分数越高模型效果越好,及格线是60分。鼓励大家使用GPU训练,CPU训练的结果不纳入排行榜。
修改使用cascade最优配置
cascade_rcnn_dcn_r101_fpn_3x_server_side.yml
命令
!python -u tools/train.py -c ../cascade_rcnn_r50_fpn_1x.yml –eval
报错:
InvalidArgumentError: Broadcast dimension mismatch. Operands could not be broadcast together with the shape of X = [1, 64, 200, 223] and the shape of Y = [1, 64, 200, 224]. Received [223] in X is not equal to [224] in Y at i:3.
[Hint: Expected x_dims_array[i] == y_dims_array[i] || x_dims_array[i] <= 1 || y_dims_array[i] <= 1 == true, but received x_dims_array[i] == y_dims_array[i] || x_dims_array[i] <= 1 || y_dims_array[i] <= 1:0 != true:1.] at (/paddle/paddle/fluid/operators/elementwise/elementwise_op_function.h:157)
当时就想把canonical_size: 224 改成223试试,结果当然是不行啦!后来报了issue,才明白问题所在。
issue:https://github.com/PaddlePaddle/PaddleDetection/issues/1492
回信了:只要RCNN里加了FPN就要将输入图片padding到32的倍数,你的Reader请参考faster_fpn_reader.yml,修改配置文件时请注意一下。
因此需要在数据读取部分加入:
batch_transforms:
- !PadBatch
pad_to_stride: 32
use_padded_im_info: false
当然我的理解是训练和验证都要加,文档中是这样写的:
训练部分:
batch_transforms:
- !PadBatch
pad_to_stride: 32
use_padded_im_info: false
验证部分:
batch_transforms:
- !PadBatch
pad_to_stride: 32
use_padded_im_info: true
文档链接:
https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.4/configs/faster_fpn_reader.yml#L28-L30
在修改配置的时候,我是直接将以前的数据读取部分全部copy过来,而不是在faster_fpn_reader.yml文件里面修改,所以没有pad_to_stride: 32这句。另外老师讲课的时候在开头就提到这个问题了,我没有听到,这也是为什么别人大部分都没有碰到这个问题,而我碰到的原因!
由于时间比较紧,在提交截止时间前10分钟,先中断,然后进行了测试分数,提交结果。
接着以前跑使用-r参数 如:
!python -u tools/train.py -c ../cascade_rcnn_cls_aware_r101_vd_fpn_1x_softnms.yml --eval -r output/cascade_rcnn_cls_aware_r101_vd_fpn_1x_softnms/6000
提交成绩在97.6,提交后继续训练,最终成绩在98.2
同时看文档,关于paddledetection里面的训练轮数问题,可以用这个比例:6 8 9
比如:
GPU数 学习率 最大轮数 变化节点
2 0.0025 720000 [480000, 640000]
4 0.005 360000 [240000, 320000]
8 0.01 180000 [120000, 160000]
表中变化节点即为piecewise decay里的boundaries:
我的理解就是piecewise decay里的milestones的设置
milestones:
- 6000
- 8000
另今天冠军讲课中,讲到在coco数据集中,比较好的比例是:[8, 11, 12] 或者 [16, 19, 20]
附
ECCV2020目标检测双料冠军团队和PP-Yolo核心研发团队亲授
目标检测7日打卡营课程 https://aistudio.baidu.com/aistudio/education/group/info/1617