二阶段目标检测系列文章
目标检测1——二阶段目标检测概述
目标检测2——R-CNN(将CNN网络应用在目标检测领域的开山之作)
目标检测3——SPPNet(空间金字塔池化可以接收任何尺度的图像)
目标检测4——Fast R-CNN(ROI Pooling、SVD、Multi-task Loss等新特性实现端到端的训练并显著提升训练和推理的速度)
目标检测5——Faster R-CNN(RPN网络代替Selective Search来获取候选框)
一、基本介绍
- CVPR2014:Rich feature hierarchies for accurate object detection and semantic segmentation
- R-CNN 的全称为 Regions with Convolutional Neural Network Features
- R-CNN 是一种基于 Region Proposal 的 CNN 网络结构
- R-CNN 是将深度学习应用到目标检测领域的经典之作,并凭借卷积神经网络出色的特征提取能力,大幅度提高了目标检测的效果
- 尽管R-CNN显著地提高了目标检测的效果,但仍存在以下问题:
- 重复计算
- 训练测试分为多步
- 训练的空间和时间代价很高
- 检测速度较慢 10s/image (GPU)、50s/image (CPU)
- 无法输入任意尺寸大小图片
二、R-CNN的基本步骤
基本步骤
- Region Proposal:提取候选框/ROI(~2k/image,Selective Search)
- ROI 预处理:先将候选框膨胀16像素(dilate),再将候选框缩放至227×227固定大小
- 特征提取:通过 CNN 网络提取每个候选区域的图像特征(AlexNet,4096维)
- 分类与回归:
- 分类:使用 N 个 SVM 分类器(二分类,FC7,N-类别数量)
- 回归:Bounding Box Regression 进行候选框的微调(Conv5)
Bounding Box Regression
- 黄色框口 P 表示建议框 Region Proposal
P = ( P x , P y , P w , P h ) P=(P_x, P_y, P_w, P_h) P=(Px,Py,Pw,Ph) - 绿色窗口 G 表示实际框 Ground Truth
G = ( G x , G y , G w , G h ) G=(G_x, G_y, G_w, G_h) G=(Gx,Gy,Gw,Gh) - 红色窗口
G
^
\hat{G}
G^ 表示 Region Proposal 进行回归后的预测窗口
G ^ = ( G x ^ , G y ^ , G w ^ , G h ^ ) \hat{G}=(\hat{G_x}, \hat{G_y}, \hat{G_w}, \hat{G_h}) G^=(Gx^,Gy^,Gw^,Gh^) - 目标是找到 P 到
G
^
\hat{G}
G^ 的线性变换
三、R-CNN 相关思考问题
- 为什么选择FC层的输出作为ROI的高阶特征?
- 为什么进行fine-tuning?
- 为什么在CNN softmax模型训练之外,需要单独训练一个SVM分类器呢?
四、针对R-CNN的改进
- 提取候选框:EdgeBoxes、RPN网络
- 共享卷积运算:SPPNet、Fast R-CNN
- 兼容任意尺寸图像:SPP、ROI Pooling
- 预设长宽比:Anchor
- 网络结构:端到端
- 融合各层特征:FPN