目录

  • 1. 目标检测与定位概念
  • 2. 目标检测与定位方法
    • 2.1 传统目标检测流程
    • 2.2 two-stage检测算法
      • 2.2.1 R-CNN
      • 2.2.2 two-stage其他算法
        • 2.2.2.1 Spatial Pyramid Pooling(空间金字塔池化)
        • 2.2.2.2 Fast-RCNN
        • 2.2.2.3 P11 Faster RCNN
    • 2.3 One-Stage
      • 2.3.1 YOLO
      • 2.3.2 SSD
  • 参考

本文简单介绍基于图像的目标检测与定位相关概念,R-CNN和YOLO等算法基本思想。本文为学习笔记,参考了许多优秀博文,如有错误还望指正。

1. 目标检测与定位概念

目标检测与定位的任务是判断图片中目标类别, 并且在图片中用边框标记出它的位置。

具体来说,首先需要进行图像识别(Classification)。该阶段输入图像,输出物体的类别,可以通过准确度进行评估。第二步是定位(Localization)。该阶段输入图片,输出圈出目标的方框在图片中的位置。

2. 目标检测与定位方法

  1. 传统的目标检测算法:Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化;
  2. two-stage算法,采用候选区域/框深度学习分类:通过提取候选区域,并对相应区域进行以深度学习方法为主的分类的方案,如:R-CNN(Selective Search + CNN + SVM),SPP-net(ROI Pooling),Fast R-CNN(Selective Search + CNN + ROI)和Faster R-CNN(RPN + CNN + ROI)等系列方法;
  3. One-stage算法,基于深度学习的回归方法:YOLO/SSD等方法;
    图2是各类算法出现时间及性能。FPS指每秒传输帧数(Frames Per Second),mAP是均值平均精度。

2.1 传统目标检测流程

1)区域选择
穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高;
2)特征提取
有SIFT、HOG等方法。即尺度不变特征转换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述子。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征。
形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差;
3)分类器分类
主要有SVM、Adaboost等。支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。

2.2 two-stage检测算法

2.2.1 R-CNN

该算法预先找出图中目标可能出现的位置,即候选区域(Region Proposal),然后利用卷积神经网络(Convolutional Neural Networks)进行分类。相对于传统的检测算法,不需要额外的训练分类器。
候选区域(Region Proposal)的选择利用了图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的召回率(Recall),召回率指的是在所有存在目标的区域样本中,被正确识别为候选区域的比例。

卷积神经网络CNN参考了生物视觉原理。从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体类别),示意图如图4。对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的。

卷积神经网络组成大致如下图。

卷积层(Convolutional layer),卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。在具体应用中,往往有多个卷积核。卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核。可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。

池化层(Pooling layer),通常在卷积层之后会得到维度很大的特征,将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征。原始图片是20×20的,我们对其进行下采样,采样窗口为10×10,最终将其下采样成为一个2×2大小的特征图。

全连接层( Fully-Connected layer), 把所有局部特征结合变成全局特征,用来计算最后每一类的得分。
R-CNN的实现步骤(1) 输入测试图像,(2) 利用选择性搜索Selective Search算法在图像中从下到上提取2000个左右的可能包含物体的候选区域Region Proposal,(3) 因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放成统一的227x227的大小并输入到CNN,将CNN的输出作为特征,将每个Region Proposal提取到的CNN特征输入到SVM进行分类。

R-CNN虽然不再像传统方法那样穷举,但R-CNN流程的第一步中对原始图片通过Selective Search提取的候选框region proposal多达2000个左右,而这2000个候选框每个框都需要进行CNN提特征+SVM分类,计算量很大,导致R-CNN检测速度很慢,一张图都需要47s。

2.2.2 two-stage其他算法

2.2.2.1 Spatial Pyramid Pooling(空间金字塔池化)

在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
只对原图进行一次卷积计算,便得到整张图的卷积特征,然后找到每个候选框在特征上的映射,将此映射作为每个候选框的卷积特征输入到SPP layer和之后的层,完成特征提取工作。
R-CNN要对每个区域计算卷积,而SPPNet只需要计算一次卷积,从而节省了大量的计算时间,比R-CNN有一百倍左右的提速。

2.2.2.2 Fast-RCNN

