【目标检测】Fast R-CNN详解

前言

Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。同样使用VGG16作为网络的骨架,在训练速度比R-CNN快了近9倍,测试速度快了213倍,在Pascal VOC数据集上accuracy从62%提升至66%,它解决了重复卷积计算和固定输入尺度的问题。

Fast R-CNN框架

Fast R-CNN 的总体架构如下图所示。
【目标检测】Fast R-CNN详解_第1张图片
顾名思义,Fast R-CNN 相对于R-CNN 的一个重要的优势就是速度快,以下是它的主要步骤:
1. 利用SS算法(选择性搜索)生成1k-2k的候选区域。
2. 使用深度网络(VGG16)对输入的图像进行提取特征,把候选区域投影到特征图上生成相应的特征矩阵。
3. 然后将每个特征图经过兴趣区域池化(RoI Pooling)层缩放到7×7的特征图。
4. 接着经过一系列全连接层,最后并联一个softmax层预测类别和bbox regressor(边界框回归)预测边界框。

特征提取

需要注意的是这里把整张图像送入网络提取特征,然后把候选区域经过映射到特征图上提取特征,而不是单独对每一个候选区域进行计算(卷积运算)
即实现了共享卷积的过程,这也是因为它比R-CNN快的原因。

RoI Pooling层

ROI Pooling 层的工作原理是将每个候选区域的特征图均匀分割成一个网格单元。对网格中的每个单元格应用 max pooling操作以返回单个值。所有单元格的所有值表示特征向量,需要注意的是这里将卷积神经网络的输出和提议区域作为输入。其优点是不限制输入图像的尺寸,也能转化为大小统一的特征矩阵。

分类器

在这里得到候选框的类别以及得分,我们知道经过softmax运算会的得到一个概率分布,由于Pascal VOC数据集上有20个类别,因此输出的神经元共有21个,其中一个是背景的概率。
【目标检测】Fast R-CNN详解_第2张图片
例如从上图我们可知预测的类别为第4个类别。

边界框回归器

常用的边界框表示有(中间,宽度,高度)和(左上,右下),原论文用的是第一种,因此候选框回归参数为 ( d x , d y , d w , d h ) (d_x,d_y,d_w,d_h) (dx,dy,dw,dh), 假如有 N + 1 N+1 N+1个类别,则输出 4 ( N + 1 ) 4(N+1) 4(N+1)个神经元,在Pascal VOC数据集上候选框回归参数如下:
在这里插入图片描述

Multi-task loss

在常见的神经网络中,其流程大多是定义损失函数,从而反向传播来训练模型,在Fast R-CNN中,其定义的损失函数是多任务损失函数。
【目标检测】Fast R-CNN详解_第3张图片
1.分类损失
p p p:候选边界框经分类器预测的概率分布(softmax) p = ( p 0 , p 1 , . . . , p N ) p=(p_{0},p_{1},...,p_{N}) p=(p0,p1,...,pN)
u u u:真是边界框中的真是类别标签
其中 L c l s = − log ⁡ p u L_{cls}=-\log p_{u} Lcls=logpu

2.边界框回归损失
【目标检测】Fast R-CNN详解_第4张图片
【目标检测】Fast R-CNN详解_第5张图片
其中,
t u t^{u} tu:对应边界框回归器的对应类别为 u u u的回归参数 ( t x u , t y u , t h u , t w u ) (t_x^u,t_y^u,t_h^u,t_w^u) (txu,tyu,thu,twu)
v v v:对应真是目标边界框的回归参数 ( v x , v y , v h , v w ) (v_x,v_y,v_h,v_w) (vx,vy,vh,vw)
需要注意的是smooth L1损失完美地劈开了L1和L2作为损失函数的缺陷。

参考资料

目标检测中的回归损失函数系列一:Smooth L1 Loss
Fast R-CNN

你可能感兴趣的:(目标检测,cnn,深度学习)