点击我爱计算机视觉标星,更快获取CVML新技术
本文转载自知乎,经作者授权转载。
原文链接:
https://zhuanlan.zhihu.com/p/104357348
背景
《SM-NAS: Structural-to-Modular Neural Architecture Search for Object Detection》是AAAI 2020 的论文,作者来自华为和中山大学。
该论文的出发点和谷歌EfficientDet非常相似,将输入分辨率、主干网络、特征融合和head一起考虑,进行模型结构的搜索。主要的区别在于该方法将搜索分成由粗到细的两步,并且在结构搜索中,搜索空间也包含了two-stage的方法。
该文算法E0~E5与其他SOTA算法推断时间和在COCO数据集上精度比较
一、研究动机
目前NAS在目标检测中的应用主要还是单独搜索backbone或者FPN和head等,还不能够整体搜索检测框架,其主要原因还是在于搜索空间太大。该论文提出了一种由结构到模块的两步搜索策略,先搜索整体结构,在在每个子结构中(backbone、FPN、head等)搜索具体的网络。
作者还做了一组实验说明了搜索整体结构的重要性:
![](https://i-blog.csdnimg.cn/blog_migrate/fa20959bb40525c02c470e3ace7aee26.png)
1)在COCO上RetinaNet相比faster rcnn要更慢,主要还是因为COCO的类别太多,RetinaNet的head采用conv,其计算量太大 ;而faster rcnn采用的是全连接,计算量增加较小。相较而言,在VOC上,类别较少的时候,RetinaNet更快。这说明其实要考虑数据集来确定检测框架。
2)在COCO上,基于ResNet50的cascade rcnn比ResNet101的faster rcnn要速度更快,准确率也更高。这说明要综合考虑分辨率、主干网络等。
二、研究方法
![](https://i-blog.csdnimg.cn/blog_migrate/9bb68ca70437db2983e7badfd15fecb6.png)
整体方法结构如图所示,包含两个stage:
1)结构搜索
首先将检测框架分成input、backbone,feature fusion neck, rpn和rcnn部分,搜索空间如下:
input:512x512, 800x600, 1080x720 和1333x800。(1080x720这个输入分辨率比较少见,720P应该是1280x720)
backbone:ResNet系列、ResNeXt系列和MobileNet v2,并且采用ImageNet的预训练模型。
Feature fusion neck:包括P1-P6。
RPN:no RPN,RPN和GA-RPN。
RCNN:RCNN,RetinaNet head和Cascade RCNN。(这里包含了one-stage和two-stage目标检测算法)
这部分评价指标是inference-time和准确率。
2)模型搜索
首先在结构搜索中得到帕累托前沿面,选择其中的几个最优解,再进行细致搜索。
搜索空间如图所示,主要包括基本的通道数,ResNet的basic block/bottleneck和ResNeXt和MobileNet的block。
这部分评价指标是floaps和准确率。
3)train from scratch
在stage2中,为了更加准确地反映目标检测模型的性能,采用train from scratch的方法,为了防止梯度爆炸,采用了GN和WS的方法对weight和activation做了约束。
三、实验结果
stage1的搜索结果如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/9d6ea9cd7e0dc25f94d387903864ec41.png)
这里有一个和其他论文不太一样的结论,在第2幅小图中,MobileNet v2是不在帕累托前沿面上的,论文解释是说depthwise 卷积在GPU上优化不好导致的,虽然计算量低,但是效率不高,该论文采用inference time作为评价指标。但是这里其实存在一个不公平的地方,所有的主干网络模型是用ImageNet预训练模型的,而MobileNet v2的预训练模型的weight decay是4e-5,和ResNet的1e-4是不一样的,而在整个搜索中是采用1e-4的,这对MobileNet v2的性能是有影响的(可能会有1个点),也就是上说预训练MobileNet v2和搜索采用的weight decay是不适配的,这个结论对比不够公平。
最终作者采用C0-C5的结果进入到模块搜索中。
stage2的搜索结果如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/a7bd518c8ca91cd5b6d8c3f520d75df1.png)
对每个子结构进行了搜索,其性能都有较大的提升。可以看到two-stage的方法(特别是cascade head)占据了较大的优势地位。
最后的结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/59f602b12112f9c3955d78305aa1b68a.png)
四、总结分析
该论文首次采用结构-模块两步搜索的方法对检测框架进行了搜索,并且首次把two-stage的框架也加入进来,效果也比较好。
从出发点上说和EfficientDet很像,EfficientDet在FPN的搜索上更加细致,并且其backbone也是EfficientNet中的,效果更好。另外就是SM-NAS中关于depthwise的讨论也需要更加公平的对比。
论文地址:
https://arxiv.org/pdf/1911.09929.pdf
目前还未发现该文有开源代码。
目标检测交流群
关注最新最前沿的2D/3D目标检测技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)
(请务必注明:目标检测)
喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。
(不会时时在线,如果没能及时通过验证还请见谅)
长按关注我爱计算机视觉