目标检测论文核心思想,18-19-20年论文梗概

余生颓废 提交于 2020-01-24 23:17:22

论文太多来不及看,有些论文用了很大篇幅印证了某种模块有用或者没用,对于不研究这部分的人来说了解一下结论,这个模块有什么优缺点就够了。因而记录一下2018-2019-2020这几年泛读的论文梗概:

DetNet: A Backbone network for Object Detection

论文:DetNet: A Backbone network for Object Detection,2018年清华,Face++旷世合作论文,孙剑大神参与
某人的实现代码点这

目标分类训练的网络作为目标检测backbone是否合适?任务不同肯定有不同,本文就是研究任务切换时backbone直接用的优劣分析。
ImageNet分类模型直接做backbone不够好,检测分类两个任务有差异。
(i)诸如FPN和RetinaNet之类的最新物体检测器通常涉及额外的stage,以完成图像分类任务,以处理各种比例的物体。
(ii)对象检测不仅需要识别对象实例的类别,而且还需要在空间上定位位置。较大的下采样因子会带来较大的有效接收场,这对图像分类有利,但会损害对象的定位能力。
DetNet,这是专门为目标检测设计的新型骨干网络。
DetNet(4.8G FLOP)包括传统backbone分类任务,也保持了空间分辨率。MSCOCO上检测和分割任务都最棒。

检测的Backbone通常从ImageNet分类上面借鉴。

  1. AlexNet是第一个增加CNN层数的,为了减少计算,并增加感受野,它用stride为32下采样。
  2. VGGNet堆叠了k=3的卷积,来搭建更深的网络,也用了stride为32。
  3. GoogleNet提出了inception block来提取更多样的特征。
  4. ResNet在每个stage用了“bottleneck”和residual sum operation,这样就有了更高效的方式搭建更深的网络。
  5. ResNext和Xception都用了group convolution来替代传统卷积,它能减少参数量同时增加精度。
  6. DenseNet稠密地concat几层,在保证一定精度情况下减少参数。
  7. Dilated Residual Network跟他们不一样,它能用更小的stride来提取特征,DRN在分割上面取得可圈可点的成绩,但是在目标检测上面说的很少。
    1
    为解决小目标丢失,作者提出DetNet有以下特点:
  8. stage数量是直接为目标检测设计的
  9. 虽然用了更多的stage,但是保持了高的空间分辨率的同时保持高感受野
    DetNet有以下优点:
  10. 它有检测要用的一样的stage数目,额外的stage P6都在ImageNet上训练过
  11. 得益于最后一个stage的高分辨率,DetNet在定位大目标的边界和找到丢失的小目标上表现很好。
    2
    DetNet59实现细节:
  12. backbone中多一个stage P6,之后会被FPN使用,stage 4后固定空间分辨率是原图的16倍下采样,不在Pooling
  13. stage4之后,每个stage开始的时候用dilated bottleneck with 1x1 convolution projection (B),作者发现它对于multi-stage detectors(FPN)很重要。
  14. 作者用了bottleneck with dilation来增加感受野,因为dilated conv比较费时,stage 5 和 stage 6保持和stage 4相同的通道(256 input channels for bottleneck block),这与传统的backbone不同,传统的都会在后面stage加倍通道。
    在这里插入图片描述
    DetNet比ResNet计算量少,准确率高。

SpineNet: Learning Scale-Permuted Backbone for Recognition and Localization

