目标检测(Object Detection)

您所在的位置:网站首页 视觉处理算法包括哪些步骤 目标检测(Object Detection)

目标检测(Object Detection)

2024-07-16 20:47| 来源: 网络整理| 查看: 265

文章目录 目标检测(Object Detection)一、基本概念1. 什么是目标检测2. 目标检测的核心问题3. 目标检测算法分类1)Tow Stage2)One Stage 4. 目标检测应用1)人脸检测2)行人检测3)车辆检测4)遥感检测 二、目标检测原理1. 候选区域产生1)滑动窗口2)选择性搜索① 什么是选择性搜索② 选择搜索流程③ 选择搜索优点 2. 数据表示3. 效果评估4. 非极大值抑制 三、目标检测模型1. R-CNN系列1)R-CNN① 定义② 流程③ 效果④ 缺点 2)Fast R-CNN① 定义② 流程③ 改进④ 缺点 3)Faster RCNN① 整体流程② Anchors③ Bounding box regression④ 损失函数⑤ 改进⑥ 缺点 2. YOLO系列1)YOLOv1(2016)① 基本思想② 网络结构③ 训练过程与细节④ 优点与缺点 2)YOLOv2(2016)① 改进策略② 训练过程③ 优点与缺点 3)YOLOv3(2018)① 改进② 多尺度预测③ 网络结构④ 效果 三、视频关键帧处理1. 什么是关键帧2. 如何提取关键帧 四、目标检测数据集1. PASCAL VOC2. MS COCO3. Google Open Image4. ImageNet 五、常用图像标注工具1. LabelImg2. Labelme3. Labelbox4. RectLabel5. CVAT6. VIA 附录:术语表

目标检测(Object Detection) 一、基本概念 1. 什么是目标检测

目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。

计算机视觉中关于图像识别有四大类任务:

(1)分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。

(2)定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。

(3)检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。

(4)分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

所以,目标检测是一个分类、回归问题的叠加。

2. 目标检测的核心问题

(1)分类问题:即图片(或某个区域)中的图像属于哪个类别。

(2)定位问题:目标可能出现在图像的任何位置。

(3)大小问题:目标有各种不同的大小。

(4)形状问题:目标可能有各种不同的形状。

3. 目标检测算法分类

基于深度学习的目标检测算法主要分为两类:Two stage和One stage。

1)Tow Stage

先进行区域生成,该区域称之为region proposal(简称RP,一个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。

任务流程:特征提取 --> 生成RP --> 分类/定位回归。

常见tow stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。

2)One Stage

不用RP,直接在网络中提取特征来预测物体分类和位置。

任务流程:特征提取–> 分类/定位回归。

常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。

4. 目标检测应用 1)人脸检测 智能门控员工考勤签到智慧超市人脸支付车站、机场实名认证公共安全:逃犯抓捕、走失人员检测 2)行人检测 智能辅助驾驶智能监控暴恐检测(根据面相识别暴恐倾向)移动侦测、区域入侵检测、安全帽/安全带检测 3)车辆检测 自动驾驶违章查询、关键通道检测广告检测(检测广告中的车辆类型,弹出链接) 4)遥感检测

大地遥感,如土地使用、公路、水渠、河流监控

农作物监控

军事检测

二、目标检测原理

目标检测分为两大系列——RCNN系列和YOLO系列,RCNN系列是基于区域检测的代表性算法,YOLO是基于区域提取的代表性算法,另外还有著名的SSD是基于前两个系列的改进。

1. 候选区域产生

很多目标检测技术都会涉及候选框(bounding boxes)的生成,物体候选框获取当前主要使用图像分割与区域生长技术。区域生长(合并)主要由于检测图像中存在的物体具有局部区域相似性(颜色、纹理等)。目标识别与图像分割技术的发展进一步推动有效提取图像中信息。

1)滑动窗口

通过滑窗法流程图可以很清晰理解其主要思路:首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到的物体。 滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求较高的分类器,不推荐使用滑窗法。

2)选择性搜索 ① 什么是选择性搜索

滑窗法类似穷举进行图像子区域搜索,但是一般情况下图像中大部分子区域是没有物体的。学者们自然而然想到只对图像中最有可能包含物体的区域进行搜索以此来提高计算效率。选择搜索(selective search,简称SS)方法是当下最为熟知的图像bounding boxes提取算法,由Koen E.A于2011年提出。 选择搜索算法的主要思想:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此,选择搜索基于上面这一想法采用子区域合并的方法进行提取bounding boxes。首先,对输入图像进行分割算法产生许多小的子区域。其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做bounding boxes(外切矩形),这些子区域外切矩形就是通常所说的候选框。

② 选择搜索流程 step0:生成区域集Rstep1:计算区域集R里每个相邻区域的相似度S={s1, s2,…}step2:找出相似度最高的两个区域,将其合并为新集,添加进Rstep3:从S中移除所有与step2中有关的子集step4:计算新集与所有子集的相似度step5:跳至step2,直至S为空 ③ 选择搜索优点 计算效率优于滑窗法由于采用子区域合并策略,所以可以包含各种大小的疑似物体框合并区域相似的指标多样性,提高了检测物体的概率 2. 数据表示

