关于Faster-RCNN

参考B站视频Pytorch 搭建自己的Faster-RCNN目标检测平台(Bubbliiiing 深度学习 教程)_哔哩哔哩_bilibili

什么是Faster-RCNN

        显然,我们可以人眼可以一眼就看到猫在图片的位置,但是计算机要怎么确认呢,即框怎么确定,需要中心点的x轴,y轴,宽和高四个参数。

关于Faster-RCNN_第1张图片

确定边界框位置的四个参数怎么由Faster-RCNN得到呢

        当一张图片被传入到Faster-RCNN中,一般会被resize到600*800尺寸(长宽比不变,不会失真),再被传入主干特征提取网络,可以得到38*50的特征层,相当于将图片分成38*50大小的网格,每个网格里有若干个先验框,利用RPN可以获得先验框的调整参数和是否包含物体,此时便得到了建议框,利用建议框在公共特征层上进行截取,截取到的不同特征层可以反应图片上的不同位置,截取到的内容传输到ROI pooling层中,为了满足不同大小图片的检测,ROI pooling层会将截取到的不同大小的特征层resize到一样的大小,然后利用分类和回归网络判断截取到的图片中是否包含目标,并对建议框进行调整,调整后的结果即是我们最终的预测结果。

关于Faster-RCNN_第2张图片

 

关于Faster-RCNN_第3张图片

 

Faster-RCNN整体结构介绍

        Faster-RCNN是一种two-stage算法,与one-stage算法相比,更加复杂和慢,但是检测精度更高。 

        在Faster-RCNN中,首先将图像短边resize为600,长宽比不变,即图像不会失真。

关于Faster-RCNN_第4张图片

 然后经过特征提取获得的公用特征层在图像中就是Feature Map,其有两个应用,一个是和ROIPooling结合使用、另一个是进行一次3x3的卷积后,进行一个18通道的1x1卷积,还有一个36通道的1x1卷积。18通道的卷积可以拆分为9 x 2的卷积,36通道的卷积可以拆分为9 x 4的卷积。

Q:为什么要这么拆分呢

A:跟共享特征层有关,当我们输入的图片的shape是600x600x3的时候,公用特征层的shape就是38x38x1024,相当于把输入进来的图像分割成38x38的网格,然后每个网格存在9个先验框,这些先验框有不同的大小。

在Faster-RCNN中,num_priors也就是先验框的数量是9,所以两个1x1卷积的结果实际上是:

9 x 4的卷积-先验框的调整: 4—代表是对先验框的4个参数进行调整。用于预测公用特征层上每一个网格点上每一个先验框的变化情况。(为什么说是变化情况呢,这是因为Faster-RCNN的预测结果需要结合先验框获得预测框,预测结果就是先验框的变化情况。)

9 x 2的卷积 -先验框内部是否包含物体:2—一个代表背景,一个代表有物体。用于预测公用特征层上 每一个网格点上每一个先验框内部是否包含了物体。

到此位置还只是粗略的一个框的获取,也就是一个建议框。然后我们会在建议框里面继续找东西。

        两次卷积之后,得到建议框,建议框和共享特征层Feature Map结合后传入到ROIPooling层中,在ROIPooling层利用建议框对共享特征层进行截取,因为建议框的大小不一致,所以截取后得到的图像尺寸也不一样,然后对所有的局部特征层进行分区域的池化,获得的局部特征层大小就一样,再利用获得的所有的局部特征层进行分类和回归预测,回归预测对建议框进行调整得到最终的预测框,分类是确定建议框是否有物体和物体类别。

Resnet50主干提取网络介绍(论文中用的是VGG)

        ResNet50有两个基本的块,分别名为Conv Block和Identity Block,这两个都是残差网络结构。其中Conv Block输入和输出的维度是不一样的,所以不能连续串联,它的作用是改变网络的维度;Identity Block输入维度和输出维度相同,可以串联,用于加深网络的。

        由下面两图可知,Conv Block和Identity Block的最大差别是残差边上是否有卷积,通过改变卷积的步长和通道数可以改变维度,因此Conv Block可以改变网络的维度。

Conv Block的结构如下:

Identity Block的结构如下:

         当我们的输出维度和输入维度不一致时,bottleneck(瓶颈结构)是Conv Block,当维度不发生变化,bottleneck(瓶颈结构)是Identity Block。瓶颈结构可以更好地提取特征,加深整个网络,减少参数量。

        Resnet50就是bottleneck(Conv Block+Identity Block)堆叠构成的。

        Faster-RCNN的主干特征提取网络部分只包含了长宽压缩了四次的内容,第五次压缩后的内容在ROI中使用。即Faster-RCNN在主干特征提取网络所用的网络层如图所示。
以输入的图片为600x600为例,shape变化如下:

关于Faster-RCNN_第5张图片

整体流程

 扩展(R-CNN和FastRCNN)

参考B站视频1.1Faster RCNN理论合集_哔哩哔哩_bilibili

R-CNN算法流程

可分为四个步骤

---一张图像生成1k~2k个候选区域(使用selective search方法)

---对每个候选区域,使用深度网络提取特征

---特征送入每一类的SVM分类器,判别是否属于该类

---使用回归器精细修正候选框位置

关于Faster-RCNN_第6张图片

1、候选区域的生成

关于Faster-RCNN_第7张图片

2、对每个候选区域,使用深度网络提取特征

关于Faster-RCNN_第8张图片

 3、特征送入每一类的SVM分类器,判定类别

关于Faster-RCNN_第9张图片

关于Faster-RCNN_第10张图片

关于Faster-RCNN_第11张图片

4、使用回归器精细修正候选框位置

关于Faster-RCNN_第12张图片

关于Faster-RCNN_第13张图片

Fast-RCNN

 关于Faster-RCNN_第14张图片

 与RCNN对比可知,从第二步开始就完全不一样了,第二步两者的对比如下

关于Faster-RCNN_第15张图片

关于Faster-RCNN_第16张图片 注意:RCNN中的分类器类别是20,没有背景类别。

关于Faster-RCNN_第17张图片

 关于Faster-RCNN_第18张图片

 看一下结构的变化(逐渐变成端到端的目标检测器)关于Faster-RCNN_第19张图片关于Faster-RCNN_第20张图片关于Faster-RCNN_第21张图片

你可能感兴趣的:(目标检测,人工智能,计算机视觉)