浅析R-CNN

R-CNN是用来干嘛的

目标检测

那么它和传统的目标检测有什么不同吗

传统的目标检测算法:
Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化
缺点:
1)基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余
2)手工设计的特征对于多样性的变化没有很好的鲁棒性

R-CNN算法:
候选区域/窗 + 深度学习分类。

R-CNN架构

R-CNN简要步骤如下:
(1) 输入测试图像
(2) 利用选择性搜索Selective Search算法在图像中从下到上提取2000个左右的可能包含物体的候选区域Region Proposal
(3) 因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放(warp)成统一的227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征
(4) 将每个Region Proposal提取到的CNN特征输入到SVM进行分类

具体步骤则如下
步骤一:训练(或者下载)一个分类模型(比如AlexNet)
浅析R-CNN_第1张图片
步骤二:对该模型做fine-tuning
  • 将分类数从1000改为20,比如20个物体类别 + 1个背景
  • 去掉最后一个全连接层
浅析R-CNN_第2张图片
步骤三:特征提取
  • 提取图像的所有候选框(选择性搜索Selective Search)
  • 对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘
浅析R-CNN_第3张图片
步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别
每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative。
浅析R-CNN_第4张图片
步骤五:使用回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。边框回归看这里 https://blog.csdn.net/zijin0802034/article/details/77685438
浅析R-CNN_第5张图片
缺点:R-CNN虽然不再像传统方法那样穷举,但R-CNN流程的第一步中对原始图片通过Selective Search提取的候选框region proposal多达2000个左右,而这2000个候选框每个框都需要进行CNN提特征+SVM分类,计算量很大,导致R-CNN检测速度很慢,一张图都需要47s。

所以才有了后面的一些论文例如SPP net,Fast R-CNN,Faster R-CNN等网络,大家可以去看看。

你可能感兴趣的:(深度学习)