经过标记后的样本数据如下所示:

预测输出可以表示为:

y = [ p c b x b y b w b h C 1 C 2 C 3 ] , y t r u e = [ 1 40 45 80 60 0 1 0 ] , y p r e d = [ 0.88 41 46 82 59 0.01 0.95 0.04 ] y = \left[ \begin{matrix} p_c \\ b_x \\ b_y \\ b_w \\ b_h \\ C_1 \\ C_2 \\ C_3 \\ \end{matrix} \right] , y_{true} = \left[ \begin{matrix} 1 \\ 40 \\ 45 \\ 80 \\ 60 \\ 0 \\ 1 \\ 0 \\ \end{matrix} \right] , y_{pred} = \left[ \begin{matrix} 0.88 \\ 41 \\ 46 \\ 82 \\ 59 \\ 0.01 \\ 0.95 \\ 0.04 \\ \end{matrix} \right] y=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​pc​bx​by​bw​bh​C1​C2​C3​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​,ytrue​=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​140458060010​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​,ypred​=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​0.88414682590.010.950.04​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​

其中, p c p_c pc​为预测结果的置信概率, b x , b y , b w , b h b_x, b_y, b_w, b_h bx​,by​,bw​,bh​为边框坐标, C 1 , C 2 , C 3 C_1, C_2, C_3 C1​,C2​,C3​为属于某个类别的概率。通过预测结果、实际结果,构建损失函数。损失函数包含了分类、回归两部分组成。

3. 效果评估

使用IoU(Intersection over Union,交并比)来判断模型的好坏。所谓交并比,是指预测边框、实际边框交集和并集的比率,一般约定0.5为一个可以接收的值。

4. 非极大值抑制

预测结果中,可能多个预测结果间存在重叠部分,需要保留交并比最大的、去掉非最大的预测结果,这就是非极大值抑制(Non-Maximum Suppression,简写作NMS)。如下图所示,对同一个物体预测结果包含三个概率0.8/0.9/0.95,经过非极大值抑制后,仅保留概率最大的预测结果。

三、目标检测模型 1. R-CNN系列 1)R-CNN ① 定义

R-CNN(全称Regions with CNN features) ,是R-CNN系列的第一代算法,其实没有过多的使用“深度学习”思想,而是将“深度学习”和传统的“计算机视觉”的知识相结合。比如R-CNN pipeline中的第二步和第四步其实就属于传统的“计算机视觉”技术。使用selective search提取region proposals,使用SVM实现分类。

② 流程 预训练模型。选择一个预训练 (pre-trained)神经网络(如AlexNet、VGG)。重新训练全连接层。使用需要检测的目标重新训练(re-train)最后全连接层(connected layer)。提取 proposals并计算CNN 特征。利用选择性搜索(Selective Search)算法提取所有proposals(大约2000幅images),调整(resize/warp)它们成固定大小,以满足 CNN输入要求(因为全连接层的限制),然后将feature map 保存到本地磁盘。训练SVM。利用feature map 训练SVM来对目标和背景进行分类(每个类一个二进制SVM)边界框回归(Bounding boxes Regression)。训练将输出一些校正因子的线性回归分类器 ③ 效果 R-CNN在VOC 2007测试集上mAP达到58.5%,打败当时所有的目标检测算法 ④ 缺点 重复计算,每个region proposal,都需要经过一个AlexNet特征提取,为所有的RoI(region of interest)提取特征大约花费47秒,占用空间selective search方法生成region proposal,对一帧图像,需要花费2秒三个模块(提取、分类、回归)是分别训练的,并且在训练时候,对于存储空间消耗较大 2)Fast R-CNN ① 定义

Fast R-CNN是基于R-CNN和SPPnets进行的改进。SPPnets,其创新点在于只进行一次图像特征提取(而不是每个候选区域计算一次),然后根据算法,将候选区域特征图映射到整张图片特征图中。

② 流程 使用selective search生成region proposal,大约2000个左右区域候选框(joint training)缩放图片的scale得到图片金字塔,FP得到conv5的特征金字塔(joint training)对于每个scale的每个ROI,求取映射关系,在conv5中剪裁出对应的patch。并用一个单层的SSP layer来统一到一样的尺度(对于AlexNet是6*6)(joint training) 继续经过两个全连接得到特征,这特征又分别共享到两个新的全连接,连接上两个优化目标。第一个优化目标是分类,使用softmax,第二个优化目标是bbox regression,使用了一个平滑的L1-loss测试时需要加上NMS处理:利用窗口得分分别对每一类物体进行非极大值抑制提出重叠建议框,最终得到每个类别中回归修正后的得分最高的窗口 ③ 改进 和RCNN相比,训练时间从84小时减少为9.5小时,测试时间从47秒减少为0.32秒。在VGG16上,Fast RCNN训练速度是RCNN的9倍,测试速度是RCNN的213倍;训练速度是SPP-net的3倍,测试速度是SPP-net的3倍Fast RCNN在PASCAL VOC 2007上准确率相差无几,约在66~67%之间加入RoI Pooling,采用一个神经网络对全图提取特征在网络中加入了多任务函数边框回归,实现了端到端的训练 ④ 缺点 依旧采用selective search提取region proposal(耗时2~3秒,特征提取耗时0.32秒)无法满足实时应用,没有真正实现端到端训练测试利用了GPU,但是region proposal方法是在CPU上实现的 3)Faster RCNN

