R-CNN:Faster R-CNN 模型学习笔记

R-CNN 系列模型是目标检测里的经典模型,同时也是 Caffe 的经典模型,所以为了学习 Caffe 和目标检测算法的知识,通过观看论文、网上的资料以及试着用自己的数据训练一个 Faster R-CNN 后,对于 Faster R-CNN 有了初步的了解,在此把论文内容和自己的理解整理并写下来。


一、R-CNN 的历史

R-CNN 是一个经典的目标检测模型,发展到现在已经成为了一个系列,从一开始的 R-CNN 模型,到 Fast R-CNN 模型,一直到 Faster R-CNN 模型,代表了目标检测的前沿水平。
R-CNN 模型出现较早,一开始使用了 Selective Search 算法来生成区域建议候选框,在当时是一个创新,但是现在看起来,无论是从速度还是准确率上看,都不算是很好的。在随后推出的 Fast R-CNN 中,参考了 SPPnet 的特点,大幅提高了模型的训练速度和检测速度。而在 Faster R-CNN 中,采用共享的卷积网组成 RPN(Region Proposal Network),使用 RPN 可以直接预测出建议候选框,平均每张图片 300 个,大部分计算在 GPU 中完成,且卷积网络和 Fast R-CNN 共享,大幅提升了目标检测的速度。

二、区域建议网络 —— Region Proposal Network

在 Faster R-CNN 中引入了一个新的网络 —— 区域建议网络(Region Proposal Network,RPN), RPN 是一个全卷积网络,可以在每个位置同时预测物体边界和 objectness scores 。RPN 通过端到端的训练来生成高质量的区域建议,然后被 Fast R-CNN 用来做检测。通过一种简单的交替优化方法, RPN 和 Fast R-CNN 可以共享卷积特征。在 VGG-16 模型上,能够达到 5 FPS 的帧率(使用GPU),在 PASCAL VOC 2007 和 2012 上分别取得了 73.2% 和 70.4% 的 mAP 。

(一)Region Proposal Network

为了生成区域建议,在最后的共享卷积层所输出的特征映射(feature map) 上滑动一个小网络。这个网络被全连接到输入卷积特征映射的一个 n × n n\times n n×n(在论文中 n = 3 n = 3 n=3) 的空间窗口上,每个滑动窗口被映射到一个更低维向量(在 ZF 上为 256 维,在 VGG 上为 512 维)。这个向量被喂进两个同级的全连接层 —— a box-regression layer ( r e g reg reg ) and a box-classification layer ( c l s cls cls ) .注意输入图片的有效感受野很大(ZF 上为 171 像素,VGG 上为 228 像素)。Figure 3 在其中一个位置上说明了一个迷你网络。要注意的是,因为这个迷你网络以滑动窗口的方式运作,全连接层在所有空间位置上共享。这种结果由一个后接两个同级的 1 × 1 1 \times 1 1×1 的卷积层的 n × n n\times n n×n 的卷积层自然地实现。ReLUs 应用在 n × n n\times n n×n 的卷积层的输出。

(二)具有平移不变性(Translation-Invariant)的 Anchors

在每个滑动窗口的位置,同时预测 k k k 个区域建议,所以 r e g reg reg 层有 4 k 4k 4k 个输出代表了 k k k 个 boxes 的坐标。 c l s cls cls 层输出 2 k 2k 2k 个得分(scores)来估计每个建议选框的为 目标/非目标 的概率。 k k k 个建议选框被 k k k 个对应的 boxes 参数化,这些 boxes 就称为 anchors 。每一个 anchor 都在上述滑动窗口的中心,对应着一种尺度和一种宽高比(aspect ratio),在每个滑动位置上都有 3 个尺度和 3 个宽高比的 anchors,总共就有 9 个。

(三)给 anchors 分配正负标签

在训练 RPN 时,给每个 anchor 分配一个二元标签(是否为目标)。
给两种 anchor 分配正标签:

  1. ground-truth box 重叠有最高的 IoU(Intersection-over-Union) 的 anchor。
  2. 与任何一个 ground-truth box 重叠都有高于 0.7 的 IoU 的 anchor。
    一个 ground-truth box 可能会分配正标签给多个 anchor。
  3. 给与所有的 ground-truth boxes 的 IoU 都小于 0.3 的 anchor 分配负标签。
    即不为正也不为负的 anchor 对于训练没有贡献。

