NAS在目标检测中的应用:6篇相关论文对比解读

共 3671字,需浏览 8分钟

 ·

2020-08-06 00:15

加入极市专业CV交流群,与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度 等名校名企视觉开发者互动交流!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~

作者|yanwan@知乎
来源|https://zhuanlan.zhihu.com/p/157533430

NAS除了应用在classification问题上,还有很多在detection上的研究。

对于detector,不管是anchor和anchor free的检测方法,主要有以下4个components:

  • Backbone:常见的backbone网络有ResNet,ResNeXt等,轻量级的有mobilenet、shufflenet、efficientnet等等,通常需要在ImageNet上进行预训练,但近来一些paper指出,如果训练时间足够长,那么可以不需要使用ImageNet上的预训练模型。
  • Neck:也就是FPN等等结构,是为了利用不同 level 的feature,然后进行一些fusion,以取得更好的结果。
  • RPN:RPN仅仅存在two-stage的检测器中。因为结构简单,很少进行search。
  • Head:进行最终的anchor的分类和修正。

大部分NAS for detection的Motivation很直接,就是对一个或多个component进行search。例如:

  • DeNAS和SpineNet是为检测任务搜索一个Backbone;
  • NAS-FPN搜索的是Neck;
  • Auto-FPN分别搜索了Neck和Head;
  • Hit-Detector则同时搜索检测网络的backbone、neck和head。

这样,Detection+NAS就转化为component的优化。

1、DetNAS: Backbone Search for Object Detection

paper:https://arxiv.org/abs/1903.10979

code:https://github.com/megvii-model/DetNAS

大多数目标检测器方法直接Backbone是图像分类设计的网络,但因为图像分类仅关注的是图中主要物体是什么,而目标检测不仅关注每个目标的类别,还有位置。受到One shot NAS的启发,DetNAS通过将权重训练和结构搜索解耦来进行检测器Backbone的搜索。

具体训练分为三步:

1)在ImageNet上预训练Supernet,

2)在检测数据集上微调Supernet,

3)在训练好的Supernet上使用进化算法进行搜索。

2、NAS-FPN: learning scalable feature pyramid architecture for object detection

paper:https://arxiv.org/abs/1904.07392

NAS-FPN讨论了检测网络的neck如何自动地进行特征分层连接,从而取得精度和速度的权衡。

首先,FPN在NAS-FPN中看做是由许多的“Merging Cells”组成的,如下图:

merging cell的机制是:从现有的feature layers中任意选取两个feature map,并选择输出的分辨率,然后选择此次的Binary Op,将选择的两个feature map融合并按照上一步选择的分辨率生成新的feature map。

然后,NAS-FPN也采用了以RNN作为控制器的强化学习搜索方法,与一般NAS搜索方法相似,为了加快搜索速度,采用了代理的方式。

3、Auto-FPN: Automatic Network Architecture Adaptation for Object Detection Beyond Classification

paper:https://openaccess.thecvf.com/content_ICCV_2019/papers/Xu_Auto-FPN_Automatic_Network_Architecture_Adaptation_for_Object_Detection_Beyond_Classification_ICCV_2019_paper.pdf

如下图示,AutoFPN的创新点在Neck和Head网络中,Neck是针对backbone的特征先做Auto-fusion操作,而Auto-head使用NAS技术搜索得到一个网络用于分类和回归。

  • 搜索方法:Auto-fusion和Auto-head都采用了Differentiable NAS的搜索方式,没有什么特殊的地方。DNAS的介绍可以参考:

Differentiable NAS Research Clues,https://zhuanlan.zhihu.com/p/145560220

  • Resource Constraint : AutoFPN加入了【模型大小、FLOPs、memory access cost (MAC)】三个方面的资源约束,这样既可以避免生成的模型过大。

4、NAS-FCOS

paper:https://arxiv.org/abs/1906.04423

NAS-FCOS和Auto-FPN相似,搜索的是neck和head部分,不同的是采用RL的方法进行搜索,搜索空间也略有点不同。

5、SpineNet: A Novel Architecture for Object Detection Discovered with Neural Architecture Search

paper:https://arxiv.org/abs/1912.05027

SpineNet提出了一种叫做尺度重排(scale-permuted )的元结构模型,也就是说:

  • 中间feature maps的空间分辨率应该能够随时增加或减少,以便模型能够随着深度的增加而保留空间信息。
  • 其次,特征图之间的联系应该能够跨特征尺度,以促进多尺度特征融合。

显然SpineNet是对backbone的搜索,搜出来的SpineNet也可以应用于分类网络,从实验数据来看效果没这么惊艳。

6、Hit-Detector: Hierarchical Trinity Architecture Search for Object Detection.

paper:https://arxiv.org/pdf/2003.11818.pdf

code:ggjy/HitDet.pytorch

Hit-Detector是第一个同时搜索检测网络的backbone、neck和head的方法。采用的是**Differentiable NAS的搜索方式。**结构如下所示:

  • Search space是一些可选择expasion rate、kernel size、group的Inverted Residual block等candidate,如下:
  • Screening Sub Search Space : 为了减少计算负担,采用对每个操作的候选操作进行分层筛选。每个candidate都是与分数有关,高分candidate保留,其他分数较低的被删除。
  • End-to-end Search in Hit-Detector: 就是对backbone、Neck和head的sub搜索空间使用Differentiable NAS方法进行搜索。
  • 优化目标:

其中,α,β,γ分别代表了backbone, neck, and head的网络结构。C(α) 表示 backbone的FLOPs。λ 是平衡准确性和算力的系统。

最后,一张图比较这几种方法,可以看到EfficientNet-D0在非常小资源的情况下,取得了32.4的mAP,效果真的很好。Detection+NAS拟合的能力确实强悍。

if you like this article:    please upvote# Thanks :)


推荐阅读



添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入极市技术交流群,更有每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、行业技术交流一起来让思想之光照的更远吧~

△长按添加极市小助手

△长按关注极市平台,获取最新CV干货

觉得有用麻烦给个在看啦~  
浏览 51
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报