哈喽,大家好,今天我们一起来研读一篇CV(计算机视觉)领域的重量级论文《Mask RCNN》,这篇论文由大神RGB和何凯明于2018年发表。距今已有3年之久,虽然CV领域的技术日新月异,但是,这篇论文中的很多创新之处仍然是后续理论发展的基石,我们有必要阅读、理解、掌握。
接下来,我们根据论文的结构,剖析每一部分的内容,做归纳和总结。
【注:掌握一门新算法或技术,最佳的途径之一便是读该算法对应的论文。】
第一部分:Abstract
作者提出了一种针对目标实体分割的简单、灵活、通用的框架,该框架主要作用是进行实例分割,bounding box目标检测,以及人的关键点检测。Mask RCNN是基于深度学习目标检测算法Faster RCNN的一种改进,增加一个分支。
【个人观点:论文中的这部分基本上对全篇论文做了一个简短的总结,例如:算法(创新点)是什么?作用是什么?收获的最佳成果是什么?基本上都是“吹嘘”自己的算法有多牛】
第二部分:Introduction
在简介部分,作者主要表达了四个方面的内容:
① instance segmentation 实例分割
首先是对物体进行检测,其次对每个实例进行分割。
如图-01所示:
② classical computer vision tasks 经典计算机视觉任务
主要有两个分支:
第一:目标检测
首先是目标分类,其次是bounding box定位每一个目标。
第二:语义分割
在不区分目标实例的前提下,对每一个像素点进行类别的划分。
③ Mask R-CNN
(1)mask rcnn主要是基于faster rcnn增加了一个分支用于对每个RoI(Region of Interest)预测分割任务,与此同时,另一个分支进行分类(classification)与bbox回归(bounding box regression)。
(2)mask分支是一个很小的FCN,应用于每个RoI,以像素到像素的方式预测分割mask。
(3)RoIAlign:正确地保存准确的空间位置信息。引入RoIAlign之后,使得mask的准确度提升了10%-15%。
④ 通用框架
Mask R-CNN除了能够实现分类、回归、分割任务外,还实现了人体姿态估计功能。
【个人观点:mask rcnn主要创新点在于新增了一个分支做segmentation,同时提出了RoIAlign算法,使得计算RoI的空间位置更加精准,防止数据的丢失。】
第三部分:Related work
论文该部分主要简单描述了RCNN与instance segmentation的前世今生。
【个人观点:很多论文中的这部分基本上对前人所做工作的一种肯定,表达作者现有的工作成果是基于前人的成果之上。很少有创新是无中生有的,基本上都是基于之前的创新而来。】
第四部分:Mask R-CNN
(1)这部分内容主要对创新点的详细讲解,mask rcnn的输出由三部分构成:① class label预测;② bounding box regression;③ mask分支(目标空间位置的准确提取,以及像素与像素的对齐。)
(2)损失计算
对于每一个采样的RoI进行多任务的loss计算,L_all = L_cls + L_box + L_mask,即:总的损失 = 分类损失 + box回归损失 + 分割损失。
对每一个pixel,应用sigmoid激活函数,并定义L_mask(mask损失)为平均二元交叉熵损失(average binary cross-entropy loss)。
(3)mask representation(表示)
mask会对输入目标空间布局进行编码,利用FCN(fully convolutional network)为每一个RoI预测m * m的mask。
(4)RoIAlign
该算法的提出主要解决RoI Pooling两次量化过程中,数据丢失,造成模型精度下降的问题。RoIAlign通过alignment和双线性差值计算,保留数据精度,最后通过max pooling聚类差值。
(5)Network Achitecture
Mask RCNN利用ResNet-FPN当作主干网进行特征提取,提升了accuracy和speed。我们再来看一下Head Architecture,如图-03所示:
【个人观点:创新点还是这个分支及其用的算法,关于RoI, RoI pooling和RoI Align的知识点,请参考我之前分享的学习笔记,如下所示:
笔记分享 : 一文读懂3个概念 : RoI, RoI pooling, RoI Align
】
第五部分:Implementation details
这部分内容,主要是介绍了training和testing。建议各位同学看一下该部分,内容比较多。这里通过几幅截图看一下在COCO测试集上的对比结果:
图-04:
图-05(主干网):
图-06:
图-07:
图-08:
图-09:
mask branch (ResNet-50-FPN)
【个人观点:以上ablation study(消融研究)结果对比显示用不同组件和算法,对模型的提升性能不同。】
第六部分:Mask R-CNN for human pose estimation
关键点的位置用one-hot mask表示,采取Mask R-CNN来预测K个mask,每个mask表示K个关键点类型(例如:左键、右肘等)。
如图-10所示:
在COCO测试集上关键点检测结果,如图-11所示:
box,mask,keypoint的多任务结果对比,如图-12所示:
RoIAlign vs. RoIPool 针对关键点检测对比结果,如图-13所示:
【个人观点:在keypoint detection环节,作者对比了不同组件对模型性能的影响。RoIAlign还是最优的选择。】
这是论文的主要解读部分,后续我还会分享关于mask rcnn的项目实战案例,欢迎大家继续关注后续内容的更新。