Fast-R-CNN论文解读

Fast-r-cnn是Ross在2015年发表的一篇论文,其网络全称为: Fast Region-based Convolutional Network method–用于目标检测的基于区域的快速卷积网络算法。
Fast-R-CNN论文解读

在于先前的网络R-CNN对比之下,其训练速度要快9倍,检测时间快出来213倍(R-CNN的检测时间GPU工作下为47s一张图片),同时在检测精度上也作了进一步的提升。
一、任务介绍
在介绍中,作者提出目标检测任务相比分类来说更为复杂和困难,首先计算机要处理众多的候选目标区域(也就是proposals)、其次这些候选框只提供了检测目标的大概位置,也就是说他所框中的物体可能并不是物体的全部,或者框内有很多不属于物体的部分,这个时候还要对候选框进行位置修正,使其更加精确。
然后作者简单介绍了一下R-CNN网络和SPPnet,将这两个于Fast-RCNN网络经对比,来突出Fast-R-CNN的优势所在。
1、更高的检测质量
2、训练使用了单价段算法,损失函数使用多项损失
3、训练可以更新所有网络层参数
4、缓存特征不再需要磁盘存储(在R-CNN网络中训练一张图片需要非常大的磁盘存储空间)

2. 整体网络架构
Fast-R-CNN论文解读
上图就是原论文给出的网络整体架构。该网络将整张图片作为输入,然后经过卷积层和最大池化层得到特征图,然后ROI池化层会从特征图上提取到适合尺寸的物体候选特征向量、然后将提取到的特征向量送进去两个全连接层后,将其作为同级输出送入两个全连接层,也就是图片右上角的两个FC(fully-connected layer),第一个链接softmax层输出,第二个输出四个真实的数字值来精细化对检测物体框的位置。简单点讲就是一个输出该框内的物体到底属于哪一类,另外的一个输出调整候选框的位置,让候选框可以更加准确的框住被测目标。
1、ROI pooling层
该层使用最大池化层来将特征图中感兴趣的区域提取出来成固定HxW的尺寸特征图,其尺寸H和W都是超参数,这一步人为决定该使用哪种大小的特征图。也就是说原图经过卷积和池化后变成了特征图,然后ROI负责在特征图中框选出来感兴趣的区域,并使用池化操作将其变为固定尺寸的新特征图, 每个特征图都包含一个含四个参数的元组—-(r, c, h, w)。 r,c表示ROI区域左上角的坐标,h表示ROI区域的高, w表示宽。
其实这一步可以看成是目标检测的最终框的参数,以左上角点的坐标为索引,然后指定长宽组成一个矩形。
Fast-R-CNN论文解读
作者也提到了其实ROI层就相当于SPPnet里面的图像图像金字塔的特例,只不过其只含有一个层级而已。
2、网络模型
训练网络的主体采用在ImageNet上的预训练模型,然后在这上面进行修改。修改主要有三个过程:最后一个最大池化层被替换成ROIpooling层,这样做的目的是使其与后面的全连接层参数匹配;网络最后的全连接层和softmax层被拆分为平行的一个全链接层和softmax层(对于上面图片中的最后两个层),其中softmax层具有K+1个类别,K为类别总数,多出来的一个为背景标签;最后,该网络被修改为接受两个数据作为输入–用于训练的图片序列和图片上的ROI区域。
3、精细修正检测框
首先,作者说反向传播训练训练所有网络参数是非常重要的,然后解释了为什么SPPnet不能更新空间金字塔以后的权重参数—最根本的原因是在反向传播时,当训练样本来自不同图片时,SPP层的效率是非常低的。这个问题的来源是每个ROI都可能有很大的感受野,所以训练时网络输入会非常大,经常是整张图片。
于是作者提出了一种更为有效的训练方式,即训练时采用特征共享。具体的做法就是从N张图片中挑选出来R/N个ROI区域,然后在前向传播与反向传播时,同一张图片的ROI区域共享计算和内存(无需重复存储了)。

3.损失函数
损失函数在网络训练中非常重要,因为它为计算机提供了一个依赖度量,使计算机可以迭代调整参数以获得我们想要的输出。
在Fast-R-CNN中,损失函数由两项组成:
L%28p%2C%20u%2C%20t%5Eu%2C%20v%29%3DL_%7Bcls%7D%28p%2Cu%29%2B%CE%BB%5Bu%E2%89%A51%5DL_%7Bloc%7D%28t%5Eu%2Cv%29
第一项是预测类别和真实类别之间的交叉熵损失。在多分类中,公式原型为:
H%3D-%5Csum_%7Bi%7D%5E%7B%7Do_i%5E%2Alog%28o_i%29
但是由于真是标签采用one-hot编码,因此除了当下类别为1,其余类别标签均为0.此时的交叉熵也就变成了论文中:
L_%7Bcls%7D%3D-log%28p_u%29
pu表示softmax输出当前类别的概率分数。
第二项为边界框回归损失函数,论文也说了t^u表示预测的一组边界框位置参数,u表示真实的边界框位置参数,其都包含一个含四个参数的元组–(x, y, h, w)。
在:
L_%7Bloc%7D%28t%5Eu%2Cv%29%3D%5Csum_%7Bi%5Cin%5C%7Bx%2Cy%2Cw%2Ch%5C%7D%7Dsmooth_%7B%7BL_1%7D%7D%28t_i%5Eu-v_i%29
smooth_%7B%7BL_1%7D%7D%28x%29%3D%3D%20%5Cbegin%7Bcases%7D%200.5x%5E2%2C%26amp%3B%20%5Ctext%7Bif%20%7Cx%7C%20%26lt%3B%201%7D%20%5C%5C%20%7Cx%7C-0.5%2C%20%26amp%3B%20%5Ctext%7Botherwise%7D%20%5Cend%7Bcases%7D
λ是一个平衡系数,u是当下框内物体的标签,当u≥1时取值1,否则取值0.这里的意思也就是当下的框内物体的确是属于被检测物体时,λ等于1.否则λ等于0,此时这项的计算值将被丢弃。论文中作者阐述:对于只有背景图的ROI区域来说,λ等于0.此时这项计算值将被忽略。

最后再梳理一遍Fast-R-CNN的算法流程:
首先将整幅图像作为输入,通过卷积层和池化层得到特征图
使用ROI pooling层获取ROIs
传入网络主体架构中,然后其输出将送去两个平行分支,先经过全连接层,然后一个通过softmax层输出分类,另外一个通过reg获得候选框的精细修正。
使用的损失函数由两部分组成
优化器使用分层采样的小批量随机梯度下降法 (stochastic gradient descent (SGD) mini batches)

版权声明:本文为博主NewSuNess原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_46131719/article/details/123028278

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年2月21日 下午12:35
下一篇 2022年2月21日

相关推荐