• 8月25日计算机视觉理论学习笔记——R-FCN、YOLO



    前言

    本文为8月25日计算机视觉理论学习笔记,分为四个章节:

    • R-FCN;
    • YOLO v1;
    • YOLO v2;
    • YOLO v3.

    一、R-FCN

    适应全卷积化 CNN 结构,提出全卷积化设计——共享 ResNet 所有卷积层。

    引入变换敏感性(Translation variance):

    1. 位置敏感分值图(Position-sensitive score maps);
    2. 位置敏感池化(Position-sensitive RoI pooling)。

    1

    1、位置敏感卷积层

    使用 k 2 ( C + 1 ) k^2(C+1) k2(C+1) 个通道对组合进行编码:

    • 类别:C个物体类+1个背景类;
    • 相对位置:k×k 个 Grid(k=3);
    • 位置敏感分值图(Position-sensitive score maps):
      • 每个分类 k 2 k^2 k2 个 score map;
      • score map 尺寸=图片尺寸。

    2

    2、位置敏感RoI池化层

    显示编码相对位置的信息:

    • 将 w×h 尺寸的 RoI 拆分成 k×k 个 w k × h k \frac{w}{k}\times \frac{h}{k} kw×kh 尺寸的 bin;
    • 不同颜色的 bin 对应不同颜色的 score map;
    • Bin 内做均值池化;
    • 输出尺寸: k × k × ( C + 1 ) k\times k\times (C+1) k×k×(C+1)

    3

    3、多任务损失函数

    • 总损失: L ( s , t x , y , w , h ) = L c l s ( s c ∗ ) + λ [ c ∗ > 0 ] L r e g ( t , t ∗ ) L(s, t_{x, y, w, h}) = L_{cls}(s_{c^*}) + \lambda [c^* > 0]L_{reg}(t, t^*) L(s,tx,y,w,h)=Lcls(sc)+λ[c>0]Lreg(t,t)
    • 分类损失函数: L c l s ( s c ∗ ) = − l o g ( s ∗ ) L_{cls}(s_{c^*}) = -log(s^*) Lcls(sc)=log(s)
    • Bounding box 回归损失函数:
      • 4 k 2 4k^2 4k2 通道的位置敏感卷积层: L r e g ( t i , t ∗ ) = R ( t i − t ∗ ) L_{reg}(t_i, t^*) = R(t_i - t^*) Lreg(ti,t)=R(tit)

    4、训练

    OHEM(Online Hard Example Mining):

    1. 首先对 RPN 获得的候选 RoI 进行排序操作;
    2. 然后在含有正样本的 RoI 中选择前 N个RoI,将正负样本的比例维持在1:3的范围内,保证每次抽取的样本中都会含有一定的正样本。

    二、YOLO v1

    YOLO 将物体检测任务当做一个 regression 问题来处理:

    1. 将图像 resize 到 448×448 作为神经网络的输入;
    2. 使用一个神经网络,从一整张图像预测出 bounding box 的坐标、box 中包含物体的置信度和物体的可能性;
    3. 然后进行非极大值抑制,筛选 boxes。

    4

    • 步骤:

      1. Pretrain;
      2. 将 Pretrain 的结果的前20层卷积层应用到 Detection 中,并加入剩下的4个卷积层及2个全连接;
      3. 将所有的预测结果都归一化到0~1,使用 Leaky ReLu 作为激活函数;
      4. 将一幅图像分成 S × S S\times S S×S 个网格(grid cell);
      5. 每一个栅格预测 B B B个 bounding boxes 以及它们的 confidenc scores。confidenc scores 反映了模型对于这个栅格的预测:该栅格是否含有物体,以及这个 box 的坐标预测的有多准;
      6. c o n f i d e n c e = P r ( O b j e c t ) × I o U p r e d t r u t h confidence = Pr(Object)\times IoU_{pred}^{truth} confidence=Pr(Object)×IoUpredtruth
      7. 若该栅格不存在 object,则 confidenc scores 为 0;否则,confidenc scores 为 predicted bounding box 和 ground truth box 之间的 IoU(Intersection over union)。
    • 网络结构: 由24个卷积层与2个全连接层构成,网络入口为 448×448,输出结果为一个张量:

      • 输出维度: S × S × ( B × 5 + C ) S\times S\times (B\times 5 + C) S×S×(B×5+C)
      • 其中, S S S 为划分网格数, B B B 为每个网格负责目标个数, C C C 为类别个数。
    • NMS(非极大值抑制):

      1. 首先从所有的检测框中找到置信度最大的那个框;
      2. 然后挨个计算其与剩余框的 IoU,若其值大于一定阈值(重合度过高),那么就将该框提出;
      3. 重复上述过程,直到处理完所有的检测框。
    • 优点:

      1. 检测物体的速度很快;
      2. 假阳性率低;
      3. 能学到更加抽象的物体的特征。
    • 不足:

      1. 检测精度较低;
      2. 容易产生物体的定位错误;
      3. 对小物体的检测效果不好。

    三、YOLO v2

    5

    • Batch Normalization: 提高模型收敛速度;

    • Dimension Clusters: 使用 K-means 聚类方法训练 bounding boxes,可自动找到更好的 boxes 宽高维度;

    • Multi-scale Training: 模型只包含卷积层和 pooling 层,因此可以随时改变输入尺寸。每经过10次训练,就会随机选择新的图片尺寸进行训练。


    四、YOLO v3

    6

    • 使用了一个 53层的卷积网络,由残差单元叠加而成;
    • 使用逻辑回归预测每个编辑框的分数;
    • 损失函数:binary cross-entropy。

  • 相关阅读:
    前端页面的性能测试
    如何将vue项目打包在服务器上使用nginx运行,并使用反向代理解决跨域问题
    自动化运维管理平台TASKCTL如何在Docker安装部署
    网络货运平台服务模式,你真的了解吗?
    Python 设计模式之单例模式
    WebStorm下载与安装2022版教程注册码WebStorm使用配置
    oracle存储过程实现定时备份表和处理重复数据
    Vue整合
    7个技巧让你写出干净的 TSX 代码
    C/C++开发,opencv-ml库学习,支持向量机(SVM)应用
  • 原文地址:https://blog.csdn.net/Ashen_0nee/article/details/126509137