分享
R-CNN:两阶段检测开山
输入“/”快速插入内容
R-CNN:两阶段检测开山
飞书用户9071
9月4日修改
【置顶必看】k学长的深度宝典
1、R-CNN的背景和动机
一、R-CNN 出现之前的困境
在 R-CNN 出现前,计算机视觉中的目标检测主要依赖于
人工设计的特征
(如 SIFT、HOG)加上传统分类器(如 SVM)。
1.
SIFT / HOG ——“手工做的放大镜”
你可以把 SIFT
尺度不变特征转换
(
Scale-invariant feature transform
) / HOG 想象成
工匠手工打磨的放大镜
:
•
它们能帮我们在图像里找到一些“关键点”和“方向”,比如边缘在哪里、轮廓朝哪边。
•
就好比你戴上一个“只能看清边缘的眼镜”,能看见物体的大概形状,但看不到更复杂的东西(比如纹理、颜色组合、抽象的特征)。
👉 所以,SIFT / HOG 只能捕捉
很局部的低层次信息
,像是“狗耳朵有个尖角”“车轮是圆的”,但没法很好地理解整体“这是只狗”或者“这是辆车”。
2.
DPM(可变形部件模型)——“拼装玩具机器人”
DPM 就像是一个
用零件拼装机器人的模型
:
•
它会把一个物体拆成多个部分,比如“头、身体、四肢”,或者“车头、车身、车轮”。
•
每个部分用 HOG 特征来描述(比如“车轮是圆的边缘”)。
•
最后再把这些部分拼起来,判断是不是一个完整的物体。
这种方法在简单场景里还不错,就像拼乐高玩具时零件都很标准。
但在复杂场景下——
•
如果物体被遮挡(比如人被桌子挡住一半),某些零件找不到,就拼不完整。
•
如果物体姿态变化大(比如人转了个怪姿势),这些零件的位置和角度就不对了,模型就容易认错。
👉 所以,DPM 就像一个“靠拼装零件识别东西的机器人”,在理想情况下很聪明,但一旦环境复杂,就容易迷糊。
二、ImageNet 引爆深度学习
2012 年,
AlexNet
在 ImageNet 图像分类比赛上大幅领先(错误率降低了近 10%)。它用
卷积神经网络(CNN)
自动学习图像特征,而不是人工设计。
•
这让大家看到:CNN 的特征远比 HOG、SIFT 更强大。
•
于是研究人员开始思考:
既然 CNN 在分类任务上这么好,那能不能把它用于目标检测?
问题是:
分类
只要判断整张图片里是什么,而
检测
需要知道目标在哪里(位置 + 类别),难度要高很多。
三、R-CNN 的动机
R-CNN 的作者(Ross Girshick 等)正是从这个问题出发:
1.
CNN 怎么用来定位物体?
◦
分类 CNN 只能输入固定大小的图片,输出一个类别。
◦
但目标检测要在图像中找到多个不同大小和位置的目标。
◦
如果直接用“滑动窗口 + CNN”方式(把窗口在图像里一个个滑过去),计算量极大,而且效果不好。
2.
训练数据不足怎么办?
◦
CNN 是“高容量模型”,需要海量数据。
◦
但是目标检测数据集(如 PASCAL VOC)很小,不足以直接训练一个大网络。