目标检测入门(算法)

前言

首先要说明的是以下的内容都是我根据机器之心整理而来,在下文中我会简要的整理滑动窗口检测器、选择性搜索、R-CNN、Fast R-CNN、Faster R-CNN等大致流程。由于是刚入门,可能会有很多地方的算法理解错误 ,非常欢迎大佬们的点评!

滑动窗口检测器

简述流程

  • 将窗口从右到左、从上到下滑动以剪切图像块
  • 将剪切好的图像块进行变形转换成固定大小的图像(很多分类器支取固定大小的图像)
  • 将变形图像输入CNN分类器中,提取图像中的特征
  • 使用SVM分类识别器边框的一个线性回归器将目标、背景、边框区分在这里插入图片描述

该图是滑动窗口检测器的系统工作流程图。

不足

需要创建许多窗口来检测不同位置的不同目标,窗口数量太多,改进方法就是要尽可能将窗口数量减少

选择性搜索

滑动窗口检测器太过暴力且运行时间长,通过选择性搜索的方法可以减少窗口的数量,达到优化的效果。

简述流程

对图像使用候选区域方法来创建目标检测的感兴趣区域,即ROI区域

  • 将每个像素作为一组

  • 计算每组纹理,将最接近的两个组结合在一起(先对较小的组进行分组,再继续合并区域<——这样可以避免单个区域吞噬其他区域)

  • 下图第一行显示的就是合并区域过程中区域的增长

  • 在合并过程中会框选出所有可能的ROI区域,如下图第二行:在这里插入图片描述

R-CNN

R-CNN利用的就是候选区域方法来获得图像块

简述流程

  • 通过候选区域方法创建ROI区域(选择性搜索的过程)
  • 将搜索到的区域转换成固定大小的图像
  • 将图像馈送到卷积神经网络中,进行图像特征的提取
  • 在卷积神经网络的后面用几个全连接层将目标分类,并提炼出边界框

在这里插入图片描述

上图为R-CNN的流程图。

此处涉及到SVM分类识别器,这篇博客对SVM分类识别器介绍的很详细,可以查看

边界框的回归器一般可以使用全连接层(使用回归方法)来进一步地提炼边界框

不足

R-CNN虽然减少了窗口的数量,但它仍然需要很多候选区域来提升识别的准确度,而这些候选区域中有很多会是彼此重叠的,仍然需要改进

Fast R-CNN

对R-CNN改进提出的一个想法:R-CNN是先获取ROI区域,再将每个ROI区域进行特征提取,这样就要提取很多次特征,耗时大;那么能不能先将原图中的特征提取出来,构建出一张特征图后再获取ROI区域。

Fast R-CNN就是利用了后面这种想法

简述流程

  • 使用特征提取器(CNN)提取整个图像的特征
  • 在特征图上应用创建候选区域的方法(外部候选区域方法),将关注区域与对应的特征图结合剪裁出特征图快
  • 使用ROI池化将特征图块转换成固定的大小
  • 将池化后的图块馈送到全连接层中进行分类和定位

在这里插入图片描述

以上为Fast R-CNN的流程图。

Fast R-CNN的特征:将计算量巨大的特征提取过程从for循环中移出来,训练速度提高;还有一点是它的包含了特征提取器、分类器、边界框回归器在内的整个网络,能通过多任务损失函数进行端到端的训练,提高了模型的准确度。

不足

它比较依赖于外部候选区域方法(例如:选择性搜索),这些外部候选区域算法在CPU上运行速度慢。这边需要再次改进

Faster R-CNN

总体流程与Fast R-CNN一致,但Faster R-CNN在候选区域方法的选择上与Fast R-CNN不同,Faster R-CNN采用的是内部深层网络来采取ROI区域。

简述流程

  • 使用特征提取器(CNN)提取整个图像的特征
  • 在特征图上应用创建候选区域的方法(内部深层网络,可选用候选区域网络(RPN)),将关注区域与对应的特征图结合剪裁出特征图快
  • 使用ROI池化将特征图块转换成固定的大小
  • 将池化后的图块馈送到全连接层中进行分类和定位

在这里插入图片描述

此为Faster R-CNN流程中简化的操作图

在这里插入图片描述

此为Fast R-CNN流程中简化的操作图

从两张操作图中我们也可以比较出Fast R-CNN与Faster R-CNN的不同之处。

总结

在这篇博客中我主要概述了two-stage模型中的一些目标检测算法,未整理one-stage模型的算法,在机器之心中也有对one-stage中的一些算法进行描述。具体可以在这篇我参考的机器之心讲解中查看

猜你喜欢

转载自blog.csdn.net/qingtian_111/article/details/88973550