R-CNN有一些相当大的缺点,把这些缺点都改掉了,就成了Fast R-CNN。由于每一个候选框都要独自经过CNN,这使得花费的时间非常多。解决方案是共享卷积层,现在不是每一个候选框都当做输入进入CNN了,而是输入一张完整的图片,在第五个卷积层再得到每个候选框的特征。
流程为1.在图像中确定约1000-2000个候选框 (使用选择性搜索);2.对整张图片输进CNN,得到feature map;3.找到每个候选框在feature map上的映射,选出候选框;4.对候选框中提取出的特征,使用分类器判别是否属于一个特定类;5.对于属于某一类别的候选框,用回归器进一步调整其位置。

2.2.2.3 P11 Faster RCNN

Fast R-CNN存在的问题:选择性搜索,找出所有的候选框,这个也非常耗时。能不能找出一个更加高效的方法来求出这些候选框呢?解决方案为加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。
所以,在Fast R-CNN中引入Region Proposal Network(RPN)替代Selective Search。

流程为1.对整张图片输进CNN,得到feature map;2.卷积特征输入到RPN,得到候选框的特征信息;3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类。

2.3 One-Stage

2.3.1 YOLO

Faster R-CNN的方法目前是主流的目标检测方法,但是速度上并不能满足实时的要求。YOLO一类的方法慢慢显现出其重要性,这类方法使用了回归的思想,利用整张图作为网络的输入,直接在图像的多个位置上回归出这个位置的目标边框,以及目标所属的类别。
YOLO的目标检测的流程图如下,

(1) 给个一个输入图像,首先将图像划分成7*7的网格;
(2) 对于每个网格,都预测2个边框(包括每个边框是目标的置信度,每个边框区域在多个类别上的概率)
(3) 根据上一步可以预测出772个目标窗口,然后根据阈值去除可能性比较低的目标窗口,最后去除冗余窗口即可。
整个过程非常简单,不再需要中间的region proposal找目标,直接回归便完成了位置和类别的判定。总的来说,YOLO将目标检测任务转换成一个回归问题,大大加快了检测的速度,使得YOLO可以每秒处理45张图像。
但是YOLO也存在问题:没有了Region Proposal机制,只使用7*7的网格回归会使得目标不能非常精准的定位,这也导致了YOLO的检测精度并不是很高。

2.3.2 SSD

YOLO存在的问题在于使用整图特征在7*7的粗糙网格内回归对目标的定位并不是很精准。那是不是可以结合region proposal的思想实现精准一些的定位?SSD结合YOLO的回归思想以及Faster R-CNN的anchor机制做到了这点。Anchor指的是框定目标的方框。


上图是SSD的一个框架图,首先SSD获取目标位置和类别的方法跟YOLO一样,都是使用回归,但是YOLO预测某个位置使用的是全图的特征,SSD预测某个位置使用的是这个位置周围的特征。
如何建立某个位置和其特征的对应关系呢?可以使用Faster R-CNN的anchor机制。如SSD的框架图所示,假如某一层特征图大小是88,那么就使用33的滑窗提取每个位置的特征,然后这个特征回归得到目标的坐标信息和类别信息。
Anchor机制是说,根据预定义的Anchor,Feature Map上的一点为中心,就可以在原图上生成多种不同形状不同大小的边框,如下图:

感受野指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的。根据CNN的感受野,一个特征图上的点对应于原图的16×1616×16的正方形区域,仅仅利用该区域的边框进行目标定位,其精度无疑会很差,甚至根本“框”不到目标。 而加入了Anchor后,一个特征图上的点可以生成9种不同形状不同大小的框,这样“框”住目标的概率就会很大,就大大的提高了检查的召回率;再通过后续的网络对这些边框进行调整,其精度也能大大的提高。
不同于Faster R-CNN,这个anchor是在多个feature map上,这样可以利用多层的特征并且自然的达到多尺度(不同层的feature map 3*3滑窗感受野不同)。总的来说,SSD结合了YOLO中的回归思想和Faster R-CNN中的anchor机制,使用全图各个位置的多尺度区域特征进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster R-CNN一样比较精准。SSD在VOC2007上mAP可以达到72.1%,速度在GPU上达到58帧每秒。

参考

[1] https://easyai.tech/ai-definition/cnn/
[2] https://blog.csdn.net/l2181265/article/details/88072497
[3] https://blog.csdn.net/qq_36396104/article/details/85230012
[4] https://cloud.tencent.com/developer/news/281788
[5] https://blog.csdn.net/qq_25762497/article/details/51052861
[6] https://zhuanlan.zhihu.com/p/33544892

