Pooling分析

        由Yann Lecun, Yoshua Bengio, Geoffery Hinto撰写的Deep Learning Review(发表在Nature)中提到了池化层能够reduce the dimensionality of the representation, create an invariance to small shifts and distortions. 池化层能够降低特征表示的维度这个很好理解,伴随来的副作用是局部特征信息的损失,想象如果池化层的filtering bank不是通常的2×2维的矩阵,而是更大维度的矩阵,用max pooling 或者average pooling,信息会损失更多,而且因为每层卷积后都跟着池化层,实际上是相当于在特征的每个提取阶段,从低级特征到中级特征再到高级特征,都有略微的信息损失,因为做了多层的pooling,而不是只做一次pooling,这也是设计上的一个trick啊.这是计算复杂度和性能的trade-off, 信息如果不损失,模型的性能当然会更好,最后得到的特征表示更全面,随着计算能力的提高,这一点也在逐渐得到缓和。
         第二个作用是具有一定程度上的平移和失真不变性,注意原文是说small shifts and distortions,我把他翻译成一定程度,这个程度我认为取决于pooling层中的filtering bank的维度大小,维度越高,在保持性能相同的前提下,图像可平移的距离越大,当然这本身就和上面的信息损失相冲突. 对于失真的理解,假设有一副包含人脸的图像64×64 维,你把图像左边这一列或者前几列的像素值都人为置为[0,255]中的某一个数,这时候池化层反而在一定程度上能够过滤掉这些不相关的像素值(通过max或average掉filtering bank对应的像素值)。

Pooling 的意义:
  • 减少参数。通过对 Feature Map 降维,有效减少后续层需要的参Translation
  • Invariance。它表示对于 Input,当其中像素在邻域发生微小位移时,Pooling Layer 的输出是不变的。这就使网络的鲁棒性增强了,有一定抗扰动的作用。
  • 可以显著的增加接受野
Pool的问题:
  • 池化导致信息损失。想想最大池化的例子,n个数字中我们只保留最大的,把余下的 n-1 完全舍弃了。
池化的平移不变性:
        如果人们选择图像中的连续范围作为池化区域,并且只是池化相同(重复)的隐藏单元产生的特征,那么,这些池化单元就具有平移不变性 (translation invariant)。这就意味着即使图像经历了一个小的平移之后,依然会产生相同的 (池化的) 特征
注意这两点:
1、连续范围
2、池化相同隐藏单元产生的特征
         这意思是指,在池化单元内部能够具有平移的不变性,它的平移范围也是有一定范围的,因为每个池化单元都是连续的,所以能够保证图像整体上发生了平移一样能提取特征进行匹配。
        无论是max还是average都是在提取区域特征,均相当于一种抽象,抽象就是过滤掉了不必要的信息(当然也会损失信息细节),所以在抽象层次上可以进行更好的识别。         至于max与average效果是否一样,还是要看需要识别的图像细节特征情况,这个不一定的,不过据说差异不会超过2%。
不过仔细点说的话,评估特征提取的误差主要来自两个方面:
(1)邻域大小受限造成的估计值方差增大,average能减小这种误差。
(2)卷积层参数误差造成估计均值的偏移,max能减小这种误差。
        也就是说,average对背景保留更好,max对纹理提取更好,如果是识别字体什么的,应该考虑max.
        在很多任务中 (例如物体检测、声音识别),我们都更希望得到具有平移不变性的特征,因为即使图像经过了平移,样例(图像)的标记仍然保持不变。例如,如果你处理一个MNIST数据集的数字,把它向左侧或右侧平移,那么不论最终的位置在哪里,你都会期望你的分类器仍然能够精确地将其分类为相同的数字。

获取high-level需要多个池化操作:
  • 池化操作减少feature的空间分辨率的同时增加了模型接受野,这也是模型应对小型平移具有鲁棒性的根本。多次使用池化操作就很难追踪low-level的feature了(例如边沿,边界等)。这就让识别和准确定位产生了矛盾。
  • 如果网络不采取任何池化操作,这在目标边界定位上效果较好(卷积的目的是为了得到物体的边缘形状),但是识别性能差。
参考链接:
  1. https://blog.csdn.net/qq_18644873/article/details/84949649
  2. https://blog.csdn.net/u011974639/article/details/79561297
  3. https://www.zhihu.com/question/34898241
  4. https://arxiv.org/pdf/1804.04438.pdf

