🤵 Author :Horizon John
✨ 编程技巧篇:各种操作小结
🎇 机器视觉篇:会变魔术 OpenCV
💥 深度学习篇:简单入门 PyTorch
🏆 神经网络篇:经典网络模型
💻 算法篇:再忙也别忘了 LeetCode
[ 目标检测 ] 经典网络模型1——R-CNN 详解与复现
🚀 Regions with CNN features
近年来,目标检测性能在标准 PASCAL VOC 数据集上保持稳定 ;
性能最好的方法是复杂的集成系统(complex ensemble systems),通过将多个低维图像特征与高维背景结合 ;
利用 候选区域( region proposals )与 CNN 相结合 的方式,实现了平均精度(mAP)提高了30%以上 ;
R-CNN 与 OverFeat(最近提出的一种基于类似CNN结构的滑动窗口检测器)相比,性能大大优于OverFeat ;

🔗 论文地址:Rich feature hierarchies for accurate object detection and semantic segmentation
🚀 R-CNN 详解
🎨 R-CNN 提出背景
自 CNN 于1990s 提出开始到 2012年 AlexNet 夺得 ILSVRC 2012 图像分类任务的冠军 ;
作者思考:如何将 图像分类
的性能泛化到 目标检测
任务上 ?
基于此提出了两个重点研究的问题 :
- 使用深度卷积神经网络实现目标的定位 ;
- 使用少量带标签的检测数据来训练较强的网络模型 ;
🚩 核心思想
(1)候选区域与CNN相结合( Regions with CNN features );
(2)利用利用大数据集 (ILAVRC) 预训练模型,然后利用小数据集 (PASCAL) 进行候选区域的微调,解决训练数据稀疏的问题 ;
🎨 R-CNN 网络结构
R-CNN 目标检测系统主要有4个步骤 :
- 生成类别独立的
候选区域(Region proposals)
,这些候选区域组成了检测器的 检测集 ; - 利用
卷积神经网络
对每个候选区域提取固定长度的 特征向量 ; - 将 特征向量 输入到一系列特定类别的线性分类器 (
SVMs(二分类器)
) 进行分类 ; - 使用 回归器 调整修正候选框的位置 ;
🚩 Region proposals
使用 选择性搜索
(selective search)来生成候选区域(数量:~2k) ;
🚩 Feature extraction
使用 AlexNet
对候选区域的特征进行提取 ;
将候选区域统一变换为 227×227
像素大小输入 AlexNet 网络 ;
特征矩阵通常为 2000×4096(2000个候选框,4096维特征向量);
SVM 权重矩阵为 4096×N,N为类别数,最后得到 2000×N 维矩阵,分别为每个候选框对应的每个类别的得分 ;
🚩 Test detection
总的来说:
- 在测试环节,对图像进行选择性搜索,提取大约2000个
候选区域
; - 对候选区域进行尺寸变化并输入至
CNN
当中进行特征提取并输出特征向量 ; - 利用
SVM
对每个候选区域提取的特征向量进行评分分类 ; - 若候选区域存在着 ( IoU ) 重叠,采用
非极大值抑制
的方法进行抑制 ; - 对检测误差进行分析,借鉴 bounding-box regression 训练一个线性回归模型实现对
候选区域进行微调
;
注:
bounding-box regression
建议框:Pi = ( P x i P^i_x Pxi, P y i P^i_y Pyi, P w i P^i_w Pwi, P h i P^i_h Phi)
真实框:Gi = ( G x i G^i_x Gxi, G y i G^i_y Gyi, G w i G^i_w Gwi, G h i G^i_h Ghi)
分别对应着建议框和真实框的 中心点坐标
,宽度
,高度
;
定义建议框到真实框之间的变换: dx( P ),dy( P ),dw( P ),dh( P ) ;
根据这些定义训练一个回归模型得到回归参数: tx,ty,tw,th ;
🚀 R-CNN 复现
🎨 详见下一章节 📕 :[ 目标检测 ] 经典网络模型2——Fast R-CNN 详解与复现