基于图像的目标检测与定位方法概述相关推荐

  1. 自动驾驶采标系列三:基于图像的目标检测技术

        标注猿的第54篇原创        一个用数据视角看AI世界的标注猿    上一篇文章我们从"环境感知"数据的采集设备上进行了详细说明,已经了解了相应设备采集的数据及采集前 ...

  2. 自动驾驶采标系列四:基于激光雷达的目标检测方法

        标注猿的第55篇原创        一个用数据视角看AI世界的标注猿   上一篇文章我们讲了基于图像的目标检测技术,但对于标注人员来说这部分内容就相对比较难一些,只是作为一个了解就可以,但是如 ...

  3. 双向特征融合的数据自适应SAR图像舰船目标检测模型

    双向特征融合的数据自适应SAR图像舰船目标检测模型 人工智能技术与咨询 昨天 本文来自<中国图象图形学报>,作者张筱晗等 摘要: 利用合成孔径雷达(synthetic aperture r ...

  4. 基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)

    摘要:本文重点介绍了基于YOLOv5目标检测系统的MATLAB实现,用于智能检测物体种类并记录和保存结果,对各种物体检测结果可视化,提高目标识别的便捷性和准确性.本文详细阐述了目标检测系统的原理,并给 ...

  5. 目标检测论文解读复现之十一:基于特征融合与注意力的遥感图像小目标检测

    前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...

  6. 目标检测论文解读复现之十五:基于YOLOv5的光学遥感图像舰船 目标检测算法

    前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...

  7. matlab实现大气湍流退化模型算法,大气湍流下退化序列图像的目标检测方法

    引言 目标检测是计算机视觉的重要应用之一, 是后续目标识别.跟踪.目标分类以及行为分析的前提.远距离成像时通常会受到复杂变化的大气湍流影响, 使得成像结果中存在不规则抖动.偏移和模糊等退化现象[.因此 ...

  8. 基于形心的目标检测方法

    基于形心的目标检测方法 用VisualStudio和OpenCV实现,包括BMP文件读取.固定阈值分割.大津阈值分割.迭代法分割.目标形心的确定.目标框的确定等. Object_Detection.h ...

  9. 基于超分辨率的遥感图像小目标检测

    这是一篇基于遥感图像小目标检测的文章,没有代码,只是为了学习学习思路而已,这篇文章针对遥感图像小目标检测困难问题,提出了一种模型,即将原始图像和简化后的图像同时输入检测网络,设计了简化后的图像超分辨率 ...

最新文章

  1. 发现一款新一代项目管理软件
  2. 基于激光雷达的里程计及3D点云地图中的定位方法
  3. 64 os 驱动签名
  4. ffmpeg-win32-v3.2.4 下载_为知笔记安卓版下载 8.1.4
  5. 深入理解JavaScript的变量作用域(转)
  6. 基线管理之MariaDB安全配置
  7. 关于mysql的一些时间格式和字符的问题
  8. 与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成...
  9. 微软重拳出击:盗版 Windows 将无处遁形!
  10. python网络编程学习笔记(二)
  11. 一起来玩树莓派--解决树莓派启动时屏幕不亮的问题
  12. 【AD封装】电感(带3D)
  13. vivado程序固化到flash
  14. oracle设置session空闲时间超时断开
  15. 注重移动端体验,新商云带你开启社交电商新时代
  16. Camtasia Studio 6录制视频时鼠标闪烁的解决办法
  17. 闵帆老师《论文写作》课学习心得
  18. Electron理论知识 1-GN语法及使用介绍
  19. 缩招/裁员/倒闭,互联网今年特别冷
  20. jQuery源码逐行分析学习01(jQuery的框架结构简化)

热门文章

  1. Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '
  2. 钓鱼竿是如何做网络推广的呢?
  3. 你今天volatile了吗?--准确定位
  4. java爬取p站_A站(ACFun)爬虫爬取并播放、下载视频(JAVA)
  5. finally语句块一定执行吗?
  6. 51单片机开发实例 基于52单片机的简易温度采集系统
  7. JDBC 快速入门JDBC 抽取JDBC工具类:JDBCUtils
  8. 物联网--思科模拟器--外草坪喷头
  9. Java heap space怎么办
  10. JAVA_SE基础——69.Date类