本文总结于网络文章,加入了个人理解,仅用于个人学习研究,不得用于其他用途,如涉及版权问题,请联系邮箱513403849@qq.com

目标检测领域还有什么可以做的?

作者:种树的左耳

来源:知乎

链接:https://www.zhihu.com

感觉已经饱和了,很难再出顶级算法的样子。我所指的饱和是说围绕目标检测感觉没有什么好文章能发出来了,现有算法很难在短时间有突破了。想请教大家有什么好做的点子么?

种树的左耳答案
饱和是相对于占坑来说的,对于去探索未来踩坑来说,目标检测还远远没有达到饱和的地步。只是说想发简单的好论文越来越难了,并不是说不会有什么突破了。单就检测来说,2018年顶会出的目标检测论文也并不算少。
下面是我个人就目标检测算法在深度学习领域未来研究的一些看法:
1.从专注精度的Faster RCNN、RFCN相关系列,以及专注速度的YOLO系列,未来的方向更专注于精度和速度的结合,这也是过去的很多模型在SSD系列上产生的原因,主要代表有RefineDet、RFBNet等。所以SSD系列的研究会成为主流。

2.目标选框从Region Based 和Anchor Based到基于角点,甚至是基于segmentation,包括semantic segmentation 和 instance segmentation 。今年比较有代表的CornerNet和Grid RCNN是一个开拓思路的方向,细节就不用说了吧。。。未来的目标选框方法依旧是研究的一个重要方向。

3.多尺度问题(尺度变换问题),目前常见的三种思路,采用专门设计的尺度变换模块,可以参考STDN: Scale-Transferrable Object Detection。多个scale的目标检测设计,没记错的话之前有在Faster RCNN基础上,做多个scale的rpn。当然最新的SNIP也是多个RPN。还有就是SNIPER,先用SNIPER的模块进行一个粗检测,检测出多个scale关注区域,然后再进行细检测。目前的问题是,如果是才有scale transfer moudle的话,可能会丢失一些信息,也就是多scale融合学习存在问题,那么如何设计一个单scale模型transfer moudle进行有效学习,这一点我是存疑的,总感觉这个多scale融合哪里存在问题。同时,采用多scale的先初步多scale检测再细检测会增加计算时间,如何有效的将两个模块进行结合,进行进一步的再设计是未来一个重点。

4.重新思考目标检测的训练,凯明今年的新作Rethinking imagenet pre-training已经验证了一个问题,pre-training再training和training from scratch这一点在目标检测问题理论上也是适用的。当目标检测数据集达到一定规模,目标选框问题是否可以单独抽离出来,做好更精确的选框预训练,再在具体的数据集上主要进行选框适应性训练和分类训练?另外由于目前的目标检测backbone网络都是从图像分类网络过来的,图像分类网络之前的提法是尺度不变性,而目标检测有尺度变化性,今年清华的一篇文章就是做了这个问题,设计了一个专门针对目标检测问题的backbone,但是还是基于ImgNet进行了预训练,那么不在ImgNet进行预训练是否可行?另外如何从一个小的数据集上进行一个转向任务的无预训练的学习 or 有预训练的小规模数据学习训练。目标检测的小规模数据训练是在实际工程应用中,尤其是工业化场景中一个比较需要关注的问题。

5.重新思考卷积神经网络的旋转不变性和尺度变化,有一些我在上面已经提到了,从一些论文的研究表明,卷积神经网络的旋转不变性似乎是一个伪命题,卷积网络的旋转不变性主要是通过数据的增强和大样本的学习获取的,本身应该不具备旋转不变性。这个问题我看一些研究者提到过,我的感觉是应该是不具备旋转不变性的,可能需要进行进一步的研究进行分析。旋转不变性和尺度变化会影响目标检测算法的基本框架。

6.目标检测以及深度学习的分割、关键点检测、跟踪都需要在数据标注上耗费巨大的成本,如何采用算法进行更有效的标注是一个核心的问题,包括上面4中提到的如何用更少的样本进行学习是关键。如果不能进行无监督的话,那么小规模数据的监督学习如何更有效进行训练达到大幅度精度提升将会是研究的重点。还有就是采用单图像单类别的弱标注,不进行选框标注,通过对大型目标检测数据集进行预训练,然后在这种单类单图像场景进行弱监督多类检测学习,进而泛化到多类单图像检测。

