基于R-CNN的SPPNet、FastRCNN、FasterRCNN

目录

  • 第一部分:SPPNet
    • 一.概述
    • 二.SPP层原理
  • 第二部分:Fast R-CNN
    • 一.概述
    • 二.RoI pooling
    • 三.多任务损失
  • 第三部分:Faster R-CNN
    • 一.概述
    • 二.RPN原理
  • 第四部分:不同模型的对比
  • 备注:

第一部分:SPPNet

一.概述

由于R-CNN对于2000个候选区域都要进行卷积计算而导致训练慢,SPPNet模型思路是:
1.直接将图片作为CNN的输入进行卷积计算,得到全图的feature map;
2.图片通过SS得到候选区域,让候选区域与feature map直接映射,得到候选区域的映射特征向量(大小不固定);
3.将候选区域的映射特征向量输入到SPP层(空间金字塔池化),SPP层接收任何大小的输入,输出固定大小的特征向量,再将结果作为全连接层fc的输入。
基于R-CNN的SPPNet、FastRCNN、FasterRCNN_第1张图片

二.SPP层原理

对于输入的图片有两个处理:用SS进行候选区域的划分、输入到CNN网络得到全图的feature map;
再通过映射的方法,得到每个候选区域对应的特征向量,此时的特征向量大小不固定,需要经过SPP层。
SPP层:spatial pyramid pooling(空间金字塔池化),将任意大小的特征图转换成固定大小的特征向量。
假设原图输入是224x224,对于conv出来后的输出是13x13x256的,可以理解成有256个这样的Filter(通道),每个Filter对应一张13x13的feature map,接着在这个特征图中找到每一个候选区域映射的区域,spp layer会将每一个候选区域分成1x1、2x2、4x4三张子图,对每个子图的每个区域作max pooling,得出的特征再连接到一起,就是(16+4+1)x256的特征向量,接着给全连接层做进一步处理,如下图:
基于R-CNN的SPPNet、FastRCNN、FasterRCNN_第2张图片
注:SPP层接收任意大小的特征向量(feature map中候选区域对应部分),输出21x256的特征向量,21取决于max pooling的方式,256取决于conv输出的feature map的filter个数。
空间金字塔池化,即对输入的特征向量,分别进行4x4、2x2、1x1的max pooling。

第二部分:Fast R-CNN

一.概述

在SPPNet模型中,对conv的计算进行了优化,但训练阶段过多影响速度,包括训练CNN、训练SVM、训练bbox回归器。
为解决上述问题,Fast R-CNN将以上几个模块统一训练,并提出RoI(region of interest) pooling。
基于R-CNN的SPPNet、FastRCNN、FasterRCNN_第3张图片
1.将整个图片输入到一个基础卷积网络,得到整张图的feature map;
2.将候选区域region proposal (Rol) 映射到feature map中;
3.Rol pooling layer提取一个固定长度的特征向量,每个特征会输入到一系列全连接层,得到一个Rol特征向量(此步骤是对每一个候选区域都会进行同样的操作);
4.RoI特征向量作为输入,通过传统softmax层进行分类(替换SVM分类器),输出类别有K个类别加上"背景"类,通过bounding box regressor进行标记框。

二.RoI pooling

简单版的SPP,即进行池化时,只选择一种尺寸(scale),如4x4,以降低一定精度为代价,减少运算时间并得到固定长度的特征向量。
如果网络第一个FC层的输入尺寸(HWk)与RoI pooling输出的特征向量尺寸(hwk)不同,可以进行动态转化。若特征向量尺寸较小,可以对原本max pooling单位网格进行调整,使pooling每个网格尺寸为h/H和w/W。

三.多任务损失

RoI pooling可以进行反向传播,而SPP层不适合。
SPPNet中,CNN模型的训练和SVM分类器的训练不能同时进行,因为SVM的训练loss不能更新SPP层之前的卷积层参数。
Fast R-CNN中,使用softmax分类替代SVM,将所有特征储存在内存中,不占用磁盘空间。CNN+Rol pooling+softmax+ bbox regressor可以看成一个网络,训练时两个loss分别是:
1.分类loss,N+1路的softmax输出, 其中的N是类别个数,1是背景,使用交叉熵损失;
2.回归loss,4xN路输出的regressor,对于每个类别都会训练一个单独的regressor,使用平均绝对误差(MAE) 损失即L1损失。

第三部分:Faster R-CNN

一.概述

在Fast R-CNN中,选择性搜索SS速度较慢,且其与整个网络的训练过程分开。Faster R-CNN中,将SS换成一个提取边缘的神经网络RPN(region proposal network),使得候选区域生成、特征提取、分类、候选框回归四个步骤被统一到一个深度神经网络框架之中。
基于R-CNN的SPPNet、FastRCNN、FasterRCNN_第4张图片
1.向CNN网络输入任意大小图片,得到feature map特征图,用于RPN和RoI pooling的共同输入;
2.特征图经过RPN得到候选区域;
3.候选区域与特征图共同输入到Rol pooling,得到每个候选区域的特征图,进行softmax分类和bbox预测。

二.RPN原理

RPN的作用是得出比较准确的候选区域框,共分为两步:
1.原始候选区域产生:用固定大小的滑动窗口(默认3x3)去扫描特征图,特征图中的每个中心点对应原图中的一个框,把框的左上角或者中心成为锚点(anchor),每个中心点得到9个大小不同宽长比不同的区域,即9个anchor boxes;
2.RPN网络训练:对第一步产生的anchor boxes,根据与Ground Truth(真实标记框)的IoU(交并比)进行正负样本标记,在此基础上对网络进行微调,完成原始候选区域的修正。

第四部分:不同模型的对比

R-CNN模型:
基于R-CNN的SPPNet、FastRCNN、FasterRCNN_第5张图片
SPPNet模型
基于R-CNN的SPPNet、FastRCNN、FasterRCNN_第6张图片
Fast R-CNN模型:
基于R-CNN的SPPNet、FastRCNN、FasterRCNN_第7张图片
Faster R-CNN模型:
基于R-CNN的SPPNet、FastRCNN、FasterRCNN_第8张图片

备注:

1.端到端模型:从输入端到输出端直接用一个神经网络连接,整体优化目标函数。

你可能感兴趣的:(基于R-CNN的SPPNet、FastRCNN、FasterRCNN)