计算机视觉 - 目标检测
R-CNN - Rich feature hierarchies for accurate object detection and semantic segmentation
架构主要分为四部分
-
每张图片,通过 Selective Search 方法产生约 2k 张候选区域
selective search 中提出了三种策略
使用具有不同性的各种颜色空间
使用不同的相似度度量,包括颜色、纹理、大小、吻合等
使用不同的初始化区域
整个过程是自底向上的 -
特征提取
将 2k 张 region proposals 归一化成同一尺寸 227 x 227
warp training regions
论文中采用的方法:
根据 bounding box (region proposal 的边界),从原图中再取出周围的16像素,然后使用 bilinear 方法 resize 到 227 x 227 (论文附录A中介绍了其他的方法)
然后送入 AlexNet 中,得到 fc7 特征(4096维) -
SVM分类
对每一个类,训练一个SVM,得到该候选区域相对该类的的得分。 -
Bounding-Box regression
每一个类别训练一个回归器
模型的训练阶段:
-
CNN 训练
输入为 region proposals,若该候选区域与 ground-truth box 的 IoU 大于等于0.5,就标记为 ground-truth 对应的类别,否则为背景(可以有多个类)。
训练时每个 batch 中有 32 个非背景和 96 个背景(原因是 region proposals 中大多是背景) -
SVM 训练
SVM 使用线性核,正样本为 ground-truth,负样本为 IoU 都小于0.3的图片 -
threshold 在不同阶段使用不同值的原因
CNN 训练过程中需要大量的样本以防止过拟合。有很多 IoU 在 0.5 与 1 之间却不是 ground-truth 的候选区域被划为正例。而 linear SVM 适合相较之下较小的数据集,因此对正负例的限制更严格。
模型的预测阶段:
- 当两个候选区域同时预测为同一类型的目标,而且两者的 IoU 超过了一个阈值,那么得分较低的候选区域将不会被分配该类
(非极大值抑制后进行 bounding box regression 训练时直接 bounding box regression)
Fast R-CNN
RCNN 的缺点
- 多级管道:convNet + SVM + bounding-box regression
- 训练成本高
- 每个 region proposal 都要跑次 CNN,计算量过大
改进
-
方式:输入图片喂给 ConvNet,如VGG16,得到conv5特征(最后一个卷积层),然后,将每个 region proposal 对应的 conv5 特征子图经过 ROIPooling,得到 H x W feature maps,H 和 W 是超参数,论文中使用的是 7x7 【每 h / H,w / W 的区域取 max Value】。然后接两层 FCs,得到 4096 维特征,然后预测类别和候选区域。
-
结果:一张图片有有 2000 张区域候选框。
在 RCNN 中,CNN的卷积部分要跑 2000 遍,全连接部分要跑 2000 遍。
在 Fast RCNN 中,CNN的卷积部分只跑 1 遍,全连接部分要跑 2000 遍。
模型的训练阶段:
-
每个 batch,选择两个图片,每张图片中选择 128 / 2 = 64 个 RoI,训练速度比从128张图选择一个RoI 快几十倍。
batch: 25% RoI 正例 与 ground-truth bounding box 的 IoU 大于 0.5。 75% RoI 负例 与任意 ground-truth bounding box 的 IoU 在 [0.1, 0.5] 之间 -
50%概率的 h-filp 是唯一的 data augmentation
Faster RCNN
region proposal network 输入任意大小的图片,输出一系列的矩形目标区域,以及相对应的 “是目标而不是背景” 的概率
设每个位置最多有 k 个 region proposal。输出: 2k 个 bounding box classification 和 4k 个 bounding box regression
论文中 k = 9,3个scale,3个aspect ratios
根据 anchor,找到 feature map 中对应的区域,运行 Fast RCNN head
RPN
论文中使用的网络为VGG16的第一层到 Conv 5-3 (4次下采样)
然后在输出的特征图上使用 n x n的滑动窗口,对每个窗口,c x n x n 全连接得到 512 dimension feature,然后输出2k 个 bounding box classification 和 4k 个 bounding box regression
Anchor
由于是multi-scale,所以不需要 Image Pyramid【Image Pyramid将image resize 到不同的大小】
使用 anchors,依旧可以保存平移不变性
对于损失函数中的回归:
ground truth 是 anchor 为正例所对应的 bounding box
关于损失函数
回归中使用 smooth L1,当 RoI的 gt 为前景(物体)时,才计算回归的损失
Feature Pyramid Networks for Object Detection
在目标检测中,为了检测到不同 scale 的物体,提高模型精度,在测试阶段将图片 resize 为 multi-scale,送入分类器中预测结果并将结果合并(训练时直接训练,若采用 image pyramid,内存和计算太大)
Faster RCNN 选择了 multi-scale anchor 的方法来捕获不同大小的目标
SSD 直接选择了在前向过程中不同大小的 feature map 进行计算预测,为了避免使用 high-resolution feature map,SSD 从 conv4-3 开始建立金字塔,并在 VGG 的后面添加了新的层
FPN
同一大小的 feature maps 属于金字塔的同一层,每层选择下采样前的卷积层作为 lateral connection 的输入。
上采样使用最近邻
对于RPN,每个 level 对应的 anchor 的大小固定,三种长宽比,共 15 种 anchor
对于 Fast R-CNN:不同的 RoI 在不同的 level 对应的 feature map 上运行, RoIPooling 到 7x7
Mask RCNN
Focal loss - RetinaNet
Soft NMS
OHEM Stratified OHEN
R-FCN
Box Voting : Object detection via a multi-region & semantic segmentation-aware CNN model
Deformable ConvNets
Cascade RCNN
Light-Head RCNN
浙公网安备 33010602011771号