谷歌出品
论文:点这
学习规模-用于识别和本地化的置换主干
DetNet的升级版,从编码器解码器的体系结构来解释分类网络在检测任务中的使用情况,提出更好的方法。
我们认为编码器-解码器体系结构由于主干的规模减小而无法有效生成强大的多尺度特征。我们建议使用SpineNet,这是一个具有比例排列的中间功能和跨比例连接的主干,可以通过神经体系结构搜索在对象检测任务中学习。COCO上效果最好,计算量减少60%,优于ResNet-FPN
1
现在通用做法是建立解码器恢复特征分辨率,同时解码器和编码器之间还引入了多尺度跨层连接来生成更好的多尺度特征图。
因为分类任务构建编码器不断降采样会丢失大量的空间细节信息,而这些信息很难通过解码器进行恢复。
SpineNet,将编码器和解码器合二为一构建了尺度可变的backbone,这个backbone同时具备之前提到的编码器和解码器功能,因此也是直接连在分类和回归网络上的。
与HRNet类似又不同,HRNet是并行多尺度设计,SpineNet是更自由的多尺度设计
在这里插入图片描述
采用的NAS进行搜索,和NAS-FPN[3]一样也是在RetinaNet基础上进行的,不用ImageNet直接COCO
以ResNet-50为基准,并使用ResNet-50中的bottleneck blocks作为搜索空间中的候选feature blocks,然后再搜索feature blocks的排列,以及每个feature blocks的两个输入连接关系。

SpineNet网络可以看作在一个通用的ResNet-50网络基础上搜索不同feature blocks的排列方式以及连接关系得到的。也和NAS-FPN一样,从第3层到第7层选取了5个输出feature blocks,用于产生最终的P3-P7的多尺度特征层,其他剩余的feature blocks看作是中间feature blocks。
三个搜索空间:1 feature blocks的排列顺序 2 每个feature blocks的两个输入连接关系 3 feature blocks自身的尺度以及block类型调整了
(维度匹配问题)跨层时需要考虑尺度缩放和通道缩放引入了比例因子α(默认为0.5)将输入特征尺寸C调整为α×C,然后使用最近邻差值上采样或者下采样来匹配目标分辨率。最后,再应用1×1卷积将输入特征图的通道数α×C与目标特征图的通道数相匹配,如下图所示:
2
从实验结果来看,SpineNet取得非常不错的效果,而且虽然SpineNet是在检测数据集搜出来的网络结构,但是用在检测,实例分割以及分类上都能取得不错的效果。

在这里插入图片描述
学习尺度多变网络的跨层链接效果比学习固定尺度排列网络的跨层效果好。
Neural Architecture Search (NAS) 网络结构搜索
本文是第一篇真正意义上的NAS在检测上的应用(之前的NAS+Det论文要么固定backbone搜neck,要么固定neck搜backbone,这个设定明显非常奇怪)

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

论文
代码
Quoc V. Le大神于谷歌,2019年出品

Abstract
系统地研究了模型缩放,新方法使用简单而高效的复合系数来均匀缩放深度/宽度/分辨率的所有维度。
ImageNet上效果最好达84.4%top-1 / 97.1%top-5,比最好的网络卷积小了8.4倍,快了6.1倍。
在这里插入图片描述
作者做了以上实验,得出两个结论:

  1. 扩展网络宽度、深度或分辨率中的任何维度都可以提高精度,但是对于较大的模型,精度增益会降低,对应Figure 3中的尾部收敛。
  2. 为了追求更高的精度和效率,在ConvNet缩放过程中平衡网络宽度、深度和分辨率的所有维度是至关重要的,对应figure 4。

提出一种新的复合标度方法,使用复合系数ϕ\phiϕ来均匀缩放网络宽度、深度和分辨率:
在这里插入图片描述
α,β,γ是可以通过小型网格搜索确定的常量,而ϕ\phiϕ从直观上解释是是用户按照能够提供的额外计算资源开销。α,β,γ则是确定如何分别为网络宽度、深度和分辨率分配这些额外资源。
因此用公式(3)对网络进行缩放时,会使得总体FLOPS增加大约在这里插入图片描述
作者利用MNAS Net方法,利用多目标神经网络架构搜索,同时优化准确率和FLOPS

提出Mobilesize的EfficientNet,在ImageNet和五个常用的迁移学习数据集上,用更少的参数和FLOPS达到超越SOTA的精度。
在此之前,通常提高准确率的方法是单纯增加深度,宽度或者分辨率中的某一种,但是效果不能达到最优。在相同计算资源的限制下,平衡这三者的贡献才能让网络得到最好的效果。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!