前言
有一些图像分割的背景知识也很有意思,简单列下, 概述下来,主要是五大任务, 六大数据集, 七大牛人组,一个效果评估。
五大图像处理任务
1. 图像分类
2. 分类和定位
3. 目标物体检测
4. 语义分割
一下子从框的世界进入了像素点的世界。
5. 实例分割
六大图像数据库
1. PASCAL Visual Object Classes (VOC) 挑战
人、车、自行车、公交车、飞机、羊、牛、桌等20大类
2. MS COCO: Microsoft Common Object in Context
80大类, 多目标
3. ImageNet Object Detection: ILSVRC DET 任务
200类别,578,482 图片
4. Oxford-IIIT Pet Dataset
37 类别,每个类别 200 图片
5. Cityscapes Dataset
30 类别,25,000 + 真实开车场景图片
6. ADE20K Dataset
150+ 类别,22,000 + 普通场景图片
七大牛人组
1. Navneet Dalal 和 Bill Triggs (INRIA)
两人提出了Histogram of Gradient (HOG) 获得2015年的 Longuet-Higgins Prize大奖
2. Pedro Felipe Felzenszwalb
和学生Ross Girshick一起发明了DPM,深化了HOG.
3. Ross Girshick
Felzenszwalb的高徒, RBG大神、发明了R-CNN、Mask R-CNN。 Ross目前在Facebook人工智能研究院 FAIR。
4. Koen van de Sande
提出Selective Search的大神。
5. Jitendra Malik
去噪模型Perona-Malik扩散和聚类分割里面的归一化分割Normalized Cut的发明人, RBG大神的博士后导师,鼓励RBG引入CNN做目标检测, R-CNN发明人之一。
6. Pietro Perona去噪模型Perona-Malik扩散的发明人, 李飞飞的博士导师, 2013获得Longuet-Higgins Prize。 和高徒Piotr Dollar一起提出Fast Feature Pyramids的神器。他的另外一个高徒Stefano Soatto搞出了 Structure From Motion SFM,视觉运动信息的多幅二维图像序列估计三维结构的技术。 他弟子Piotr Dollar目前在FAIR。
7. 何凯明ResNet,SPP, Mask-CNN发明人,目前在FAIR。
一个效果评估mAP(mean average precision) 借用了文档检索里面的标准, 假设目标物体的预测在所有的图像中都进行预测, 在每个图像上计算准确和召回。 但是最后计算每个目标物体的AP的时候, 仅仅选用相关的图像,进行平均average, 最后计算mAP的时候再求平均mean。 是一个奇怪的名字,却是一个蛮直观的评价!
R-CNN系列
R-CNN的横空出世, 随后经过一系列改进, 走到了Mask R-CNN和Mask^X R-CNN的神奇境界。
CNN结构上从AlexNet过渡到ResNet, 中间也受到Overfeat和SPPNet的影响深远!
一, R-CNN的前世
2013年之前, 基本由RBG和他导师的DPM主导, 当然离不开SS和SVM的应用,和后续Box Regression的修正。
1. Histogram of Gradient (HOG) 特征
8x8像素框内计算方向梯度直方图
2. HOG Pyramid
特征金字塔,对于不同大小的物体进行适应。
3. HOG特征 -> SVM分类
4. DPM模型 Deformable Part Model
加组件组合的HOG特征, 组件间计算弹性得分,优化可变形参数。
如果没有弹性距离,就是BoW (Bag of Word)模型, 问题很大, 位置全部丢失:
n个组件的DPM计算流程
5. Selective Search 思想
首先, 过分割后基于颜色纹理等相似度合并,
然后,过分割、分层合并、建议区域排序
6. 基于****Selective Search + DPM/HoG + SVM的物体识别
7. AlexNet的图像分类
2012年AlexNet赢得LSVRC的ImageNet分类竞赛。深度CNN结构用来图像特征提取。
8. bounding-box regression 框回归
BBR 在DPM时代就和SVM分类结合,一般直接使用线性回归,或者和SVR结合。
二, R-CNN的出世
这个工作是RBG在Malik那里读博士后的产出。 这个工作的影响巨大!
1.1 R-CNN的本质, 用深度CNN网络取代了HoG/DPM的特征提取!
1.2 R-CNN依赖分类预训练的特征
1.3 通过bounding-box regression改进效果,对于SS推荐的, 经过SVM分类的结果进行修正。
这样,我们就得到了最后RNN的框架,我们看到区域推荐、SVM和Bound Box Regression都是成熟的技术的整合:
R-CNN优点:
1. 效果比DPM方法大幅度提高
2. 开启了CNN网络的目标检测应用
3. 引入了BBR和分类结合的思想
4. 定义了RoI, 基于推荐区域的思想
R-CNN问题:
不是端到端的模型,依赖SS和SVM!
计算速度相当慢!
对于过大过小的东西,效果很不好。
譬如,对于长凳, 或者眼镜等等。
三,MR-CNN的改进
Multi-Region的提出, 开始对Box进一步做文章, 相当于对Box进一步做增强,希望改进增强后的效果,主要改善了部分重叠交叉的情况。
但是特征拼接后使得空间变大,再使用SVM处理, 效果和R-CNN基本类似。
MR-CNN改进有限!
四, Overfeat的改进
LeCun的Overfeat是个端到端的模型,直接抛弃了SVM,并且把BBR整合一起使用FCN(Fully-Connected Net)搞定, 解决了后面一端的问题(取代了SVM和BBR)。
另外, 也直接抛弃了SS,采用CNN上滑动窗口来进行框推荐,搞定前面一端。
然后直接根据滑动窗口的不准确的判断, 进行Box 回归(BR)来进行准确定位。
并且在计算上做了三大优化: 第一, 先进行CNN再滑动窗口, 而不是先滑动窗口再进行CNN计算。 把窗口滑动放到CNN之后进行。 避免重复的特征计算。
第二, 多类别并行计算框架, 进一步减少CNN特征计算因为没有找到特定类别而浪费。
第三, 把FCN直接用CNN网络取代, 计算量大大减少。怎么做到的呢? 结合上面两点, 利用每个类别实现一个0-1的CNN网络, 然后所有类别并行处理。
还做了一大改进, 考虑了多尺度衍生:
Overfeat优点:
1. 端到端的模型
2. 回归和分类结合的计算模型
3. 首次将区域计算后移, 极大节省计算量, 优化速度
4. 有多尺度考量,试图优化极大极小目标问题
Overfeat问题:
1. 取消区域推荐, 依赖窗口滑动和BR效果后的推荐效果一般。
2. 定位准确, 但是对于重叠目标物体的情况,效果很差。
五, SPPNet的改进
这个工作是何凯明在孙剑指导下, 微软的工作。 后来孙剑去了旷视科技, 而何凯明去了Facebook人工智能实验室FAIR。 前面, 我们提到R-CNN和Overfeat都存在部分多尺度,重叠效果的问题。 某种意义上, 应对了HoG特征, 这样对于物体来说类似BoW模型, 我们知道DPM里面,是带有组件空间分布的弹性得分的, 另外也有HoG Pyramid的思想。 如何把Pyramid思想和空间限制得分加入改善多尺度和重叠的效果呢? MR-CNN里面尝试了区域增强, Overfeat里面尝试了多尺度输入。 但是效果都一般。 这里我们介绍另外一个技术Spatial Pyramid Matching, SPM。把空间和Pyramid结合的思想。
1. SPM
把BoW修改金字塔Pyramid方式进行空间限制,做特征提取。
- SPM用在CNN特征之后,R-CNN里面 SVM分类之前。
3. 基于CNN的Pooling技术来实现SPM, 通过不同尺度的Pooling技术很容易就实现了CNN特征的SPM特征。
4. 先特征后区域的处理, 某种意义上取代了多尺度输入,或者特征增强。
和R-CNN相比做到了先特征后区域, 和Overfeat相比自带Multi-Scale。
于是SPPNet(Spatial Pyramid Pooling Net)很空出世!
SPPNet优点:
1. 提取SPP的概念, 把CNN的Pooling用的出神入化, 取代了HoG Pyramid的改进。 对于大小尺度的物体识别有改进。
2. 进一步强调了CNN特征计算前移, 区域处理后移的思想, 极大节省计算量。
SPPNet缺点:
1. 依然不是端到端的模型
2. 过于注重CNN特征的分离, CNN特征提取没有联动调参数!
Fast R-CNN的改进
RBG从后来去了微软,在微软了解了何凯明的SPPNet工作。 所以Fast R-CNN 基本和SPPNet类似, 但是进一步联动改进!全部打通区域推荐之后到目标识别后一端!而且效果较好!
基于SPPNet, Fast R-CNN做了两大改进:
一, 简化SPP成为RoI Pooling, 只用了最细分的SPPNet。 把RoI区域变成了RoI Pooling, 这就是RoI Pooling的思想的来源。 Pyramid上层更粗的特征, 可以依赖FCN进行整合学习。
二, CNN特征网络联动调参数!
这样, Softmax分类误差和线性回归误差叠加的误差, 可以反传通过FCN, ROI Pooling和ConvNet层。
Fast R-CNN优点:
1. 吸收了SPPNet和R-CNN的精华,极大的打通并且改进了从区域推荐到目标检测一端。
2. RoI Pooling技术横空出世, 极大的发挥了区域计算后移的优势, 加快了训练速度。
3. Log 损失和Smooth L1的损失下的FCN、RoI Pooling、ConvNet三层联动调参数成熟, 并且带来效果上的提升。
4. 并且应用VGG16,取代AlexNet作为CNN网络模型
Fast R-CNN缺点:
1. 依然没有实现端到端的模型,对SS区域推荐依赖严重。
Faster R-CNN的改进
SPPNet和Fast R-CNN都面临着并非端到端模型的困惑, 那么RBG、何凯明和孙剑, 微软的3位牛人合作开启了端到端模型的开发。
提出RPN(Region Proposal Net)取代了SS区域推荐。 RPN有点类似Overfeat的ConvNet的滑动窗口, 但是加入了Anchor Box的设计。
在Overfeat的ConvNet上的滑动窗口, 加上Multi-Scale的图像输入设计, 编程了带Anchor Box推荐的区域Pyramid。 这种机制, 某种意义上是带了先验的Attention机制。
这样 RPN的Anchor和Pyramid和定位都可以是参数学习, 例如:9 anchors x 2 scores x width x height。
如果在考虑ROI Pooling对推荐区域的修正作为新的RPN,就会带来ROI Pooling的迭代:
所以最初, RPN的损失是单独计算进行参数学习的。
但是后来, RPN的误差也全部整合处理了, 一个端到端的模型诞生,并且具有较好的区域推荐、特征Pyramid,和Box回归的效果保证。
Faster R-CNN优点:
1. 和Overfeat一样是一个端到端的模型, 但是集成了以前图像处理里面的思想: 区域推荐, 特征Pyramid和Box回归。
2. 较好的ConvNet特征共享, 效率更高
3. 提出了RPN网络,并且整合后的效果和Fast R-CNN一样
Faster R-CNN缺点:
1. 依然难以做到实时高效
2. 功能上没有进入实例分割阶段。
小结
我们发现, 单纯的端到端ConvNet模型的Overfeat很难达到较好的效果。 如何融合图像处理经典思想里面的区域推荐, 特征金字塔, 和框回归,还是非常有必要。 而Faster R-CNN做到了这些。 这个过程中一直伴随着性能的提升, 其中重要一步就是如何让特征计算不要重复,做到一次计算。 如何进一步提高速度, 和增强功能, 是后续网络的要改进的地方。 例如, 我们发现ConvNet的计算在Faster R-CNN已经达到很高的共享, 但是ROI之后依然有ConvNet的计算, 如何进一步共享这部分计算呢?
天下武功唯快不破!
所以在如何让检测更快? 主要有两种思路:
1. 把好的方法改进的更快!
前面我们提到了从R-CNN到Faster R-CNN主要的技术思想就是避免特征计算浪费。 所以要把ConvNet特征计算前移,只做一次计算。 而把区域操作后移。 我们也提到Faster R-CNN在RoI之后还有部分ConvNet的计算。 有没有可能把ROI之上的计算进一步前移? R-FCN(Region-based Fully Convolutional Networks) 基于这个思路,做到了,所以更快, 某种意义上,是Fatest R-CNN。
R-FCN
2. 把快的方法,改进的更好!
前面我们谈到overfeat的效果一般, 但是overfeat基于滑动窗口和回归思想的速度很快。 从效果上来说, overfeat 的效果一般, 对于重叠情况很多不能识别的情况。 如何将基于回归的思想,做到逼近区域推荐的效果?YOLO把分而治之和IoU的思想集成进来了。 而SSD把多尺度Anchor Box的思想集成进来了。
除了快还有什么?当然是做优做强
Faster R-NN有三大主要部件, RPN 做区域推荐, RoI Pooling类似特征Pyramid,改善极大极小重叠, 分类和Box回归的Log 加 Smoothed L1 损失, 针对定位修正。 如何要做优做强?
能否比RPN做的更优?
前面我们提到RPN能够达到Selective Search的效果, 那么假如还要更好, 怎么能够做到?AttractioNet利用了NMS(non-maxima suppression)效果。 AttentionNet利用了弱注意力集中的机制。
能否比RoI Pooling做的更优?
前面我们提到RoI Pooling能够做到和HoG Pyramid和DPM空间限制类似的SPM的效果, 那么加入还要更好, 怎么能够做到? ION(Inside-Outside Net)提出了四方向上下文的思想, FPN提出了特征Pyramid网络。
能否比RoI Pooling做的更强?
前面我们提到RoI Pooling是建立在RoI基础上的, 对应的区域推荐, 如何进一步对齐到像素点? Mask R-CNN提出了RoI Align的思想。 在误差计算中,除了分类, Box回归基础上再加入像素点Mask Branch距离的思想。
那么, 什么是FCN(Fully Convolutional Networks), IoU, NMS, Weak Attention Narrowing, ION, FPN, RoI Align 和 Mask Branch思想?理解了这些, 你对厦门这个图,就不再陌生!
下面, 开启下半场的路程!
R-FCN
前面我们提到, Faster R-CNN打通前后端成为端到端的模型的同时, ConvNet模型也换成了VGG-16的模型。 但是在GoogLeNet和ResNet网络结构上, 全连接FC层就只有一层了, 最后一层,为Softmax分类服务了。
那么, 如果要把GoogLeNet和ResNet应用到Faster R-CNN中去,就面临一个现象,去掉最后一层FC层, 因为那是用来做分类的。 需要换到新的尾部网络, 能够兼容分类和Box回归。
这样, 我们再来看RoI Pooling的使用, 那么RoI Pooling后面的FC层也要换成卷积层。 这样, 卷积层就被RoI Pooling层隔断了。 而且这种隔断使得RoI Pooling后面的ConvNet重复计算了。
一个问题, 能不能直接把后面FCs变成ResNet之后的ConvNet直接丢弃? 不行, 这样的效果会打折扣, 为什么? 我们在Fast R-CNN继承SPPNet的SPM技术, 演绎出RoI Pooling的时候讲了,RoI Pooling只是相当于最细分的区域固定, 那么粗粒度的部分, 可以由后续的多层FCs来达到类似的效果。 如果去掉, 就少了金字塔结构了,或者少了深度了。
那么, 如何把RoI后面的卷积计算也移到前面去?就是R-FCN解决的问题!一方面要保留空间限制, 另一方面要有一定特征层次。 R-FCN提出了Position-Sensitive RoI Pooling。
Position-Sensitive RoI Pooling的思想, 正式将位置并行起来, 是一种结合了空间信息的的注意力机制。 每个小的子框数据来源一个和特点位置绑定的ConvNet特征层。
一旦和位置绑定了, 那么特征计算, 就从以前的中心点, 变成了一系列从上下左右的不同子框去看的特征图。 那么再把这些组合起来。 即暗含了不同空间信息。类别的说,就是你先上下左右的看这个山峰, 回头把看的拼接起来, 判断山峰有没有认错。 选择好不同位子的特征,再整合起来, 得到在不同位子点确认的特征, 再做Pooling, 通过Pooling进行投票。
这样的效果就是, 把特征计算放在前面, 而把位置信息拼接投票放在最后处理。 而不是先通过位置划出特征, 然后把带位置的特征先融合,再做分类和回归。 这里直接进行位置投票。 要注意的PS RoI Pooling和RoI Pooling并不是一个Pooling。
R-FCN优点:
清楚的关联了速度提升和ConvNet特征共享的关系。
通过不同位置为注意力的并行特征计算,再极好的利用Pooling来投票, 取代了RoI Pooling后续计算的计算要求。
速度快, 效果好的均衡下的推荐选择。
R-FCN问题:
依然无法实现视频基本的实时(每秒24帧图像)。
功能上没有涉及到像素级别的实例分割
YOLO
其实, 我们前面提到了Overfeat效果不好, 一个很大原因就是Overfeat没有专门为了提高召回率的区域推荐机制。 而有区域推荐RPN的Faster R-CNN慢的一个重要原因,就是RPN的计算量基本也够计算Overfeat了。 所以它是两个阶段。
Overfeat开启了一个阶段端到端的神话, 但是效果却不好。 如果不使用区域推荐机制的情况下, 仅仅依靠分类和回归的话, 如何进一步提升召回率呢?
如何改善滑动窗口呢?
1. 分而治之判断类别
2. 分而治之, 预测框
3. 合并类别和不同框
这里面一个问题,就是如何选择框, 用到IoU(intersection over union)。 有两个步骤:
- 先根据类别数预测不同的框, 譬如3个物体(狗,自行车,和车), 那么就会对应到回归3个框。
2. 判断是物体应该对应哪个框呢?这个交集占并集比会决定应该用哪个框。
根据经验, 发现对于VOC2007的数据分析有如下结论:
这样YOLO的损失函数考虑了, 1)框回归, 2)是否有物体, 和有哪个物体, 3)另外就是区域最合适的物体。
前面我们提到, Faster R-CNN 已经很快了, 但是做不到实时, 因为视频要求1秒24帧以上。 既然YOLO很快, 那么必然用到视频中去了。 如果再视频中, 还可以进一步优化YOLO到Fast YOLO更快。 更快,就是共享! 对的, 共享了类别的概率图Class Prob. Map。 通过修正而不是重新学习。 所以更快!
YOLO优点:
1. 典型的回归加分类模型和单一的CNN网络
2. 分治思想很好
3. 实时性很好, 基本上接近1秒24帧的标准。
4. 比Select Search找的框少很多(区域推荐更看重召回率)
YOLO问题:
- 准确率不高, 不如Faster R-CNN和R-FCN
2. 小物体,不规则物体识别差
3. 定位精度不高
YOLO-v2
如何进一步提高YOLO的准确度呢?记得RPN里面利用了各种框的长宽比先验知识么? Anchor Box。 大概5种左右的框就占据了60%的情况。
这样,把单纯的框预测, 变成带先验的框预测, 就是长度和宽度拥有一定的先验。
其他一系列改进技巧, 使得YOLOv2 要比YOLO好!你会看到下面, 提升最大的是dimension priors。 所以尺度计算一个先验分布的帮助很大!
然后采用了DarkNet19的网络, 速度变得更快。
YOLO9000, 分层的物体标签实现wordtree。
YOLO-v2优点:
1. 引入BN(Batch normalization) (%2 mAP改进)
2. 高分辨率图片(448x448), 改善小物体识别 (4% mAP改进)
3. 更细化的分块(13x13) (1% mAP改进)
4. 引入Anchor框 ( K-means ) (81% 召回 到 88% 召回)
YOLO-9000优点:
5. 分层的结果标签 COCO ImageNet
YOLO-v2问题:
- 没有实现实例分割。
SSD
和Anchor Box思想和Pyramid思想一致, 引入多尺度和多默认比例。
多尺度CNN网络采用类似GoogLeNet的那种分层输出模式。
所以结合起来,就有了SSD如下网络:
从SSD的网络可以看到, 这个多尺度是并行实现的。
SSD优点:
1. 在YOLO基础上引入多尺度特征映射, 并且分成ConvNet并行实现
2. 引入Anchor Box机制
3. 和YOLO比效果更好, 速度更快
SSD问题:
1. 效果很难突破R-FCN和Faster R-CNN
AttentionNet
主力集中的思想比较简单:
和区域推荐相比有一定优势:
而这个注意力迁移的过程, 可以解读为左上点和右下点相互尽可能靠近的一个过程:
整个过程循环迭代, 直到检测的比较精准为止。
这种注意力移动的过程,也必须和具体目标对应起来, 才能应用到多目标的情况下:
所以说, 不同类别就可以配置成并行的结构框架。
这样的话, 多个目标实例都要拥有一个这样的注意力移动的过程。 而多个实例,就也可以并行实现。
这样的话, 采用两阶段过程, 第一步先找到每个实例对应的一个大框, 第二步, 细化找到准确的框。
AttentionNet优点:
全新的区域查找方式
对比R-CNN,效果有提升
AttentionNet问题:
多实例的方式较为复杂
移动迭代,计算量过大
AttractioNet
(Act)ive Box Proposal Generation via (I)n-(O)ut Localization (Net)work, 如何框优化?
一) 更集中注意!
二) 更细化定位
如何细化定位?
通过对物体分布概率的在横轴和纵轴上的裁剪。
对应的网络结构ARN(Attend & Refine),然后反复迭代, 最后通过NMS矫正。 这个过程是不是和RPN结构加RoI Pooling迭代过程有点类似。 不一样的地方, 每个ARN的框推荐都会被用上,使用NMS进行修正。
而ARN和之前RPN结构不太一样, 它的横轴和纵轴是分别细化,然后通过In-Out 最大似然度来定义的, 也就是前面的那个细化的示意图。
上面解释了ARN, 那么NMS是什么呢?其实就是一个局部求最值的过程!
NMS修正的过程,效果能从多个框中找到一个最符合的框, 有点类似投票。
AttractioNet优点:
实现提出迭代优化区域思想
AttractioNet 要比Selective Search效果更好
基于CNN网络上的区域推荐
AttractioNet问题:
反复迭代会降低运行速度
网络结构复杂, 不如RPN简单
G-CNN
Grid-CNN 吸收了YOLO分而治之的思想。 然后进行区域合并。
但是它不是简单的合并, 而是采用迭代优化的思路。
这个过程和NMS非常不一样, 通过反复的IoU计算, 优化迭代。
为了避免特征的反复计算,它把特征计算作为全局步骤, 而把回归反复优化的部分称为回归部分。
你可以看到回归框的移动过程:
G-CNN优点:
通过迭代优化替换了类似NMS的简单的合并。
效果比Faster R-CNN要好点
通过分而治之, 速度要比Faster R-CNN快点。
G-CNN问题:
- 速度依然太慢,难以实时应用
ION
Inside-Outside Net是提出基于RNN的上下文的目标检测方法。 对于图像上下左右移动像素, 用RNN来编码, 称为这个方向上的上下文。
这样, 实现了4方向RNN上下文, 用来提取上下文特征。
并且设置了RNN堆栈来强化不同粒度的上下文。
所以R-FCN里面对空间限制进行迭代编码类似, 不过这次不是人为划分框的位置, 而是通过IRNN直接编码。
对比添加上下文和没有上下文的网络设置区别。 对比得到IRNN可以提高2个mAP的提升。
ION优点:
提出RNN上下文的概念
对小物体的识别的效果提升
比R-FCN效果要佳。
ION问题:
- RNN计算量增加,速度变慢
FPN
如何将特征金字塔融合成神经网络,为了避免重复计算。
有了特征金字塔,有什么好处呢? 对于不同大小的物体可以在不同缩放上进行分割。
这样,在每个层次就可以利用类似的尺度来发现目标物体。
做到各个尺度的兼容:
FPN优点:
多尺度和小物体的融合考虑
速度和准确率的兼容
可以广泛的结合, 提高不同模型的效果
FPN问题:
- 需要多层计算,增加计算量
Mask R-CNN
稍微回顾一下, 第一次提出RoI, 再R-CNN里面
第一次提出RoI Pooling在Fast R-CNN里面
第一次提出 RPN在Faster R-CNN里面:
到了Mask R-CNN, 做了什么改进呢?提出了RoI Align , 方便后面增加的Mask Branch, 对应到像素点。
什么是mask?
有了Mask之后, 我们能实现实例分割了
那么, RoI Pooling和RoI Align的区别在于哪里呢?如何能够精确的反向找到对应像素点边缘? 这样的话,就要求对Pooling的划分不能按照Pooling的边缘, 而是要按照像素点缩放后的边缘。
而用Pooling的话, 就会有偏差, 这种偏差对应到像素的Mask上就会找不准边界, 之前有人利用RoI Wrapping进行插值矫正。
对于Mask和分类,回归学习, 即可以基于FPN或者就是RoI Align的特征
Mask计算的先驱:
1. MNC(Multi-task Network Cascade)的RoI Wrapping, 插值估算
2. FCIS (Fully Convolutional Instance Segmentation)的positional aware sliding masks
RoI Align要比Segment要好很多!
在加上人体姿势的17个关键点
Mask R-CNN优点:
ROIPool 到 ROIAlign (借鉴了ROI Wrapping)
Mask的预测 (借鉴了MNC和FCIS)
State-of-Art的效果
轻微调整可以做人体姿态识别
Mask R-CNN问题:
速度不够快
像素预测需要大量训练数据
Mask X R-CNN
带Transfer learning的Mask R-CNN。
效果提升:
小结
给一个概要的takeaway:
速度优先:SSD算法
速度和效果均衡: R-FCN算法
效果优先:Faster R-CNN, Mask R-CNN
一网多用:Mask R-CNN
对于实践开发:
另外matterport公司在github上对Mask R-CNN的开源实现, https://github.com/matterport/Mask_RCNN 。
Ross Girshick, “CVPR 2017 Tutorial on Deep Learning for Objects and Scenes”
https://www.robots.ox.ac.uk/~vgg/rg/slides/vgg_rg_16_feb_2017_rfcn.pdf