Faster-R-CNN学习笔记

本文详细介绍了Faster R-CNN的工作原理,包括卷积层、区域提案网络(RPN)、ROI池化层和分类层。RPN通过生成锚点并进行边界框回归,实现对前景和背景的区分。ROI池化层从特征图中提取候选框特征,分类层则用于预测目标类别和进一步优化边界框。
摘要由CSDN通过智能技术生成

Faster-R-CNN

(未完成)

Faster RCNN其实可以分为4个主要内容:

  1. Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
  2. Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression修正anchors获得精确的proposals。
  3. Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
  4. Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。

上面这一部分来自:https://zhuanlan.zhihu.com/p/31426458

网络架构
0
图中head为Conv layers:首先预处理的图像先经过一组基础的卷积层生成feature map。

图中上面那部分为Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression修正anchors获得精确的proposals。

图中蓝色的圆矩形为Roi Pooling。该层输入feature map和proposals,通过proposals从feature map提取proposal feature maps,送入后续全连接层判定目标类别。

图中右边为Classification。通过全连接层预测类别和boundary box的偏移量。

下面逐个具体讲这四个部分:

1. Conv layers

首先预处理的图像先经过一组基础的卷积层生成feature map。

2. RPN

经过rpn_net和relu层得到feature maps。在RPN中,使用3x3的卷积核滑动计算整个feature map,每次计算通过卷积层最后得到的1x1x256(ZF network的结果),然后分别通过两个全连接层得到4k coordinates和2k scores。k为anchor boxes的数量。4代表4个位置偏移量,2代表前景/背景两个类别。前景anchor是指它与GT box的IOU大于某threshold。背景anchor是指它与GT box的IOU小于某个threshold。
111

Anchor Generation Layer

这一层通过在每一个feature map的每个格子上生成不同尺度和纵横比的9个anchors,生成固定数量的anchors。大部分的bounding boxes不会包含前景目标,但有一些会。RPN的目的就是学会辨别这些boxes中好的box。

RPN Loss

下面来看RPN Loss是如何计算的。

R P N L o s s = C l a s s i f i c a t i o n   L o s s + B o u n d i n g   B o x   R e g r e s s i o n   L o s s RPNLoss = Classification\ Loss + Bounding\ Box\ Regression\ Loss RPNLoss=Classification Loss+Bounding Box Regression Loss

Classification Loss:

cross_entropy(predicted_class, actual_class)

Bounding Box Regression Loss:

L l o c = ∑ u ∈ x , y , w , h s m o o t h L 1 ( u i ( p r e d i c t e d ) − u i ( t a r g e t ) ) L_{loc} = \sum_{u\in x,y,w,h}smooth_{L1}(u_i(predicted)-u_i(target)) Lloc=ux,y,w,hsmoothL1(ui(predicted)ui(target))

