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
1、模型原理
在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)
],
2. 实验
在mmdetection中,通过几行代码即可以实现利用该模型进行测试。如下所示:
检测效果如下,不过与faster_rcnn相比,这个预训练模型效果并没有来得好。