点击上方“CVer”,选择加"星标"或“置顶”
重磅干货,第一时间送达
作者:bearbee
https://zhuanlan.zhihu.com/p/97230695
本文已由作者授权,未经允许,不得二次转载
本文将以NAS-FPN[1]作为NAS+Det系列的开场, NAS-FPN也可以看作是NAS应用在检测上的开山之作。
话不多说,开始正题。。。
首先本文的Motivation其实很简单:在检测网络的neck部分,如何自动地进行特征分层连接,从而取得精度和速度的权衡。。对于目标检测来说,不同尺度物体检测一直是个难题。原始的SSD是高层特征检测大物体(感受野大),低层特征检测小物体(细节信息多),但是高层特征经过了多次的降采样导致部分细节信息丢失,而低层特征虽然保证了特征分辨率但是缺乏全局的语义信息,这些会最终导致分类或定位不准。因此FPN[2]采用top-down的跨层连接方式缓解不同尺度检测的难题,即将高层特征上采样到低层特征尺寸并进行融合,从而低层特征即具有高层的语义信息,又保证了丰富的细节信息,这能极大提升小物体的检测效果。。但是这样会让网络过多关注低层特征的优化(低层特征会传累计更多的梯度),导致高层特征并没有学好,也就是大物体的检测精度反而会下降,这在FPN论文中也有提到:
可以看到在C4层进行检测的baseline(a)最终大物体检测效果比FPN要好(47.1 > 45.8)。于是就有了PANet[3]的提出,而这个方法也取得了2017年COCO的检测第二名以及分割第一名的成绩,在此我们只分析其第一个创新点,即又引入了bottom-up的跨层连接,将低层特征下采样到高层特征尺寸并融合,这样做的好处就是在高层特征上可以保留低层特征的细节信息,尤其是一些边缘特征,这些都对定位精度有很大帮助。由此可见,不同层的跨层连接对检测性能有着很大的影响,但是连接方式的搜索空间太大,很难人为确定最优的方式,因此NAS-FPN就借鉴了NAS在分类网络架构搜索的思想,并确定了其搜索空间,最终可以实现自动跨层连接。
NAS-FPN为了提升搜索速度以及减少Two Stage目标检测的proposal采样以及RCNN部分的影响,选择了RetinaNet[4]作为搜索baseline,同样的,和RetinaNet保持一致,也采用了C3-C7进行特征融合。和分类网络架构搜索方法NASNet[5]类似,NAS-FPN也采用了以RNN作为控制器的强化学习搜索方法,定义了节点集合(可用的特征图节点集合),操作池(sum 和 global pooling)以及搜索终止条件(填满输出金字塔的每一层)。如图:
具体来说,有以下6个步骤:
Step1: 从节点集合中选取第一个特征图节点,H1, 作为融合输入
Step2: 从节点集合中选取第二个特征图节点,H2,作为另一个融合输入
Step3: 从节点集合中选取第三个特征图节点,H3,作为输出分辨率
Step4: 从操作池选择融合操作
Step5: 新融合的特征图作为新的节点,再放进节点集合里
Step6: 遍历以上步骤,直到填满输出金字塔的每一层
以上就是大概的过程,其中需要注意的是Step4,其借鉴了Pyramid Attention Networks[6],即高层特征不是简单的和低层特征相加,而是引入了注意力机制,进行有效地特征融合。当然NAS-FPN对此做了简化,采用maxpooling作为注意力机制,如下:
从上面的过程可以看出,最终搜索结果的特征融合后输出和之前的输入是具有相同尺寸的,那么自然而然地,可以在搜索结果后进行堆叠,这样可以进一步增强特征融合。这带来另外一个好处就是,可以进行精度和速度的平衡选择。
接下来就是方法的实现细节以及实验结果了。
也和NASNet类似,为了减少搜索时间,NAS-FPN同样采用了代理任务进行搜索, 即以ResNet-10作为backbone,输入尺寸是512x512,训练10个epoch,同时为了获得reward,又随机选了7392张训练集的图像作为参考。
接下来就是看实验结果了。
首先Reward是否能衡量AP呢,下图所示:
从上图可以看出,随着搜索次数的迭代,reward确实不断提升,同时当控制器达到收敛的时候,很多搜索出来的架构会趋向相同,这也意味着已经搜索到了好的跨层连接方式。
然后就是看网络搜出来的结果了,下图所示:
同样地,也可以看到随着控制器收敛过程的网络结构,下图所示:
从上图可以看出,在搜索训练前期,网络就已经学会高层和低层要top-down跨层连接(FPN),随着网络收敛渐渐学会了低层和高层的bottom-up跨层连接(PANet),当然在最后网络会尽可能复用已经融合的特征。
紧接着,论文又做了一些扩展性实验,对网络的复杂度进行了控制,主要从三个方面:backbone,neck堆叠次数以及neck层的channel数,结果如下:
图(a)表示neck层堆叠的次数的效果,可以看到原始FPN在堆3次效果是最好的,再堆叠更多次数的话精度反而降低了,而NAS-FPN可以在堆叠7次仍然有提升,这个结果可以说明NAS-FPN的上限更高。
图(b)表示不同backbone的效果,可以看出尽管NAS-FPN是用的ResNet-10作为backbone进行搜索的,但是搜索出来的结果对不同backbone都是有很好的泛化性的。
图(c)表示neck层channel数的效果,可以发现channel越多精度越高,这也说明了NAS-FPN的上限高。
最终该文还对高精度和低延迟这两种情况分别进行探索,最终NAS-FPN在速度更快的情况下,取得更高的检测精度,结果如下:
本文是NAS在Det上应用的开山之作,以Neck层作为切入点进行研究,最大创新点在于搜索空间的设置,最终搜索出来跨层连接还算符合常理,top-down和bottom-up的结合,看来我们人类还是聪明的hhh。。不过这篇论文为了简化pipeline选择了RetinaNet这种one stage目标检测框架,同时并没有将整个检测pipeline进行搜索,而是集中在Neck上优化,感觉还是有点不完美的。。此外NAS-FPN搜索出来的结果并不一定适用其他数据集,例如在哦Widerface上尝试过NAS-FPN的搜索结果,发现并不work。。这也告诉我们,在利用NAS搜索结果的时候,还是需要针对自己的数据集和场景针对性分析。。
[1] Ghiasi, Golnaz, Tsung-Yi Lin, and Quoc V. Le. "Nas-fpn: Learning scalable feature pyramid architecture for object detection."Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.
[2] Lin, Tsung-Yi, et al. "Feature pyramid networks for object detection."Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[3] Liu, Shu, et al. "Path aggregation network for instance segmentation." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.
[4]Lin, Tsung-Yi, et al. "Focal loss for dense object detection."Proceedings of the IEEE international conference on computer vision. 2017.
[5] B. Zoph, V. Vasudevan, J. Shlens, and Q. V. Le. Learning transferable architectures for scalable image recognition. InCVPR, 2018.
[6] H. Li, P. Xiong, J. An, and L. Wang. Pyramid attention net- work for semantic segmentation. BMVC, 2018.
CVer 推荐阅读
目标检测三大开源神器:Detectron2/mmDetectron/SimpleDet
一文看尽4篇实时语义分割最新论文(MSFNet/LiteSeg/FDDWNet/RGPNet)
一文看尽10篇目标检测最新论文(SpineNet/AugFPN/LRF-Net/SABL/DSFPN等)
重磅!CVer-目标检测交流群已成立
扫码可添加CVer助手,可申请加入CVer大群和细分方向群。细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索等群。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲长按加群
▲长按关注我们
麻烦给我一个在看!