快速回顾 R-CNN Family
Region-based Convolutional Neural Networks (基于区域的CNN)
主要思想:使用selecting search,它可以确定候选框的数量和ROI。然后从每个区域中独立提取CNN特征进行分类
Model Workflow
1、预训练CNN网络,例如对VGG或ResNet进行ImageNet数据集训练
2、通过seective search提出 proposal regions(ROI),这些区域可能包含目标对象,并且它们的大小不同
3、将proposal regions warped成相同大小,这是由于CNN要求输入相同的大小
4、微调CNN
5、给定每个图像区域,通过CNN的一次正向传播会提取特征向量。使用SVM进行分类。
6、减小localization error,训练回归模型来调整预测的bounding box
Bounding Box Regression
g=(gx,gy,gw,gh)的中心进行尺度不变变换scale-invariant,高度和宽度进行对数尺度变换log-scale transformation
标准回归模型可以通过正则化将SSE loss最小化来解决
值得注意的是并非所有的 predicted bounding 都有 ground truth box,在这里仅保留IOU大于0.6的predicted bounding用于bbox 回归模型的训练
NMS(Non-Maximum Suppression)
Speed Bottleneck
(2)整个过程缺少shared computation,整个过程包括CNN提出特征和SVM分类和回归模型预测bounding box
Fast R-CNN
主要思想:为了加速R-CNN,将三个独立的模块统一到一个共同的训练框架中并且增加了共享计算结果(shared computation result)来改进训练过程。不在为每一个region proposal提出CNN特征,而是对整个图像提出特征,所有region proposal共享这个特征矩阵。
ROI Pooling
1、首先,在图像分类任务上预训练CNN网络
2、通过选择性搜索Propose regions
3、更改预训练的CNN:
(1)用RoI pooling layer替换经过预训练的CNN的最后一个最大池化层。RoI pooling layer输出region proposals的固定长度特征向量。共享CNN计算非常有意义,因为同一图像的许多Propose regions高度重叠。
(2)将最后一个完全连接的层和最后一个softmax层(K个类)替换为一个完全连接的层,并在K + 1个类上替换softmax。
4、最后,模型分为两个输出层:
(1)K + 1类的softmax估计量(与R-CNN中相同,+ 1是“背景”类),每个RoI输出离散的概率分布。
(2)bounding - box 回归模型,针对K个类别中的每个类别,相对于原始RoI预测偏移。
多任务loss function 结合了classification loss和bounding box regression
忽略背景ROI,即那些分类为无类别的ROI
Faster R-CNN
主要思想:它是第一个端到端,第一个近实时的深度学习检测器。它的主要贡献是引入了 RPN,使区域提议近乎无时间损耗。它将区域提议、特征提取、边界框回归集成在一个统一的,端到端框架中。通过构建一个RPN(regionproposal network)和具有共享卷积特征层的Fast R-CNN。
1、预训练CNN
2、微调RPN(region proposal network),该任务由训练前图像分类器初始化。正样本的IoU> 0.7,而负样本的IoU <0.3。
在整个图像的转换特征图上滑动一个小的nxn空间窗口。
在每个滑动窗口的中心,我们同时预测各种比例和比率的多个区域。anchor是(滑动窗口中心,比例,比率)的组合。例如,每个滑动位置有3个比例+ 3个比率=> 9个anchor。
3、使用当前RPN生成的 proposals 训练Fast R-CNN的对象检测模型
4、然后使用 Fast R-CNN 网络初始化 RPN 训练。在保留共享卷积层的同时,仅微调RPN特定的层。在这个阶段,RPN和检测网络具有共享的卷积层
5、最后,微调 Fast R-CNN 的 unique layers
6、如果需要,可以重复步骤4-5来训练RPN和Fast R-CNN。
其中
Mask R-CNN
10000+人已加入「大毛CV」
敬正在努力的我们!