我们可以进一步扩展这些技术,定位到每个对象的精确像素,而不是仅限于边框吗?这个问题就是经典的图像分割问题。何恺明和Girshick等研究人员,在Facebook人工智能研究部门里使用了一种被称为Mask R-CNN的网络结构来探索这个问题。 图16:Facebook 人工智能研究部门的研究员何恺明是Mask R-CNN网络的主要作者,也是Fast R-CNN的共同作者。 和Fast R-CNN、Faster R-CNN很相似,Mask R-CNN的基本思想是简单直观的:Faster R-CNN在物体检测上效果很好,那么我们能否将其扩展并应用到像素级分割?
图17:在Mask R-CNN中,Faster R-CNN的CNN特征顶部添加了一个完全卷积网络(Fully Convolutional Network),用来生成掩码(分割输出)。特别注意网络的掩码输出是怎么与Faster R-CNN网络的对象分类器和边界框回归网络实现并行的。 Mask R-CNN通过向Faster R-CNN网络添加一个分支来输出一个二进制掩码,来说明给定像素是否为对象的一部分。在图17中的白色分支仅仅是CNN特征图谱上的完全卷积网络。 该模型的输入和输出分别为: 输入:CNN特征图。 输出:在像素属于对象的所有位置上都具有1s的矩阵,其他位置为0s,这种规则被称为二进制掩码。 但Mask R-CNN网络的作者不得不进行一次小小的调整,使这个训练按预期往前推进。 RoiAlign:重新对齐RoIPool,使结果更准确
图18:图像舍弃RoIPool技术,通过RoIAlign技术传递,使得由RoIPool选择的特征图谱区域更精准地对应原始图像的区域。这是很有必要的,因为与用边界框确定坐标相比,j2直播,像素级分割需要更精细的像素对齐。 Mask R-CNN作者发现,在最初的Faster R-CNN网络结构中, RoIPool所选择的特征图谱区域与原始图像的区域略微不对齐。由于图像分割需要像素级特异性,与边框确定过程不同,这自然就导致了不准确。 作者通过调整RoIPool方法,实现更准确的对齐,巧妙地解决了这个问题,这个调整后的方法叫做RoIAlign方法。
图19:我们该如何准确地将原始图像的感兴趣区域映射到特征图谱上? 假设我们有一个尺寸大小为128x128的图像和大小为25x25的特征图谱。如果我们想要在特征图谱中表示原始图像中左上角15x15像素的区域,该如何从特征图中选择这些像素? 我们知道原始图像中的每个像素对应于特征图谱中的25/128个像素。要从原始图像中选择15像素,我们就在特征图谱中选择15*(25/128)=2.93个像素。 在RoIPool中,我们会舍弃小数点后的部分,只选择2个像素,导致轻微的错位。然而,在RoIAlign中,我们避免了这样的舍弃。相反,我们使用双线性插值来精确地得到这2.93像素中的信息。这样子在很大程度上避免了RoIPool方法造成的像素错位。 Mask R-CNN在生成这些掩码后,将它们与Faster R-CNN输出层的对象类别和边界框组合起来,产生了奇妙的精确分割。
图20:Mask R-CNN能够对图像中的对象进行分割和分类。 未来展望 在过去短短的3年时间里,我们看到了对图像分割问题的研究,是如何从Krizhevsky等人的R-CNN,经过不断发展,最后得到Mask R-CNN的奇妙分割效果。 单独来看,Mask R-CNN所呈现的结果似乎是无法达到的巨大飞跃。然而,我希望大家通过这篇文章可以认识到,这些成果,实际上由多年来辛勤工作和团队合作带来的直观、渐进式提升累积而来。R-CNN、Fast R-CNN、Faster R-CNN和最终的Mask R-CNN,每个想法并不一定都是跨越式的进步,但是叠加这些进步后,最终的Mask R-CNN却带来了非常显著的奇妙效果,使目前的计算机视觉技术向人类的视觉能力更靠近了一些。 (责任编辑:本港台直播) |