如何评价 Kaiming He 的 Mask R-CNN?

MomentaAI

赞同来自:

让你的成长火力全开丨Momenta精英实习项目「火箭计划」全球热招 从苏州,向未来丨Momenta火箭计划全球热招  面向全体在校生推出的精英实习计划! 欢迎ACM等竞赛经验、C++编程能力强的代码大神加入同样优秀的我们!   -顶级薪酬福利待遇   -成长方向准确定位   -十多位业界大牛指导   -真实场景下的无人驾驶实践   -多维度成长培养体系 开发、算法、测试、产品、项目、市场等多个方向同时开启, 让你在最短时间内在资源最丰富的平台,获得火箭速度的成长!

Mask R-CNN,是图像识别方向引起较多关注的论文之一。 首先,需要highlight的是这篇论文用一种相对简单的方式进行了图像识别中的三个重要任务并都取得了目前最好的结果,为之后的研究工作提供了一个很好的baseline,这也是学术界和工业界对其关注的原因之一。   这三个任务分别是物体检测 (对于图像,给出其中物体的类别和位置,这里的位置以长方形外接框的形式给出),实例分割 (与物体检测相比,实例分割给出的位置信息更加详细,是物体所在区域的mask),关键点检测 (与物体检测相比,关键点检测预测了多个物体的语义关键点及其位置,这里主要是对于人体而言,预测了人体若干个关节以及一些面部关键点的位置)。 今天,我们分三个部分讨论这篇文章,第一部分,是关于文章背景知识以及前序工作的介绍。第二部分是关于文章细节的介绍及相关比较和实验结果。第三部分是一些讨论和思考。   上图是Mask R-CNN的输出形式和算法结构图,看起来可以有一些复杂,下面我们会将这个结构图分解开来一点一点的讨论。 Background & Related Works 从概念上来说,上述算法需要解决四个问题,其一是图像分类 (image classification),主要回答是什么的问题,其二是定位 (localization),主要回答在哪里的问题,其三是mask classification,即对图像中每个像素做分类,进一步回答了在哪里的问题,其四是关键点定位,在进一步回答在哪里的同时也包含了更多是什么的信息。   Image Classification 图像分类是图像识别的基础任务,它是个对于输入图像的分类器,输出图像的类别。卷积神经网络在这个任务上表现出了远胜以往的能力,相比于基于SIFT,HOG等特征的图像分类方法,基于卷积神经网络的方法有更强的高层语义抽象能力。同时卷积神经网络有着天然的平移不变性和训练可得的一定范围内的尺度不变性,这些也都是图像分类所必须的。目前图像分类的问题主要在于如何获得更强的高层语义抽象,这其中包括实践也包括理论分析方面的研究,其次是如何提高效率,毕竟神经网络所需的计算量还是相对较高的。一些相关论文,在文末有一些reference,供大家参考。   Object Detection 有了图像分类的基础之后,下面需要解决的问题是物体检测,即在给出图像类别的同时,还需给出物体所在的位置。物体在图像中的位置和大小的变化范围很大,使得上述定位问题面临着很多挑战。对于物体检测而言,一直以来的主要问题是如何提高效率以及在提高效率的同时的到更好的结果。 从概念上来说,解决物体检测中的定位问题有两种思路。其一是一种遍历的方法,即穷举图像中所有可能的区域,用图像分类的方法处理所有的区域,找到得分最高的区域即包含物体又最紧致的框。这种方法的优势是逻辑简单,只需要一个可以处理图像区域的分类器,问题是所需要的计算量太大,对于一张VGA的图像,可能的图像区域数目为百万量级(包括图像长,宽,尺度,长宽比四个维度的遍历)。 其二是一种逐渐逼近的思路,即对于一个粗略的位置用回归的方法得到一个更加精确的位置,并且多次进行以得到足够精确的位置,上图右下是“AttentionNet: AggregatingWeak Directions for Accurate Object Detection”中的配图。这种方法的优势是计算量相对较小,缺点是对于较多且密集的物体同时定位较为困难。 目前在流行的检测方法中,大多是将两种思路同时使用,大范围内使用遍历的方案,以支持多物体,多类别同时检测,小范围内使用回归的方案,以减少计算量,提升效率和精度。 使用卷积神经网络处理检测任务的一个milestone是R-CNN,思路直接来源于上面说讨论的图像分类,这里用分类神经网络遍历图像中所有的区域,以解决检测中的定位问题。 为了缓解图像中图像区域太多,用神经网络遍历计算量不可接受的问题,R-CNN中引入了proposal的方法来过滤得到图像中大概率包含物体的图像子区域,以减少神经网络的处理量。 R-CNN中对于每个图像区域直接利用神经网络做图像分类概念简单,但是有较多的计算冗余,每个图像像素会被很多个网络处理。为了减少这部分的计算冗余,SPP net引入了SPP层(后来也叫做RoI pooling 层)使得网络的大部分计算量可以在有重叠的图像区域块之间共享。 RoI pooling将R-CNN中对于图像的warp操作推迟到了图像的特征图像(feature map)上,通过栅格池化的方式将任意大小的图像区域特征变换成为固定长度的特征,以方便之后的分类器处理。 这里讨论RoI pooling跟Mask R-CNN非常相关,Mask R-CNN对于RoI pooling做了细节上的升级,我们会在之后的内容中详细讨论。 R-CNN 中通过引入proposal 方法,简化了神经网络需要处理的问题,但是引入的proposal是基于图像底层的颜色或边缘信息的传统算法,在精度和速度方面都有较大的提升空间。如何高效地利用卷积神经网络在图像的长、宽、尺度、长宽比四个维度上遍历图像区域,成为了需要解决的问题。 Faster R-CNN 通过在不同尺度,长宽比间共享特征,以及引入anchor的方式(另一个视角是在局部使用上述的逐渐逼近的思路)使得在同一个特征图像上遍历长、宽、尺度、长宽比四个维度成为可能。 近两年来,在检测,分割等多个任务中,同时使用多层特征图像进行操作取得了比单一层特征图像更好的结果。在物体检测任务中,SSD和FPN是两个比较典型的工作。SSD在多层特征图像上利用anchor进行检测,FPN更是利用高层特征辅助低层特征,以同时获得高分辨率与高层语义抽象能力。FPN在RPN和Fast R-CNN阶段都比baseline的Faster R-CNN要更精确。 从RPN的角度看,基于多层特征的anchor缓解了RPN中对于不同大小anchor使用同样特征的近似。 FPN使用多层特征和调整的训练配置,得到了很好的性能,也是本篇Mask R-CNN的基础模型。 另一个基于图像分类的图像识别任务是语义分割,与图像分类不同的是,语义分割对于一幅图像不是输出一个类别而是对于每个像素都输出一个类别。如上图所示,图像中所有属于人的像素都会被标注为人这一类。 与语义分割不同,Mask R-CNN处理的任务叫做实例分割。在语义分割中,上图中的多个人只需要被给出人的标签,而在实例分割中,算法在给出人的标签的同时,还需要区分每个人的实例。从概念上来说,实例分割可以看作是在物体检测基础上,对于每个检测框进行只关注前景的语义分割。 为了处理这个问题,Mask R-CNN 在Faster R-CNN的基础上,添加了与原始分类,框回归任务并列的Mask回归分支以输出分割预测。 至此,我们从基础的图像分类模块开始,一步一步的得到了Mask R-CNN最终的算法结构,以及所需的各个部分。   Details & Experiments 下面我们讨论算法的细节和相关对比实验。 回想我们之前讨论过的RoI pooling, 从图像上的区域到定长的输出特征,包括两步坐标变换,第一步从图像上的坐标变换到特征图像上的坐标,第二步从特征图像上的坐标变换到输出特征上的坐标。RoI pooling中这两次坐标变换都伴随着坐标的量化取整。这些量化取整使得RoI pooling对于特征对于小的坐标变化不敏感。 RoI Align移除了这两处坐标取整,对于算法的细节定位能力有明显提升。在我们内部的研究中也有类似发现。   文章在多种网络结构,检测以及实例分割任务上进行实验,RoI Align对比RoI pooling和RoI Warp 都有明显提升。 值得注意的是,使用RoI Pooling时,ResNet50 stride 16 比 stride 32 版本在性能在有着明显的优势,这也是很多相关文章使用skip layer或者dilation来减小stride的原因。 而在使用RoI Align之后,ResNet50 stride 32 提升到了与stride 16相似的程度,这是一个非常重要的实验。   从功能上来说,Mask R-CNN 需要进行分类,框回归,Mask回归三个任务,从算法发展的角度看,并行的操作是趋势,因其简单与高效性。 Mask R-CNN中,训练阶段,三个任务并行训练;测试阶段先进行分类和框回归,再进行mask回归,以得到更精确的mask,同时也可以减少计算量。 多任务联合训练相比单任务训练,取得了额外的提升   文章将每一个关键点的位置变换为一个只有一个点激活的mask,以此将关键点回归的任务转换为mask回归的任务。 使用与实例分割类似的方案,Mask R-CNN在coco 人体关键点任务上的结果比coco 2016年比赛冠军和亚军的结果都好,而其使用的方法更加简单。     References Image Classification ImageNet Classification with Deep Convolutional Neural Networks. Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, NIPS, 2012. Very Deep Convolutional Networks for Large-Scale Visual Recognition. Karen Simonyan and Andrew Zisserman, ICLR, 2015. Going deeper with convolutions. Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich, CVPR, 2015.  Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification. Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, ICCV, 2015. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. Sergey Ioffe, Christian Szegedy, ICML, 2015. Deep Residual Learning for Image Recognition. Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, CVPR, 2016.   Object Detection Rich feature hierarchies for accurate object detection and semantic segmentation. Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik, CVPR, 2014. OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks. Pierre Sermanet, David Eigen, Xiang Zhang, Michael Mathieu, Rob Fergus, Yann LeCun, ICLR, 2014. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition. Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, ECCV, 2014. Fast R-CNN. Ross Girshick, ICCV, 2015. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun, NIPS, 2015. SSD: Single Shot MultiBox Detector. Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg, ECCV, 2016. R-FCN: Object Detection via Region-based Fully Convolutional Networks. Jifeng Dai, Yi Li, Kaiming He, Jian Sun, NIPS, 2016. Speed/accuracy trade-offs for modern convolutional object detectors. Jonathan Huang, Vivek Rathod, Chen Sun, Menglong Zhu, Anoop Korattikara, Alireza Fathi, Ian Fischer, Zbigniew Wojna, Yang Song, Sergio Guadarrama, Kevin Murphy, arXiv:1611.10012 Feature Pyramid Networks for Object Detection. Tsung-Yi Lin, Piotr Dollár, Ross Girshick, Kaiming He, Bharath Hariharan, Serge Belongie, CVPR, 2017   Semantic Segmentation ImageNet Classification with Deep Convolutional Neural Networks. Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, NIPS, 2012. Very Deep Convolutional Networks for Large-Scale Visual Recognition. Karen Simonyan and Andrew Zisserman, ICLR, 2015. Going deeper with convolutions. Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich, CVPR, 2015.  Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification. Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, ICCV, 2015.  Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. Sergey Ioffe, Christian Szegedy, ICML, 2015. Deep Residual Learning for Image Recognition. Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, CVPR, 2016.   Instance Segmentation Simultaneous Detection and Segmentation. Bharath Hariharan, Pablo Arbelaez, Ross Girshick, Jitendra Malik, ECCV, 2014. Convolutional Feature Masking for Joint Object and Stuff Segmentation. Jifeng Dai, Kaiming He, Jian Sun, CVPR, 2015. Learning to Segment Object Candidates. Pedro O. Pinheiro, Ronan Collobert, Piotr Dollar, NIPS, 2015. l Instance-aware Semantic Segmentation via Multi-task Network Cascades. Jifeng Dai, Kaiming He, Jian Sun, CVPR, 2016. l Fully Convolutional Instance-aware Semantic Segmentation. Yi Li, Haozhi Qi, Jifeng Dai, Xiangyang Ji, Yichen Wei, CVPR, 2017. l Mask R-CNN. Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick, arXiv:1703.06870.  

要回复问题请先登录注册