目标检测算法
问题及简史
滑动窗口法:不断在图像中切出小的图像块,检测完所有图像块后再进行置信度判断,留下的方框作为检测结果。①对图像尺寸进行缩放。②图像窗口尺寸变化。
AdaBoost:加大错分样本的权重,以使下一次分类正确。不断构造弱分类器,实现多个弱分类器的结连,从而形成强分类器
基于深度学习的检测算法
R-CNN基本策略
- 输入测试图像;
- 利用selective search算法在图像中从上到下提取2000个左右的候选区域;
- 将每个候选区域缩放成227*227的大小并输入到CNN,将CNN的fc7层的输出作为特征;
- 将每个候选区域提取的CNN特征输入到SVM进行分类;
- 对于SVM分好类的候选区域做边框回归
R-CNN的缺点:
- 训练分为多个阶段,步骤繁琐:微调网络+训练SVM+训练边框回归器;
- 训练耗时,占用磁盘空间大;5000张图像产生几百G的特征文件;
- 速度慢:使用GPU,VGG16模型处理一张图像需要47s;
- 测试速度慢:每个候选区域需要运行整个前向CNN计算;
- SVM和回归是事后操作,在SVM和回归过程中CNN特征没有被学习更新。
Fast R-CNN基本策略
- 输入测试图像;
- 利用selective search算法在图像中从上到下提取2000个左右的候选窗口;
- 将整张图片输入CNN,进行特征提取;
- 把候选窗口映射到CNN的最后一层卷积特征图上;
- 通过RoI pooling层使每个候选窗口生成固定尺寸的特征图/向量;
- 利用Softmax Loss和Smooth L1 Loss(探测边框回归)对分类概率和边框回归进行联合训练。
与R-CNN相比:
- 最后一层卷积层后加了一个ROI pooling layer;
- 损失函数使用了多任务损失函数(multi-task-loss),将边框回归直接加入到CNN网络中训练
改进之处:
- 速度的提升: R-CNN的候选框之间大量重叠,造成了运算能力的浪费。FAST-RCNN将整张图像归一化后直接送入CNN,在最后的卷积层输出的feature map上,加入建议框信息,使得在此之前的CNN运算得以共享。
Faster R-CNN
- 输入测试图像;
- 将整张图片输入CNN,进行特征提取;
- 用RPN生成候选窗口,每张图片保留约300个Proposal;
- 把候选窗口映射到CNN的最后一层卷积特征图上;
- 通过RoI pooling层使每个RoI生成固定尺寸的特征图;
- 利用Softmax Loss和Smooth L1 Loss(探测边框回归)对分类概率和边框回归的联合训练。
Region Proposal Network(RPN)
- 在feature map上滑动窗口,在每个位置上产生若干个候选anchor(N=9)
- 建一个神经网络用于anchor分类+框位置的回归
- 滑动窗口的位置提供了物体的大体位置信息
- 框的回归提供了框更精确的位置