8月23日计算机视觉理论学习笔记——目标检测

系列文章目录


前言

本文为8月23日计算机视觉理论学习笔记——目标检测,分为四个章节:

  • 目标检测的目标;
  • 区域卷积神经网络 R-CNN;
  • SPP-Net;
  • Fast R-CNN。

一、目标检测的目标

检测图片中所有物体的:

  • 类别标签(Category label);
  • 位置(最小外接矩形/Bounding box)。

1


二、区域卷积神经网络 R-CNN

1、模型结构

  • 模块 1:提取物体区域(Region proposal);
  • 模块 2:对区域进行分类识别(Classification)。

2
3

  • 步骤:
  1. 按一定的规则生成区域集 R R R
  2. 计算区域集 R R R 里每个相邻区域的相似度 S = { s 1 , s 2 , … } S = \{s1, s2, …\} S={s1,s2,}
  3. 找出相似度最高的两个区域,将其合并为新集,添加进 R R R
  4. S S S 中移除所有与 2 中有关的子集;
  5. 计算新集与所有子集的相似度;
  6. 跳至 2 ,直至 S S S 为空。

2、架构

  • 模块1:Selective search(SS)获取区域;
  • 区域预处理:
    • Bounding box 膨胀 ⇒ 尺寸变换成 227×227.
  • 模块2:AlexNet 网络 ⇒ 对所有区域进行特征提取;
  • 模块3:线性 SVMs 分类器;
  • 模块4:Bounding box 回归模型。

4

3、微调

  • IoU = (A∩B) / (A∪B)

    • 正样本(N 类):跟 Ground-truth 重合 I o U ≥ 0.5 IoU \ge 0.5 IoU0.5
    • 负样本(1 类): I o U < 0.5 IoU < 0.5 IoU<0.5
  • M:在图像上对 CNN 进行 pre-train;

  • M‘:在 SS 生成的所有区域上对 M 进行 fine-tune。

  • 训练流程:

    1. C:在 M’ 的Fc7 特征上训练线性 SVMs 分类器:
      • Hinge loss;
      • 每个类别(N 类)对应一个 SVM 分类器;
      • 正样本:所有 Ground-truth 区域;
      • 负样本:跟 Ground-truth 重合 I o U < 0.3 IoU < 0.3 IoU<0.3 的 SS 区域。
        5
    2. SVM 训练完成后,若完全分类正确,所有正样本的输出概率都大于 0.5,而所有负样本的输出概率都小于 0.5。但会有一部分的负样本的输出概率也大于 0.5,这些样本就称为“False Positives”。把这些 “False Positives” 收集起来,对 SVM 进行二次训练,可提升分类准确度。
    3. R:在 M’ 的Fc7 特征上训练 Bounding box 回归模型:
      • 将 SS 提供的 Bounding box 做重新映射 P ⇒ G P ⇒ G PG
      • 训练输入:
        • 中心位置(x, y): P i = ( P x i , P y i , P w i , P h i ) P^i = (P_x^i, P_y^i, P_w^i, P_h^i) Pi=(Pxi,Pyi,Pwi,Phi)
        • 宽高尺寸(w, h): G i = ( G x i , G y i , G w i , G h i ) G^i = (G_x^i, G_y^i, G_w^i, G_h^i) Gi=(Gxi,Gyi,Gwi,Ghi)
        • P 的 I o U > 0.6 IoU > 0.6 IoU>0.6

4、测试阶段

  1. Selective Search 提取约2000区域/图片;
  2. 将所有区域膨胀+缩放到 227×227;
  3. 使用 fine-tuned AlexNet 计算2套特征。

三、SPP-Net

SPP 实现了:

  • 共享计算;
  • 适应不同输入尺寸。

6

1、训练流程

  • M:在图像上对 CNN 进行 pre-train;
  • F:计算所有 SS 区域的 SPP 特征;
  • M‘:使用 F 特征 fine tune 新fc6→fc7→fc8 层;
  • F’:计算 M‘ 的 fc7 特征;
  • C:使用 F’ 特征训练线性 SVM 分类器;
  • R:使用 F 特征训练 Bounding box 回归模型。

四、Fast R-CNN

  • 比 R-CNN、SPP-Net 更快;
  • 更高的 mAP;
  • 实现端对端单阶段训练;
  • 所有层的参数都可以 fine tune;
  • 不需要离线存储特征文件。

7

1、2个新技术

  • RoI pooling 感兴趣区域池化:
    • 将 RoI 区域的卷积特征拆分成 H×W 网格(7×7 for VGG);
    • 每个 Bin 内的所有特征进行 Max pooling。

8

  • Multi-task loss多任务损失函数:
    • L ( p , u , t u , υ ) = L c l s ( p , u ) + λ [ u ≥ 1 ] L l o c ( t u , υ ) L(p, u, t^u, \upsilon ) = L_{cls}(p, u) + \lambda [u \ge 1] L_{loc}(t^u, \upsilon ) L(p,u,tu,υ)=Lcls(p,u)+λ[u1]Lloc(tu,υ)
    • 分类器 Loss: L c l s ( p , u ) = − l o g p u L_{cls}(p, u) = -logp_{u} Lcls(p,u)=logpu
      • 每个 RoI 的概率分布: p = ( p 0 , … , p K ) p = (p_0, …, p_K) p=(p0,,pK)
    • Bounding box 回归 L1 Loss: L l o c ( t u , υ ) = ∑ i ∈ { x , y , w , h } s m o o t h L 1 ( t i u − υ i ) L_{loc}(t^u, \upsilon ) = \sum_{i\in \{x, y, w, h\}}smooth_{L1}(t_i^u - \upsilon_i) Lloc(tu,υ)=i{x,y,w,h}smoothL1(tiuυi) s m o o t h L 1 ( x ) = { 0.5 x 2 i f   ∣ x ∣ < 1 ∣ x ∣ − 0.5 o t h e r w i s e smooth_{L1}(x) = \left\{\begin{matrix} 0.5x^2 \quad if\ |x|<1 \\ |x| - 0.5 \quad otherwise \end{matrix}\right. smoothL1(x)={0.5x2if x<1x0.5otherwise
      • 每个 RoI 有 N个Loss;
      • 偏差目标: υ = ( υ x , υ y , υ w , υ h ) \upsilon = (\upsilon_x, \upsilon_y, \upsilon_w, \upsilon_h) υ=(υx,υy,υw,υh)
      • 预测偏差: t u = ( t x u , t y u , t w u , t h u ) t^u = (t^u_x, t^u_y, t^u_w, t^u_h) tu=(txu,tyu,twu,thu)
      • 指示函数: [ u ≥ 1 ] [u\ge 1] [u1]

2、训练流程

  1. 训练 RPN 网络;
  2. 训练 Fast R-CNN 网络:
    • Region proposals 由第一步的 RPN 生成。
  3. 调优 RPN:
    • 固定卷积层,finetune 剩余层。
  4. 调优 Fast R-CNN:
    • Region proposals 由第三步的 RPN 生成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值