摘要
作用:物体检测+产生一个切割mask
和
FasterR−CNN
区别:能生成一个检测框
1. 简介
1.1 基础扫盲
物体检测:
Fast/Faster R−CNN
通常包含两个问题,一是判断属于某个特定类的物体是否出现在图中;二是对该物体进行定位(常用表征就是物体的边界框)可实现输入测试图片,输出检测到的物体类别和位置。
语义分割
Fully Convolutional Network (FCN)
简单而言就是给定一张图片,对图片上的每一个像素点分类
实例分割
物体检测和语义分割的综合体。相对物体检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割可以标注出图上同一物体的不同个体
1.2 目标与方法
目标:
instance segmentation
的优化
方法:在
FasterR−CNN
基础上,多一个
branch
(就是一个应用在ROI的FCN)计算量上多了一点但是模型可以更快更好。
说明:
1.
FasterR−CNN
不能实现输入到输出像素级别的
alignment
,使模型在特征提取上受限;
改进(很小):
新加一个层
RoIAlign
,将RoIPool所选择的特征图谱区域与原始图像的区域进行对齐。
效果(明显):
1. 将mask的准确率提高10%~50%
2. mask和分类去耦合对每一类进行mask的预测,不用在类之间比较,同时预测物体类别(?)
2.相关工作
2.1 R-CNN
R-CNN的目标是分析图像,并正确识别图像中主要对象,通过边界框标出对象的具体位置。
- 输入:图像
- 输出:图像中每个对象的边界框和标签
Step1:利用
selective search
算法找到大约2000个
region proposal
Step2: 利用CNN对每个
region proposal
提取上述区域的特征(即使这些区域大多是重叠的),通过SVM确定边框中的图像类别;
Step3:对每个分好类的
region proposal
做
bounding−box regression
纠正,应用LinearRegression,输出更紧密的边框坐标。
2.2 Fast R-CNN
R-CNN不足
- 单个图像的每个 region proposal 都需要CNN进行判断,每次判断大约需要2000次FP。
- 此网络必须单独训练三种不同的模型:提取图像特征的CNN网络,判断类别的分类器和缩小边框的回归模型,使得训练复杂
引入
ROIPooling
最后一个卷积之后加了RoIPool层,然后使用池化操将所有RoI统一成一样大小。
概括:RCNN先找再卷积;Fast RCNN先卷积再找
优化损失函数
使用
multi−taskloss
做完训练时的损失函数,将
bounding−box regression
直接加入到CNN网络中训练。
整合单元模型
Fast R-CNN将CNN、Classifier和LR整合成一个单输入双输出的网络。具体而言在CNN输出层用softmax函数代替了SVM分类器,来输出对象类别;同时在CNN输出层,还加入了用来输出边界框坐标的线性回归层。这样单个网络就可以输出所需信息。
所以,这个过程可以理解为:
Step1: 利用
selective search
算法找到大约2000个
region proposal
;
Step2:原始图像一次卷积得到
feature map
;
Step3: 将原始图像和
feature map
进行映射,在
feature map
中找到:
region proposal
,然后进行
RoI Pooling
,变成一样尺寸大小的,再输入
Fc
;
Step4:最后输入两个softmax:判定是否含有object、给出
bouding box
的值。
整个模型的输入和输出分别为:
- 输入:带多个区域建议的图像。
- 输出:具有更紧密边界框的每个区域的对象类别。
2.3.2 Faster R-CNN
Fast R-CNN的不足
仍然依赖
selective search
region proposal
给出的结果,而寻找
region proposal
本身就是一个很大的开销。
出发点:
优化对单独运行选择性搜索算法的方式,重复利用多个
region proposal
中相同的CNN结果,几乎把边框生成过程的运算量降为0
提出
Region Proposal Network(RPN)
其核心思想是使用卷积神经网络直接产生
region proposal
(主要是认为
feature map
中每一个像素点都是原图中一部分的映射得到的,所以直接根据
feature map
在原图中找到若干
region proposal
)
Step1:对于原图进行一次CNN输出一张
feature map
,尺寸记为
m∗m
;
Step2:对于
m∗m
个点,在原图中找9个
anchor
,一共是
m∗m∗9
个;
Step3:上述
anchor
同样经过两个softmax(和fast r-cnn一样),取topN个结果返回