2021SC@SDUSC
接下来分析PaddleDetection的竞赛冠军模型
CascadeCA RCNN是百度视觉技术部在Google AI Open Images 2019-Object Detction比赛中的最佳单模型,该单模型助力团队在500多参数队伍中取得第二名。Open Images Dataset V5(OIDV5)包含500个类别、173W训练图像和超过1400W个标注边框,是目前已知规模最大的目标检测公开数据集,数据集地址:Open Images V6。团队在比赛中的技术方案报告地址:https://arxiv.org/pdf/1911.07171.pdf
在two-stage模型中,常见都会预测得到一些目标对象的候选框,这个候选框跟真实值之间一般通过交叉面积(IOU)的计算来判断该框是否为正样本,要保留的候选框。常见的IOU参数设置一般是0.5,但是这种0.5参数的设置一般会导致很多无效的对象,如下的左图所示,而当这个参数设置为0.7的时候就会得到如右图更加清晰的。
但是设置0.7的时候又会带来什么问题呢,不可避免会漏掉一些目标框,特别是微小目标,同时由于正样本数量太少,容易出现过按拟合的现象。
那么cascade-rcnn的重点就是在解决这个IOU参数设置的问题,他设置了一个级联检测的办法来实现。如下图的d子图所示:
在d图中,可以明显看出其级联特性,与b图相比,其每次的IOU参数都是不一样,正常设置为0.5,0.6,0.7。
通过这种方式,可以实现对候选框的级联优化检测。如mmdetection中的cascade-rcnn的配置如下:
rcnn=[ dict( assigner=dict( type='MaxIoUAssigner', pos_iou_thr=0.5, neg_iou_thr=0.5, min_pos_iou=0.5, ignore_iof_thr=-1), sampler=dict( type='RandomSampler', num=512, pos_fraction=0.25, neg_pos_ub=-1, add_gt_as_proposals=True), pos_weight=-1, debug=False), dict( assigner=dict( type='MaxIoUAssigner', pos_iou_thr=0.6, neg_iou_thr=0.6, min_pos_iou=0.6, ignore_iof_thr=-1), sampler=dict( type='RandomSampler', num=512, pos_fraction=0.25, neg_pos_ub=-1, add_gt_as_proposals=True), pos_weight=-1, debug=False), dict( assigner=dict( type='MaxIoUAssigner', pos_iou_thr=0.7, neg_iou_thr=0.7, min_pos_iou=0.7, ignore_iof_thr=-1), sampler=dict( type='RandomSampler', num=512, pos_fraction=0.25, neg_pos_ub=-1, add_gt_as_proposals=True), pos_weight=-1, debug=False) ],
在mmdetection中,通过几行代码即可以实现利用该模型进行测试。如下所示:
检测效果如下,不过与faster_rcnn相比,这个预训练模型效果并没有来得好。