目标检测:在给定的图片中精确找到物体所在位置,并标注出物体的类别。
目标检测=图像识别(CNN)+定位(回归问题/取图像窗口)
遇到多物体识别+定位多个物体?
用选择性搜索找出可能含有物体的框(候选框)判定得分。这些框之间是可以互相重叠互相包含的,从而避免暴力枚举的所有框了。
1.R-CNN
步骤一:训练(或者下载)一个分类模型(比如AlexNet)
步骤二:对该模型做fine-tuning
- 修改分类数
- 去掉最后一个全连接层
步骤三:特征提取
- 提取图像的所有候选框(选择性搜索)
- 对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘
步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别
- 每个类别对应一个SVM,判断是不是属于这个类别,是就是正类,反之负类
步骤五:训练一个回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。
速度瓶颈
计算机对所有候选框进行特征提取时会有重复计算。
2.Fast R-CNN
在RCNN的基础上采纳了SPP Net方法(空间金字塔池化)
- 整张图输入CNN提取一次特征
- 找出每个候选框在feature map上的映射patch
速度瓶颈
选择性搜索,找出所有的候选框这个过程也耗时
3.Faster R-CNN
在Fast R-CNN的基础上加入一个提取候选区域的网络RPN(Region Proposal Network),代替了费时的选择性搜索,使得检测速度大幅提高。
具体做法
- 将RPN放在CNN最后一个卷积层的后面
- RPN直接训练得到候选区域
RPN简介
- 本质是 “ 基于滑窗的无类别目标检测器 ” :
- 在feature map上滑动窗口产生锚点
- 建立一个神经网络用于物体分类+框位置的回归
- 滑动窗口的位置提供了物体的大体位置信息
- 框位置的回归提供了框更精确的位置