==1==rcnn/fast_rcnn/faster_rcnn/mask_rcnn (目标检测与目标实例分割 论文理解)

@TOC
原文链接 mask_rcnn paper
原文链接 r_cnn
原文链接 fast_rcnn
原文链接 FPN
opencv 4.0 代码-mask_rcnn

深度学习笔记1

R_CNN

在这里插入图片描述

说明

Ross Girshick 2014年提出的,第一次用CNN卷积特征做目标检测,框图如上。首先使用ss算法进行候选框的提取,然后将每个候选框warped(将输入的候选区尺寸统一为224*224,Alexnet输入 尺寸要求),然后使用Alexnet CNN网络进行卷积特征提取,然后进行类别区分与bounding box回归。创新点如下:

  1. 迁移学习 ,这是最震撼我的一种想法,由于标注有位置信息的数据集很少,PASCAL VOC只有20类,10k的数据量,对于深度学习网络很容易过拟合。
    预训练:迁移学习的想法就是先用ILSVR 目标识别数据(1000类 100万的数据量)进行训练CNN卷积特征。
    微调:然后在用少量的标有位置信息的数据集进行训练后面的FCN层(特定任务层);意思作者认为卷积特征出来的数据是公用的基础的数据,作为不同任务的区分层为全连接层。

  2. ss算法 根据图片的 颜色 纹理 尺寸大小 吻合度特征进行融合。在进行ss算法前图片先通过图论的方法预分割成若干的区域。ss算法的流程
    在这里插入图片描述

  3. 问题1 一张图大概有2000个候选区域,每一个区域都要进行一次CNN卷积,耗时耗内存;

  4. 问题2 训练过程中,目标分类与定位是分开训练的,先训练目标分类再训练目标定位。耗时

  5. 优点 MAP提高到66%,创新了之前一直使用人工提取特征产生结果的精确度!!!!精确度提升了30%;

fast_rcnn

在这里插入图片描述
说明:可以输入任意尺寸图片,因为有ROIPOOL layer层。在R_CNN基础上优化创新的,如上图结构图所示,将CNN卷积网络共享了,ss算法在原图上进行候选框的提取,在卷积后的特征图上进行映射的。映射关系为下采样率,下采样率由卷积的步长与池化层的步长决定的。举例子,假如下采样率为16则特征上的一个像素点对应原图的16*16的矩阵区域。后续的步骤与R_CNN一致。

下面将阐述与R_CNN的区别:

  1. 线性分类器SVM分类器替换为softmax分类器
    线性分类器SVM在SVM中,称为Maximum Marginal;在这里插入图片描述
    得分函数/score function:将原始数据映射到每个类的打分的函数f(xi,W,b)=Wxi+b
    损失函数/loss function:用于量化模型预测结果和实际结果之间吻合度的函数;
    决策面:Wxi+b=0(H1/H2的平行中间那条)
    决策函数:f(x)=sign(Wxi+b ) 要么+1 要么-1 只能判断是或不是
    softmax:
    logit=W‘x+b
    得分函数:y=softmax(logit)
    决策条件:生成的是一个K维的向量,k为类别数目。K类里面哪个概率值大则归为哪类。

  2. 多任务loss 训练一次完成目标检测与定位多任务loss 训练一次完成目标检测与定位

  3. ROIPool layer从cnn卷积得到的特征图中选出了感兴趣区域,又因为后面卷积层共享要将选出的区域进行尺寸统一(用池化的范式)77;比如特征图上大小为2020,缩减为77,则划分区域边长为20/7=2(取整),22的区域里max pool取最大值替代2*2区域
    在这里插入图片描述

  4. CNN卷积网络用VGG16替换了原来的Alexnet 卷积层更深,提取更多的语义特征

  5. 指标整个过程耗时3s左右,ss区域提取就要2-3s(cpu),不能达到实时,但是比R_CNN训练简单 时间更短

faster_rcnn

在这里插入图片描述
说明:可以输入任意尺寸图片,因为有ROIPOOL layer层。论文题目是toward real time 向着实时处理的目标去的,但是是非实时,5PFS。ss提取候选区很耗费时间,所以本文用RPN算法替换了ss搜索区域算法。其他并没有什么变化。
阐述一下faster_rcnn的创新点(与fast_rcnn的区别)

RPN:即滑动窗筛选候选区,定义了三种尺寸,三种长宽比,也就是说同一个锚点有9个候选区域。对于mn整幅图而言就会提取出Mn*9个候选框。sacle表示面积。ratios表示长宽比
在这里插入图片描述
在训练过程中的评价标准
IOU,ground truth 表示训练过程中的监督样本
在这里插入图片描述

mask_rcnn

在这里插入图片描述
说明:mask_rcnn = faster_rcnn+fcn(识别出mask)可以输入任意尺寸图片,因为有ROIAlign layer层。

  1. resnet101/resnet50替换了VGG16网络更深,直接好处就是特征图语义信息更多
  2. RoiAligen 替换了 Roi pool 提高了定位精确度 同时给像素级别的实例分割提供了良好的基础。在这里插入图片描述
    与ROIPool区别是,没有进行两次量化,而是保留了小数位,进行插值然后进行池化;
    插值公式如下:由于插值点在正中心 其实公式可以化解为,0.25f1+0.25f2
    +0.25f3+0.25f4
    在这里插入图片描述
  3. FPN 低分辨率,强语义特征和高分辨率弱语义特征相结合,可以很好解决小尺寸目标问题(有的目标太小,还没有步长大,这样卷积池画后特征就消失了)
    在这里插入图片描述
    如图所示,在本论文应用中是从第二阶段卷积成对卷积特征处理,第一阶段卷积层太大。前向处理是下采样过程,然后将最后一层最深语义特征的特征图进行上采样,每进行一次上采样输出大小与其上一层的大小一致,同时将上一层做11的卷积,主要是把通道数(取决于卷积的kenel数)变换为一致,然后才能融合,融合方式为1对1相加。
    在这里插入图片描述
    5mask_rcnn fcn
    在这里插入图片描述
    在RPN选出的roi上,进行卷积如上图右边所示,生成k个M
    M的掩膜,对每一个像素点应用sigmoid ,然后>0.5归为前景,反之归为背景。

在这里插入图片描述
loss计算:(平均二值交叉损失熵)
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35705332/article/details/83995345