(四)学习区域建议时的损失函数

根据上面的定义,我们根据 Fast R-CNN 的多任务损失(multi-task loss)来最小化目标函数。对于一张图片,其**损失函数(loss function)**定义如下:

L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L({\lbrace p_i \rbrace},{\lbrace t_i \rbrace})=\frac{1}{N_{cls}}\sum_{i}{L_{cls}(p_i,p^*_i)}+\lambda\frac{1}{N_{reg}}\sum_{i}{p^{*}_{i}L_{reg}(t_i,t^*_i)} L({ pi},{ ti})=Ncls1iLcls(pi,pi)+λNreg1ipiLreg(ti,ti)

在这里, i i i 是一个 mini-batch 上一个 anchor 的索引, p i p_i pi 是第 i i i 个 anchor 为目标的预测可能性。如果 anchor 为正 ,ground-truth 标签 p i ∗ p_i^* pi 为 1,否则为 0。 t i t_i ti 是一个代表预测的 bounding box 的 4 个参数化坐标向量, t i ∗ t_i^* ti 是一个代表与正 anchor 对应的 ground-truth box 的4个参数化坐标向量。分类损失 L c l s L_{cls} Lcls 是有两个分类(目标或非目标)的对数损失。至于回归损失,使用 L r e g ( t i , t i ∗ ) = R ( t i − t i ∗ ) L_{reg}(t_i,t_i^*)=R(t_i-t^*_i) Lreg(ti,ti)=R(titi) ,其中 R R R鲁棒损失函数(robust loss function) p i ∗ L r e g p_i^*L_{reg} piLreg 这一项表示了回归损失只有在正 anchor ( p i ∗ = 1 p_i^*=1 pi=1)有作用。
对于回归损失,采用下列的4个坐标参数化:

t x = ( x − x a ) / w a , t_x=(x-x_a)/w_a, tx=(xxa)/wa,   t y = ( y − y a ) / h a , t_y=(y-y_a)/h_a, ty=(yya)/ha,   t w = l o g ( w / w a ) , t_w=log(w/w_a), tw=log(w/wa),   t h = l o g ( h / h a ) , t_h=log(h/h_a), th=log(h/ha),
t x ∗ = ( x ∗ − x a ) / w a , t_x^*=(x^*-x_a)/w_a, tx=(xxa)/wa,   t y ∗ = ( y ∗ − y a ) / h a , t_y^*=(y^*-y_a)/h_a, ty=(yya)/ha,   t w ∗ = l o g ( w ∗ / w a ) , t_w^*=log(w^*/w_a), tw=log(w/wa),   t h ∗ = l o g ( h ∗ / h a ) , t_h^*=log(h^*/h_a), th=log(h/ha),

x , y , w x,y,w x,y,w h h h 分别代表 box 中心坐标,宽和高。 x , x a x,x_a x,xa x ∗ x^* x 分别代表预测的 box,anchor box 和 ground-truth box( y , w , h y,w,h y,w,h 也一样)

三、4步训练Faster R-CNN

  1. 像上述训练 RPN。这个网络使用一个 ImageNet 的预先训练模型初始化并为区域建议任务进行端到端的微调(fine-tune)
  2. 通过 Fast R-CNN 使用第一步的 RPN 生成的建议框来训练一个单独的检测网络。这个检测网络也是由 ImageNet 的预先训练模型初始化的。在这一步,两个网络没有共享卷积层
  3. 使用检测网络来初始化 RPN 训练,但是固定共享卷积层,且只微调在 RPN 独有的层。现在,两个网络共享卷积层。
  4. 最后让共享卷积层保持固定,微调 Fast R-CNN 的全连接层。这样,两个网络共享相同的卷积层,形成了一个统一的网络。

参考:
R.Girshick,J.Donahue,T.Darrell,J.Malik. Rich feature hierarchies for accurate object detection and semantic segmentation Tech report
R.Shaoqing,H.Kaiming,R.Girshick,Jian Sun. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
[深度学习——Caffe之经典模型详解与实战,乐毅,王斌 编著]

智能之路 文章被收录于专栏

包括机器学习、神经网络、深度学习、强化学习各种方面的文章

全部评论

相关推荐

09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务