机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读( 二 )


不同的数据分布
该比赛的数据集涵盖了不同的城市和天气 , 之前常用的行人检测数据集一般未同时满足这两个条件 。 该数据具有多样性 , 且与常用数据集的数据分布存在较大差异 。 该比赛数据集与常用于训练预训练模型的数据集(如 COCO 数据集、OBJ365)的数据分布存在很大的不同 , 因此对基于常用数据集预训练的模型进行 fine-tune 的效果不如预期 。
DeepBlueAI 团队解决方案
DeepBlueAI 团队在单帧行人检测和多帧行人检测两个赛道中取得了冠军成绩 , 在检测单帧中所有物体赛道中获得了亚军 。
机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
本文插图
机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
本文插图
就检测器而言 , 该团队首先通过常规检测所累积的经验构造出一个 baseline:
Baseline = Backbone + DCN + FPN + Cascade + anchor ratio (2.44)
这些模块早已是各个比赛的「常客」 , 也被许多专业人士进行了比较透彻的分析 , 此处不再赘述 。 DeepBlueAI 团队进行了简单的实验 , 发现这些模块总是有用 , 进而将这套算法作为 baseline , 加上一些行人检测的小 trick , 如将 anchor ratio 改为 2.44、针对标注为 ignore 的目标在训练过程中 loss 不进行回传处理 。
具体主要工作包含以下几个方面:
1. Double Heads
机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
本文插图
通过观察实验发现 , baseline 将背景中的石柱、灯柱等物体检测为行人 , 这种情况大多和 head 效果不好有关 。 该团队基于此进行了实验 , 如 TSD [7]、CLS [8]、double head [9] , 并最终选择了效果好且性价比高的 double head 结构(如下图所示):
机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
本文插图
Double Heads 结构
机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
本文插图
【机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读】
通过对比实验可以发现:使用 FC-head 做分类、Conv-head 做回归 , 可以得到最好的效果 。
分类更多地需要语义信息 , 而坐标框回归则更多地需要空间信息 , double head 方法采用分而治之的思想 , 针对不同的需求设计 head 结构 , 因此更加有效 。 当然这种方法也会导致计算量的增加 。 在平衡速度和准确率的情况下 , 该团队最终选择了 3 个残差 2 个 Non-local 共 5 个模块 。
2. CBNet [10]
机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
本文插图
合并功能更强大的 backbone 可提高目标检测器的性能 。 CBNet 作者提出了一种新颖的策略 , 通过相邻 backbone 之间的复合连接 (Composite Connection) 来组合多个相同的 backbone 。 用这种方式他们构建出了一个更强大的 backbone , 称为「复合骨干网络」(Composite Backbone Network) 。
当然这也带来了模型参数大小和训练时间的增加 , 属于 speed–accuracy trade-off 。 该团队也尝试过其他的改进方式 , 但最终还是选择了实用性更强的 CBNet , 该方法不用再额外担心预训练权重的问题 。
机器之心CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
本文插图
该团队选择了性价比较高的双 backbone 模型结构 。
3. 数据增强


推荐阅读