目标检测问题常用的模型
2023-7-23
| 2024-3-4
字数 1490阅读时长 4 分钟
type
Post
status
Published
date
Jul 23, 2023
slug
summary
一些目标检测问题常用的网络结构. FPN, R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN
tags
Deep Learning
CNN
Computer Vision
category
Documents
icon
password

1. 原始CNN

卷积结构的网络大致由 3 各网络层组成: 卷积层, 池化层和全连接层.

1.1. 卷积层 Convolution layer

  • 使用不同的卷积核依次进行卷积提取特征
    • notion image
      卷积操作涉及的参数如下:
      1. 滑动窗口步长: 步长不同会导致特征图尺寸不同
        1. 步长越小, 计算效率越低
        2. notion image
      1. 卷积核尺寸
      1. 边缘填充
        1. 有些卷积核按照特定步长会导致漏掉一些原图的像素, 所以需要再边界补 .
        2. 不会对卷积计算产生影响.
      1. 卷积核个数
        1. 卷积核的个数决定了特征图的厚度 (第三个维度)
      notion image
  • 卷积的尺寸计算, 卷积有两种方式: VALID 和 SAME. VALID 不进行补 , 会漏掉一些原图的参数, SAME 补 , 多加一圈 来补齐. 下面的公式是 SAME, 去掉 就是 VALID.
    • notion image
    • 长度:
      • 宽度:
        • 表示 input 的宽度和长度
        • 表示输入特征图的宽度和长度
        • 表示卷积核长和宽的大小
        • 表示滑动窗口的步长
        • 表示边界填充 (padding) 厚度
      • 卷积参数共享:
        • 如果图像是 的图像, 卷积核有 个, 尺寸都为 (就是对 RGB 三通道都做卷积). 这样的话, 每个卷积核需要 个参数, 加上每个卷积核都有一个对应的偏置参数 , 总共需要 个参数.
        • 所以卷积网络参数远少于全连接神经网络参数.
      使用多个不同尺寸的卷积核之后全连接如何处理? (NLP 处理句子或 CV 处理图片时被使用到)

      1.2. 池化层 Pooling layer

      • 池化层的作用: 用于压缩 (下采样 Down sampling), 因为图片中并不是所有信息都有用.
      • 池化层没有用到矩阵的运算, 单纯的是一个筛选.
        • notion image
      • Max pooling
        • 设置一个过滤器 (如 2*2), 取这个过滤器覆盖的数中最大的数
        • 为什么使用 Max pooling?
          • 因为神经网络中, 大的值往往更重要, 所以只提取大的值就是只采样重要的值.
      • Average pooling
        • 取过滤器中所有数的平均值
        • 但是在实际使用中, 基本上 Max pooling 的表现都优于 Average pooling.
      • 池化计算
        • 如果池化层的卷积核设置为 , 则输入的长宽都除以 .

      1.3. 全连接层 Fully Connected Layer

      收尾的全连接层是无法对 维特征作分类, 所以需要将结果展开成 维.

      1.4. 一些多层网络上的知识

      notion image
      注意! 带参数计算的网络层才能被称为一层. 由于 RELU (激活函数) 和 POOL 层都没有数学计算, 所以不被计算在层数中. 所以上面的多层网络中, 只有 CONV 和 FC 层被计算层数. 这是一个七层网络.
      notion image

      1.5. 一些经典的卷积网络

      传统卷积网络结构大多为下图所示, 不断增加卷积提取更高层的特征.
      notion image
      AlexNet (2012) 8层
      Vgg (2014) 16层
      ResNet(2015) 常见层数: 18, 50, 101

      2. Featurized image pyramid 从图像金字塔提取特征

      notion image
      1. 将图片 resize 成不同尺寸
      1. 对每个图片提取不同尺度的特征
      1. 对每个不同尺度的特征都进行单独预测
      • 优点: 能够获得不同尺度下特征的语义信息
      • 缺点: 性能消耗很大

      3. Pyramid feature hierarchy 特征金字塔

      notion image

      3.1. SSD (Single Shot MultiBox Detector) 算法 2015

      • SSD (ECCD 2016) 性能远超 Faster RCNN (相同 mAP 下, 性能 7 倍)
        • AP是什么?
          mAP是什么?
      • 特点
        • YOLO 中继承了将 Detection 转化为 Regression 的思路, 一次完成目标定位与分类.
        • 基于 Faster RCNN 中的 Anchor, 提出了与之相似的 Prior box.
      SSD 按照如下规则生成 Prior box
      • SSD 加入基于特征金字塔的检测方式,即在不同感受野 (即尺度, 尺寸) 的 Feature map 上预测目标. 具体来讲, SSD 的突出贡献是: 使用低层 Feature map 检测小目标,使用高层 Feature map 检测大目标.
      • 训练时的样本标记, 正负样本比例为 1:3 (经验值)
        • 正样本: 与 GT 重合度高的 boxes, 其输出对应分类设为对应物体; 物体 GT 框与 Anchor 的 IOU 大于 0.5
        • 负样本: 其他所有样本
      SSD 模型图和精度效率图
      • SSD 输入尺寸
      SSD 输出的矩阵结构是 4 个偏移 (shape offsets) + 21 个类别置信度 (20 个类别+ 1 个背景类别)
      • SSD 的损失函数
        • 位置回归 default box: Softmax Loss (Faster R-CNN 是 log loss)
        • 目标类别分类 score 置信度: Smooth L1 loss (同 Faster R-CNN)
      • 优点
        • 性能媲美 YOLO
        • 检测精度媲美 Faster RCNN
      • 缺点
        • 需要手动设置 prior box 的 min_size, max_size 和 aspect_ratio 值. 网络中 prior box 的基础大小和形状不能直接通过学习获得, 而是需要手工设置. 而网络中每一层 feature 使用的 prior box 大小和形状恰好都不一样, 导致调试过程非常依赖经验
        • 虽然采用了特征金字塔 (Pyramdial feature hierarchy) 的思路, 但是对小目标的 Recall 依然一般, 并没有达到碾压 Faster RCNN 的级别. 作者认为, 这是由于 SSD 使用 conv4_3 低级 feature 去检测小目标, 而低级特征卷积层数少, 存在特征提取不充分的问题

      3.2. 特征金字塔网络 Feature Pyramid Network (FPN) 2017

    • Deep Learning
    • CNN
    • Computer Vision
    • OCR文本检测和DBNet机器学习模型介绍
      Loading...