s m o o t h L 1 ( x ) = { σ 2 x 2 2 ∣ ∣ x ∣ ∣ &lt; 1 σ 2 ∣ ∣ x ∣ ∣ − 0.5 σ 2 o t h e r w i s e ( σ = 3 ) smooth_{L1}(x) = \begin{cases}\frac{\sigma^2x^2}{2} &amp; ||x|| &lt; {1\over\sigma^2} \\ ||x||-{0.5\over\sigma^2} &amp; {otherwise} \end{cases} (\sigma = 3) smoothL1(x)={2σ2x2xσ20.5x<σ21otherwise(σ=3)

输入:

  • RPN网络的输出(预测的前景/背景类别标签,回归系数)
  • anchor boxes
  • GT boxes

输出:

  • 好的前景/背景boxes和相应的分类标签
  • 目标回归系数

参数:

  • TRAIN.RPN_POSITIVE_OVERLAP:如果一个anchor box高于这个Threshold则为高的前景box,默认设为0.7
  • TRAIN.RPN_NEGATIVE_OVERLAP:如果和GT最大重叠的anchorIOU低于这个threshold则为背景。高于RPN_NEGATIVE_OVERLAP且低于RPN_POSITIVE_OVERLAP的anchor标记为忽略。默认设为0.3。
  • TRAIN.RPN_BATCHSIZE:前景/背景的anchor的总数量。默认值为256。
  • TRAIN.RPN_FG_FRACTION:前景anchors占batch size的比例。默认为0.5。如果前景anchor的数量超过了RPN_BATCHSIZExRPN_FG_FRACTION,则从中随机标记超出的数量的anchor为忽略。

到这里,bounding box的偏移量就基本计算完成。后面的proposal layer,ROI Pooling layer和classification layer关注分类误差。

Proposal Layer

Proposal Layer负责综合变换量和foreground anchors,计算出精准的proposal,送入后续的ROI Pooling Layer。通过回归系数将上一层生成的anchors调整为新的anchors,并使用NMS减少anchors的数量。并判断anchor为前景区域的概率。

Proposal Target Layer

这一层的目的是从proposal Layer输出的ROIs中选择有希望的ROIs。

输入:

  • proposal layer生成的ROIs
  • GT信息

输出:

  • 被选择的符合重叠条件的前景和背景ROIs
  • ROIs的特定类别的目标回归系数

系数:

  • TRAIN.FG_THRESH:默认值为0.5,用来选择前景ROIs。ROI最大重叠超过FG_THRESH的被标记为前景。
  • TRAIN.BG_THRESH_HI:默认值0.5。
  • TRAIN.BG_THRESH_LO:默认值0.1。在BG_THRESH_HI与BG_THRESH_LO之间的别标记为背景。
  • TRAIN.BATCH_SIZE:默认值128。前景/背景的最大总数量。
  • TRAIN.FG_FRACTION:默认0.25。前景数量不能超过BATCH_SIZE*FG_FRACTION

3. ROI Pooling Layer

ROI Pooling Layer将Proposal Target Layer输出的大小各不相同proposal boxes转化为固定大小的proposal。

4. Classification Layer

Classification部分利用已经获得的proposal feature maps,通过full connect层与softmax计算每个proposal具体属于那个类别(如人,车,电视等),输出cls_prob概率向量;同时再次利用bounding box regression获得每个proposal的位置偏移量bbox_pred,用于回归更加精确的目标检测框。

Classification Loss

与RPN loss相似。

C l a s s i f i c a t i o n   L a y e r   L o s s = C l a s s i f i c a t i o n   L o s s + B o u n d i n g   B o x   R e g r e s s i o n   L o s s Classification\ Layer\ Loss = Classification\ Loss + Bounding\ Box\ Regression\ Loss Classification Layer Loss=Classification Loss+Bounding Box Regression Loss

这里的分类误差和RPN层的分类误差不同的是,RPN层的分类误差只分两类:前景/背景。分类层预测所有的目标类和背景类。

这里分类误差是cross entropy loss计算公式如下:
4
4-2
因此,计算分类层损失需要以下量:

  1. 预测的类别标签和bounding box的回归系数(它们是分类网络的输出)
  2. 每个anchor box的类别标签
  3. 目标bounding box的回归系数

论文:https://arxiv.org/abs/1506.01497

参考:

https://zhuanlan.zhihu.com/p/31426458

http://www.telesens.co/2018/03/11/object-detection-and-classification-using-r-cnns/

https://medium.com/@jonathan_hui/what-do-we-learn-from-region-based-object-detectors-faster-r-cnn-r-fcn-fpn-7e354377a7c9

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R-CNN(Region-based Convolutional Neural Networks)是一种目标检测算法,它通过两个阶段来检测图像中的目标物体。首,R-CNN使用选择性搜索(Selective Search)算法生成一系列候选区域,然后对每个候选区域进行卷积神经网络(CNN)特征提取和分类。R-CNN的主要缺点是速度较慢,因为每个候选区域都需要独立地进行CNN特征提取和分类。 Fast R-CNN是对R-CNN的改进,它通过引入RoI池化层(Region of Interest pooling)来解决R-CNN中重复计算的问题。RoI池化层可以将不同大小的候选区域映射为固定大小的特征图,从而使得所有候选区域可以共享相同的特征提取过程。这样一来,Fast R-CNN相比于R-CNN具有更快的速度。 Faster R-CNN是对Fast R-CNN的进一步改进,它引入了一个称为Region Proposal Network(RPN)的子网络来生成候选区域。RPN通过滑动窗口在特征图上提取候选区域,并为每个候选区域分配一个得分,然后根据得分进行筛选和排序。这种端到端的训练方式使得Faster R-CNN在目标检测任务上具有更高的准确性和更快的速度。 Mask R-CNN是在Faster R-CNN的基础上进一步发展的,它不仅可以进行目标检测,还可以进行实例分割。Mask R-CNNFaster R-CNN的基础上增加了一个分支网络,用于预测每个候选区域中目标物体的像素级掩码。这使得Mask R-CNN能够同时获得目标的位置信息和像素级别的语义信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值