首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AI Challenger 2018无人驾驶视觉感知第四名总结

已经2019年了,我们回顾一下AI Challenger 2018全球AI挑战赛,在经历了TestA和TestB的海选,以及TestC的激烈角逐和最终的答辩阶段,我们团队oneplusone最终获得了第4名的成绩,虽然在比赛成绩上有很多的遗憾,但是比赛的过程中,我们收获颇多,希望在这里与读者们分享我们的收获。以下我们把答辩内容加以提炼,形成了本篇文章

0.大纲

1. 回顾比赛;

2. 分析数据;

3. 技术收获;

4. 赛后总结;

1. 回顾比赛

这次比赛一共分为四个阶段:

1. Test A阶段,结束时我们排在12名。

这里不截图了……

2. Test B阶段,我们经过一系列升级优化,结束时,我们排在第3名。

3. Test C阶段,此阶段需考虑模型的速度,我们的模型在速度上处于劣势,因此TestC排在了第4名的位置。

4. 答辩阶段,最终获得第四名的成绩。

2. 分析数据

回归问题本质,这个比赛主要想解决什么问题呢?这个比赛考察两个领域的知识:1)物体检测;2)语义分割。我们这里简单抽取一张图片看看:

物体检测:需要把所有的车辆,交通灯,交通指示牌,行人等都检测出来,具体来说包括:1)person;2)bike;3)car;4)motor;5)rider;6)bus;7)train;8)truck;9)traffic sign;10)traffic light,我们可以发现里面的物体都很“小”,而且非常密集,这对物体检测来说是个难点。

语义分割:需要把以第一人称视角,“优先级高”可走的路,和“优先级低”可走的路分割出来,并且表示为两类(包括背景就是三类)。

总体来说,给我们的直觉,这次比赛,“物体检测”的部分难度更大一些,而“道路分割”仅有两类,相对简单一些。

数据分布:

我们再看一下数据分布,统计了物体检测中,训练集上各个物体的数据(instances)分布情况:

其中我们发现数据分布不均,而且有些类别数量特别少,比如“火车”类,仅有136个实例(instances)。同时还有一些标注错误,比如如下图所示:

如上图所示,“卡车”被错误标注成“火车”,大家注意,原本仅有136个实例的“火车”类,里面还有很多错误的标注(大约30多个)。

数据尺度变化

下面,我们看看物体的尺度变化,我们拿一张图作为示例:

这张图着重标注了“火车”类,我们发现它非常的“长”,经过我们统计,训练集中有1:14的比例,通常的基于anchor的物体检测方法,很难去处理这么“长”的物体。(如果设计很长的anchor可行么?那估计需要更改网络结构,单独训练一个“专门”处理“长”物体的分支)

总的来说,数据上有3个难点:

1. 小物体多,而且彼此重叠严重;

2. 数据分布不均,一些类别数据量很少;

3. 数据尺度各异,有一些很“长”的物体;

3. 技术收获

由于比赛最后要考虑模型的运行速度,我们选择兼顾速度和精度的YOLO V3以及我们修改的Deeplab V3+。

YOLOV3的测试结果mAP(测试集):

Step1: Original YOLO V3:12%(30ms)

Step2: YOLO V3 + HR + FinerFeature + Weighted Loss:29.3%(50ms)

Step3: YOLO V3 + HR + Deformable Conv + WL:28.2%(50ms)

Step4: YOLO V3 + HR + Self-Attention + WL:31.0%(50ms)

Note:HR指的High Resolution;FinerFeature指使用更大的特征图去预测;Weighted Loss(WL)指的不同类别的权重,缓解样本不均匀问题;Deformable Conv指MSRA推出“可变形卷积”,类似动态Dilation操作,用以处理不同物体不同感受野的问题,比如本赛题中的”火车“类;Self-Attention指利用Attention的思想,令每个像素感知更大的区域,无形增大感受野。

我们看看检测结果:

我们发现检测结果还是比较理想的,小物体和重叠的物体也能很好的检测。

Deeplab V3+的测试结果mIOU(测试集):

Step1: Original Deeplab V3+:77.6%(80ms)

Step2: Multi-scal Testing + Deeplab V3+:79.1%

Step3: Darknet + UNet + Deeplab V3+:76.2%(30ms)

Step4: Darknet + UNet + DPC + Deeplab V3+:76.4%(28ms)

Note:Darknet指的是YOLO V3的Backbone结构;UNet指的是语义分割的一种方法,类似U形的网络;DPC(Dense Prediction Cell)是指Google提出的一种用于语义分割的模块,用来替代ASPP模块(

Atrous Spatial Pyramid Pooling)。

我们看看分割结果:

总的来说,有如下几点发现:

1. Self-Attention对于提高YOLO V3的mAP很有帮助, mAP:29.3 —> 31.0;

2. Deformable Conv对于YOLO V3效果不明显,结果降低了(可能是我们把Deformable Conv加入到YOLO的Head里而不是Backbone的原因);

3. 使用Deformable Conv,火车类的mAP从1.2%提升到8.5%,提升显著,可见Deformable在处理这种“奇形怪状”的物体时优势明显;

4. 使用大图训练,mAP会有显著提升;

5. 对于道路分割,使用小的Backbone,整体的mIOU也不会下降太多,为了速度着想,可以尝试ResNet34或者ResNet18;

6. 对于本赛题的语义分割,使用DPC去替代ASPP,加速的同时准确率也会上升,但并没有在Pascal VOC等数据集上做过其他实验;

4. 赛后总结

曾经一度认为,模型越大,准确率越高越好,然而在实际生产中,并非如此。我们需要考虑很多因素,比如模型的运行速度,运行占用的内存,模型本身的大小等等,所以对于优化模型,如果仅考虑准确率,那么我们一味增大模型的复杂度即可,那么最后深度学习将会沦为比拼“金钱”的工具,有钱,就可以买更好的显卡,训练更复杂的模型,那么需要汝等科学家的意义是?

所以,模型加速,即在不损失精度的条件下,加速模型,将会成为我们未来重点考虑的问题。

最后,模型若准快,落地岂远哉。

这里推荐一些文章:

1.《DeformableConvolutionalNetworks》

Link: https://arxiv.org/abs/1703.06211

2. 《Attention Is All You Need》

Link: https://arxiv.org/abs/1706.03762

3.《Searching for EfficientMulti-Scale Architectures for Dense Image Prediction》

Link:https://arxiv.org/abs/1809.04184

请大家多多关注哦~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190113G0JFKA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券