7.IOU的算法设计和阈值的选择,今年比较有特点的是IOUNet和Cascade RCNN。

8.更好的NMS。

9.one shot learning,我看来一个样本和小样本的数据增强和学习,也会有一些有意思的研究。参考评论里面的提到的参考文章:LSTD: A Low-Shot Transfer Detector for Object Detection  发表在AAAI2018。

10.如何实现未知目标类的检测,也就是我们常说的zero shot learning。从结合语义等信息从已知类别的目标检测,迁移到对未知类别的目标进行检测。参考论文Zero-Shot Object Detection(ECCV2018)。

11. 如何从已经训练的模型去迁移到新增数据、新增类别的学习,也就是增量学习(Incremental Learning)。可以参考的论文有Incremental Learning of Object Detectors without Catastrophic Forgetting(ICCV2017)目标检测的论文以及End-to-End Incremental Learning(ECCV2018)。

12. CNN、Pooling、Loss 目前都有各种各样的变体,更有效的CNN、Pooling、Loss依旧会出现。

13. 将目标检测方法的一些研究迁移到SOT(Single Object Tracking)和MOT(Multiple Object Tracking),可以有效的观察到今年表现比较好的SOT算法和MOT算法都有和检测的结合出现。单目标跟踪可参考商汤和中科院计算所的SiameseRPN:High Performance Visual Tracking with Siamese Region Proposal Network(CVPR2018)以及最新的SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks(刚刚发布)。多目标跟踪可参考清华艾海舟组的REAL-TIME MULTIPLE PEOPLE TRACKING WITH DEEPLY LEARNED CANDIDATE SELECTION AND PERSON RE-IDENTIFICATION(CVPR2018)

14. 目标检测的FineGrained问题。

15. 模型的轻量级化,从目前的轻量级网络对于计算资源的压缩上,主要是集中在对于backebone的压缩,那么对于模型整体上针对目标检测的考虑进行再设计是否可行?

16. 大尺寸图像的目标检测问题,目前很多检测的基本主要集中在512×512和1000×600左右的图像操作,但是在未来,4k图像和视频会成为主流,大尺寸图像的目标检测、跟踪都会成为主流,今年CVPR2018有一篇文章Dynamic Zoom-in Network for Fast Object Detection in Large Images是进行大尺寸图像的目标检测,主要是做的2k,设计了一个粗检测和精细检测的模块。所以针对大尺度的图像如何进行计算资源的压缩、有效的目标检测or跟踪是一个非常有前瞻性的研究工作。尤其是未来的网络电视剧、电影、短视频会出现更多的4k内容。

17.AR场景下的跨类检测融合,这个属于我的想象,一个简单的比如是AR眼镜会跟人类的眼睛一样的视野。那么在这个场景下对于视觉获取内容的有效提取包括图像里面就包括文字、商标、各类目标等等内容的融合检测。

18. 3d 激光雷达lidar和深度相机的目标检测,在自动驾驶这一块用的比较多,但是更精细的应用场景还是很多的,还有很多的应用场景比如裁判之类的要求更精细化的检测(包括关键点检测分割之类的)。

19.视频流的检测,主要是应用到移动端场景的手机或者FPGA。由于视频流的图片信息具有时间和空间相关性,相邻帧之间的特城提取网络会输出有冗余的特征图信息,会造成没必要的计算浪费。同时图片的目标检测算法在目标物体运动模糊,拍摄焦距失调,物体部分遮挡,非刚性物体罕见变形姿态的情况下,很难获得较为准确的结果。同时权衡精度、计算时间以及计算资源变得尤为重要。可参考论文包括Towards High Performance Video Object Detection for Mobiles(Arxiv Tech Report 2018)、Towards High Performance Video Object Detection(CVPR2018)、Fully Motion-Aware Network for Video Object Detection(ECCV2018),ECCV2018和CVPR2018都有两三篇,主要贴一下Jifeng Dai的工作,其它就不贴了。

本文总结于网络文章,加入了个人理解,仅用于个人学习研究,不得用于其他用途,如涉及版权问题,请联系邮箱513403849@qq.com