经过R-CNN和Fast-RCNN的积淀,Ross B.Girshick在2016年提出了新的Faster RCNN,在结构上将特征抽取、region proposal提取, bbox regression,分类都整合到了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显。

① 整体流程 Conv Layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的卷积/激活/池化层提取图像的特征,形成一个特征图,用于后续的RPN层和全连接层。Region Proposal Networks(RPN)。RPN网络用于生成候选区域,该层通过softmax判断锚点(anchors)属于前景还是背景,在利用bounding box regression(包围边框回归)获得精确的候选区域。RoI Pooling。该层收集输入的特征图和候选区域,综合这些信息提取候选区特征图(proposal feature maps),送入后续全连接层判定目标的类别。Classification。利用取候选区特征图计算所属类别,并再次使用边框回归算法获得边框最终的精确位置。 ② Anchors

Anchors(锚点)指由一组矩阵,每个矩阵对应不同的检测尺度大小。如下矩阵:

[[ -84. -40. 99. 55.] [-176. -88. 191. 103.] [-360. -184. 375. 199.] [ -56. -56. 71. 71.] [-120. -120. 135. 135.] [-248. -248. 263. 263.] [ -36. -80. 51. 95.] [ -80. -168. 95. 183.] [-168. -344. 183. 359.]]

其中每行4个值( x 1 , y 1 , x 2 , y 2 x_1, y_1, x_2, y_2 x1​,y1​,x2​,y2​),对应矩形框左上角、右下角相对于中心点的偏移量。9个矩形共有三种形状,即1:1, 1:2, 2:1,即进行多尺度检测。

例如,一张800*600的原始图片,经过VGG下采样后(生成特征矩阵)16倍大小,大小变为50*38,每个点设置9个anchor,则总数为:

ceil(800 / 16) * ceil(600 / 16) * 9 = 50 * 38 * 9 = 17100 ③ Bounding box regression

物体识别完成后,通过一种方式对外围框进行调整,使得和目标物体更加接近。

④ 损失函数

对一个图像的损失函数,是一个分类损失函数与回归损失函数的叠加: L ( { p i } , { t i } ) = 1 N c l s ∑ L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ p i ∗ L r e g ( t i , t i ∗ ) L(\{p_i\},\{t_i\}) = \frac{1}{N_{cls}}\sum{L_{cls}(p_i, p_i^*)} + \lambda\frac{1}{N_{reg}}\sum{p_i^*L_{reg}(t_i, t_i^*)} L({pi​},{ti​})=Ncls​1​∑Lcls​(pi​,pi∗​)+λNreg​1​∑pi∗​Lreg​(ti​,ti∗​)

i是一个mini-batch中anchor的索引

p i p_i pi​是anchor i 为目标的预测概率

ground truth标签 p i ∗ p_i^* pi∗​就是1,如果anchor为负, p i ∗ p_i^* pi∗​就是0

t i t_i ti​是一个向量,表示预测的包围盒的4个参数化坐标

N c l s N_{cls} Ncls​是与正anchor对应的ground truth的坐标向量

N r e g N_{reg} Nreg​为anchor位置的数量(大约2400), λ \lambda λ=10

分类损失函数: L c l s ( p i , p i ∗ ) = − l o g [ p i ∗ p i + ( 1 − p i ∗ ) ( 1 − p i ) ] L_{cls}(p_i, p_i^*) = -log[p_i^*p_i + (1-p_i^*)(1-p_i)] Lcls​(pi​,pi∗​)=−log[pi∗​pi​+(1−pi∗​)(1−pi​)] 位置损失函数: L r e g ( t i , t i ∗ ) = R ( t i − t i ∗ ) L_{reg}(t_i, t_i^*) = R(t_i - t_i^*) Lreg​(ti​,ti∗​)=R(ti​−ti∗​) 其中: R = s m o o t h L 1 ( x ) = { 0.5 x 2    i f ∣ x ∣ < 1 ∣ x ∣ − 0.5    o t h e r w i s e R = smooth_{L1}(x) = \begin{cases}{0.5x^2} \ \ if |x| < 1\\ |x|-0.5 \ \ otherwise \end{cases} R=smoothL1​(x)={0.5x2  if∣x∣



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3