深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景( 二 )


深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景
文章图片
通过观察实验结果发现 , 模型误检情况远多于漏检 , 经常出现一个目标有多个检测结果 , 并且这些检测结果之间无法使用nms去除 。 归纳为两方面原因 。
1.模型自身能力不足 , 回归分类能力差 , 导致大量误检;
2.负样本不足 , 由于样本个数限制 , 模型会在一些模棱两可的地方检测出置信度较高的结果 , 无法通过阈值去处理这些误检结果 。
根据目前结果做了一下几个方面的改进:
1.DoubleHeads[6]
当需要提升模型能力时 , 有2个比较简单高效的方法 , 一是使用更强的backbone , 二是提高RCNN中分类检测head的能力 , 通过实验比对 , 我们最终使用了doublehead的结构(如下图所示) 。
深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景
文章图片
深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景
文章图片
▲DoubleHeads
深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景
文章图片
Doublehead采用分而治之的思想 , 将原始head解耦为2个独立的分支 , 针对不同的需求设计head结构 , 通过对比实验可发现:使用FC-head做分类 , Conv-head做回归 , 可以得到最好的效果 。
因为分类更多地需要语义信息 , 所以使用全连接层 。 而坐标框回归需要更多的空间信息 , 因此使用卷积层 。 当然这种方法会增加计算量 。 在平衡速度和准确率的情况下 , 最终我们选择了3个残差2个Non-local共5个模块 。
2.FFA-Net
期初根据赛题的描述和对数据的分析 , 我们团队首先对图片进行去雾处理 , 然后再进行检测 。 因为现在有许多比较成熟的去雾算法 , 这些算法也不会更改物体的位置 , 所以标注完全不用更改 。 抱着这个想法我们开始进行对比实验 , 来验证去雾算法的有效性 。
首先使用了何恺明比较经典的暗通道先验去雾算法 , 但根据前两轮的得分 , 以及可视化结果我们放弃了这个方法 。
之后我们又在Faster-rcnn相对较小的模型上测试了基于深度学习的去雾算法 , GCANet、FFANet , 用相应去雾算法的输出当做Faster-rcnn的输入 。
深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景
文章图片
深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景
文章图片
▲FFA-Net处理训练集结果
对比结果如下表所示:
深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景
文章图片
根据结果来看GCANet所处理的结果得分较差 , 但FFANet和原数据集得分比较类似 , 虽然没得到相应的提升 , 但却是一个很好的数据增强方法 , 因为类似这种图像模糊的数据集上 , 像素级别的数据增强在此数据集上很容易导致图片原始结构的破坏 , 从而导致AP效果下降 。
现在我们得到一个切实可行的数据增强方式 , 所以将FFA-Net的处理结果与原始图像合并作为新的训练集进行训练 。
3.Augmentation
因为图片总体数量较少 , 并且有较严重的数据不平衡情况 , 所以合理的数据增强方式会比增加模型复杂度之类的方法更为直接有效 。
深兰科技|获雾天条件目标检测挑战赛冠军,CVPR2020|深兰科技挑战复杂场景
文章图片
实验细节:
1.我们将Cascadercnn+DCN+FPN作为我们的baseline
2.将原有head改为Doublehead
3.将FFA-Net处理过的数据集与原数据集合并训练
4.Augmentation
5.Testingtricks
实验结果(本地验证集)