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
- 使用不同的卷积核依次进行卷积提取特征
- 滑动窗口步长: 步长不同会导致特征图尺寸不同
- 步长越小, 计算效率越低
- 卷积核尺寸
- 边缘填充
- 有些卷积核按照特定步长会导致漏掉一些原图的像素, 所以需要再边界补 .
- 不会对卷积计算产生影响.
- 卷积核个数
- 卷积核的个数决定了特征图的厚度 (第三个维度)

卷积操作涉及的参数如下:


- 卷积的尺寸计算, 卷积有两种方式: VALID 和 SAME. VALID 不进行补 , 会漏掉一些原图的参数, SAME 补 , 多加一圈 来补齐. 下面的公式是 SAME, 去掉 就是 VALID.
- 长度:
- 宽度:
- 表示 input 的宽度和长度
- 表示输入特征图的宽度和长度
- 表示卷积核长和宽的大小
- 表示滑动窗口的步长
- 表示边界填充 (padding) 厚度

- 卷积参数共享:
- 如果图像是 的图像, 卷积核有 个, 尺寸都为 (就是对 RGB 三通道都做卷积). 这样的话, 每个卷积核需要 个参数, 加上每个卷积核都有一个对应的偏置参数 , 总共需要 个参数.
- 所以卷积网络参数远少于全连接神经网络参数.
使用多个不同尺寸的卷积核之后全连接如何处理? (NLP 处理句子或 CV 处理图片时被使用到)
1.2. 池化层 Pooling layer
- 池化层的作用: 用于压缩 (下采样 Down sampling), 因为图片中并不是所有信息都有用.
- 池化层没有用到矩阵的运算, 单纯的是一个筛选.

- Max pooling
- 为什么使用 Max pooling?
设置一个过滤器 (如 2*2), 取这个过滤器覆盖的数中最大的数
因为神经网络中, 大的值往往更重要, 所以只提取大的值就是只采样重要的值.
- Average pooling
- 但是在实际使用中, 基本上 Max pooling 的表现都优于 Average pooling.
取过滤器中所有数的平均值
- 池化计算
- 如果池化层的卷积核设置为 , 则输入的长宽都除以 .
1.3. 全连接层 Fully Connected Layer
收尾的全连接层是无法对 维特征作分类, 所以需要将结果展开成 维.
1.4. 一些多层网络上的知识

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

1.5. 一些经典的卷积网络
传统卷积网络结构大多为下图所示, 不断增加卷积提取更高层的特征.

AlexNet (2012) 8层
Vgg (2014) 16层
ResNet(2015) 常见层数: 18, 50, 101
2. Featurized image pyramid 从图像金字塔提取特征

- 将图片 resize 成不同尺寸
- 对每个图片提取不同尺度的特征
- 对每个不同尺度的特征都进行单独预测
- 优点: 能够获得不同尺度下特征的语义信息
- 缺点: 性能消耗很大
3. Pyramid feature hierarchy 特征金字塔

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 去检测小目标, 而低级特征卷积层数少, 存在特征提取不充分的问题