首页 > 汽车技术 > 正文

算力限制场景下的目标检测实战浅谈

2019-01-21 23:39:47·  
 
现在我们要开始裁剪网络结构了,虽然这部分最前沿的研究工作表示完全可以有NAS来完成。比如Google 2017年的NasNet 和2018年的MNasNet,不过我倒是觉得一般情况下一般人可能也部署不起能快速进行网络结构搜索的分布式搜索框架。右图即为NasNet 搜索出来的网络结构,确实看起来也不像是设计出来的。
 
我们还是在baseline 的基础上逐步手工调整吧,可能确实相比搜索达不到最优,但是因为有迹可循,有经验的时候还是有可能会比nas 上使用强化学习学出来的过程快一点。不过这块不敢说大话,说不好未来有可能就不行了。
 
根据mobilenet-v1 论文,有几个方向可以调整:宽度、深度、分辨率。
 
先说宽度,这块有两篇比较相关的论文,主要是ADC和AMC,是同一个组做的。这两篇论文可以做到逐层选择最优的层宽度,效果还不错。这里我们还是跟mobilenet-v1一样进行等比例的宽度压缩,不过有的时候也可能会进行一些相应层的区别性调整。
 
深度,就是加减层。这里的问题是,既然是压缩为什么还要加层,因为可能宽度下来了,计算量已经大幅下来了,增加深度还可以在计算量和运行时间上达标。
 
深度这里还有一个很重要的就是选择几个stage 的问题,一般的分类网都是32x downsampling ,5个stage,旷视在2018年提出DetNet 中使用了16x downsampling ,4个标准stage。这样的好处是,224x224 输入下检测头的featuremap 是14x14 的,可以兼顾细节和语义,同时速度也不慢。
 
对于语义信息和细节信息保持更好的检测方法,FPN 是个不错的选择,但是FPN 在算力限制的条件下略显笨重,实时运行压力有点大。
对于分辨率,我们则大胆的假设这是一个可以暂时忽略的维度,原因是高分辨率可能带来的只是小目标和边框精度的提升。一般的,可以在一个可行的分辨率下面专注于其他超参数的调整。
 
这里还会涉及一些其他微调,例如使用其他形状或者大小的卷积核,提升感受野等。例如有孔卷积和5x5 卷积。不过有孔卷积在移动设备的性能一般般。
接下来就是在各种调整中找一个最优的tradeoff 点了,如图是我在mobilenet-v2 这个网络结构上尝试的结果,尝试了一些不同宽度、深度和微调结构等调整。左半侧的点基本是3/8这个宽度的,右半侧的点是3/4这个宽度的。箭头指向的是简单按stage裁剪完深度之后的baseline。
分享到:
 
反对 0 举报 0 收藏 0 评论 0
沪ICP备11026917号-25