Fleeting Day(VOL.12)

每日总结190504

Fast R-CNN paper

SPPnet存在的缺点:

  • 和R-CNN一样,训练要经过特征提取、CNN微调、训练SVM、调整bounding box回归器这么几个阶段
  • 特征也要存在磁盘中
  • SPP中的微调只更新spp层后面的全连接层,对深层次的网络讲有损准确度

Fast R-CNN上的改进:

  • 更高的目标检测准确度
  • 使用一个多任务的损失,进行单阶段训练
  • 训练时可以更新所有的网络层
  • 不需要将特征缓存到磁盘上

Fast R-CNN 结构

  • 首先处理一整张图片,使用多个卷积层和池化层提取其feature map
  • 对于每个候选框,RoI(Region of interest)池化层从feature map中提取固定长度的特征向量
  • 各特征向量被输入到一系列的全连接层中,最后分支为两个同级输出层:一个全连接层加Softmax,用来产生对$K$种目标外加$1$个“背景”的Softmax概率估计,另一个bounding boxes回归器,输出$K$种目标各自的四个实值。它们分别表示$K$种目标修正后的bounding box位置

每个RoI由其左上角$(r,c)$及其高度和宽度$(h,w)$组成的四元组$(r,c,h,w)$定义。RoI最大池化层中,先将大小为$h \times w$RoI窗口分割成$H \times W$个网格,每个网格的大小约为$h/H \times w/W$,之后各在各网格上分别进行最大池化,这样不管输入的大小,最后输出大小都为$H \times W$的feature map,要注意其中$H$和$W$是独立于RoI的该层上的超参数。RoI最大池化层是SPP的简化,该过程如下图所示:
RoI最大池化层

使用预训练过的CNN来实现Fast R-CNN时,首先需要将其中最后一个最大池化层改为RoI最大池化,设置对应的$H$和$W$使其输出与网络的第一个全连接层的大小相兼容(如VGG
VGG16中$H = W = 7$)。之后需要把最后的一个全连接层和softmax层换成两个同级输出层。最后,要把CNN修改为采用两个数据输入:图像列表和这些图像中的RoI列表。

SVM(Support Vector Machine)

二分类

上图中,中间的黑色实线称为决策面,这样的线性分类器可以找到多个,但其中的最优解是中间那个具有最大间隔的决策面,它对应着两侧穿过样本点的两条虚线,这些被穿过的样本点被称为“支持向量”, 它们是SVM的支持样本点。

设线性分类器的表达式为:$$y = ax + b$$

将$x$变成$x_1$轴,$y$变成$x_2$轴,得到:$$x_2 = ax_1 + b$$ $$ax_1 + (-1)x_2 + b = 0$$

即:$$[a, -1] \begin{bmatrix}x_1 \\ x_2 \end{bmatrix} + b = 0$$
将上式更一般地表示为:$$W^Tx + b = 0$$

其中:$$W = \begin{bmatrix}a \\ -1 \end{bmatrix}$$

它与原来的直线垂直,如此$W$就控制了直线的方向,截距$b$则控制了直线的位置!

分类间隔

分类间隔大小=支持向量对应样本点到决策面的距离的两倍,而点到直线的距离公式可表示为:$$d = \frac{\vert W^Tx + b \vert}{\vert \vert W \vert \vert} $$

参考

  1. ROI Pooling层详解
文章作者: Hugsy
文章链接: http://binweber.top/2019/05/04/daily_190504/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sky Inside the Eyewall
支付宝打赏~
微信打赏~