深度学习中的两阶段目标检测

简介: 深度学习中的两阶段目标检测

背景介绍


目标检测作为计算机视觉中承上启下的一步,至关重要,可以说,实现了目标检测就实现了计算机视觉基本任务。目标检测急需要对物体进行识别,又要检测出物体的位置,难度较大,网络结构也层出不穷,在深度领域,从R-CNN到SPP-NET再到YOLO最后到SSD,可以说是百家争鸣,各有千秋。


另一方面,目标检测应用非常广泛,例如生活中常见的人脸检测、车牌识别等;在自动驾驶领域,有行人识别、车道线识别;还有智能视频监控、机器人导航、飞机航拍等多种多样的应用。


目标检测可以分解为两个步骤,第一个步骤是寻找物体框的位置,有传统的选择搜索算法,也有基于深度学习的方法;第二个步骤就是对物体框的类别进行判别。所以,目标检测算法也分为一阶段算法和二阶段算法两种。如果将两个步骤分两个网络训练,则称其为二阶段算法,反之,如果将两个步骤合并用一个网络训练,则称其为一阶段算法。本节我们会详细介绍两阶段目标检测算法,下一节我们继续介绍一阶段目标检测算法。


什么是目标检测


对于目标检测,不但要识别处物体的位置,还要检测处物体的类别。一般来说,我们用把一个矩形框来外接一个物体。我们要做的就是检测出这个矩形框(也叫groundtruth)的位置参数,例如中心坐标(x,y),矩形框宽w和矩形框的高h等。


a47fccf7d9aa9d00cbef1828134a2925_85491871c5a444c7b6b579d58eaa117e.jpeg


目标检测的难点


对于识别物体来说,难度不大,在目标识别方面,卷积神经网络的正确率已经超过人类的识别水准了,但是想要精确的定位物体,却是非常困难的,我们人类判断照片上人物的位置一般就是说在中间,或者左上等位置名词,但是对于计算机来说,就有点困难,他需要精确的位置坐标。


更难的是,一张图片中往往有多个物体,特别是小物体,在做目标识别的时候,我们对一张图片只需要输出一个物体,而对于检测问题,需要输出多个物体,难度也极具增大。


最后,网络速度和准确率很难兼顾,一般来说,速度较快的网络,也就是每秒能处理的图片较多,效果就会较差,这是由于速度快的网络会降低物体位置的精度,同时也会减少候选框的数量。


目标检测的基础知识


在进行目标检测实战项目前,我们先来了解一下目标检测的基础知识。


候选框


什么是候选框:候选框就是有可能存在物体的框,对于一个物体来说,可能有很多的候选框,一般5~9个都是正常的。对于二阶段目标检测算法,一般候选框生成算法会生成几千个候选框,但是真正有物体的候选框可能就很少了。


668e33f5a99dc7830de6a9fe19e12d61_3caed5c6914520d8b152245e34b30132.jpeg


交并比


我们有这么多候选框,那么我们如何判断一个候选框的好坏?很明显,与真实物体框越接近,候选框就越好。我们一般用交并比(IOU)来表示候选框的好坏,计算方式:


IOU=(物体框∩候选框)的面积/(物体框∪候选框)的面积。


为什么我们不直接用物体框和候选框的交集2的面积喃?这是因为,对于覆盖整个物体框的候选框,物体框和候选框的交集的面积都为物体框的面积,从而不能区分出优劣。同理也不能直接使用物体框和候选框的并集的面积,否则无法区分小于物体框的候选框的优劣,而同时考虑两者,就能得到比较好的标准。


531f782b07930bd7d9c207e19cf32b5c_92fe2da89f96e949e2271106e0677f99.jpeg


非极大值抑制


非极大值抑制(NMS),就是对交并比进行抑制,也就是对交并比不是极大值的值进行抑制。举个例子,对于同一个物体,模型检测出三个候选框,交并比分别为0.9,0.8,0.7,那么我们只需要保留交并比为0.9的框,而忽略其他几个。


当然,非极大值抑制并不是这么的简单,比如第一个物体被检测出的交并比为0.9,0.8,0.7,留下0.9的框,第二个物体检测出0.7,0.6,保留0.7的框,这个时候就会出现一个问题,那就是两次处理后得到的候选框都是第一个物体的,会删除第二个物体的候选框,所以一般我们会进行设置阈值(一般为0.3~0.5),只要两个候选框IOU值大于阈值时,认为他们属于同一个物体,对他们进行非极大值抑制即可。


具体流程:


(1)、在候选框列表中选出IOU最大的候选框1;
(2)、将其余候选框与候选框1计算IOU';
(3)、如果IOU'>阈值,则次候选框删除;
(4)、将候选框1输出,然后从候选框列表中删除。
(5)、重复流程(1)~(4)。


传统目标检测基本流程


我们在学习深度学习方法前,先来了解一下传统的目标检测流程,


第一步,提取候选框,最初的时候,我们采用的是滑动窗口的策略,使用一个窗口在整幅图上进行滑动,每次滑动就生成一个候选框,而且对于滑动窗口设置不同的尺寸。这种暴力的策略虽然包含了目标所有可能出现的位置,但是由于冗余窗口太多,导致时间复杂度太高。


第二步就是提取特征值,常用SIFT,SURF,HOG等特征检测算法。


第三步就是训练分类器,主要有SVM,Adaboost等常用的分类器,对提取的物体特征进行分类 ,从而识别物体。


最后一步就是进行非极大值抑制,删除多余的候选框。


目标检测效果评估


对于评估检测准确率,我们使用准确率和精准率,对于评估模型是否将图像中所有的图像都是别出来,我们称之为召回率。


1684407722697.png


这些参数代表什么意思喃?


我们来看看二分类:


二分类问题


标签

预测为1(预测有物体)

预测为0(预测无物体)

1(存在物体)

真正(TP)

假负(FN)

0(不存在物体)

假正(FP)

真负(TN)

当我们的二分类器设定的阈值发生变化时,准确率和召回率也会跟着变化。所以我们不能简单地使用单一的召回率或准确率来评价整个模型,而需要考虑在不同召回率阈值下模型的效果。


我们将在不同召回率阈值下模型能够达到的最大精准率看成一个点,然后将这些点连接起来,我们称之为Precision-Recall曲线。


0492fe998c194cfbe4eb3dc549e764fb_0988a6e1045ace039e8c7c49865de108.jpeg


显然,曲线下面的面积越大,模型效果越好,于是我们将此面积作为二分类器的评价标准,称为平均精度(AP)。需要注意的是,PR曲线和我们常用的另一个概念ROC曲线是不同的,ROC曲线显示的是真正率和假正率的关系,而PR曲线显示的是精确率和召回率的关系,PR曲线更适合评估目标检测这类样本不平衡的问题。


对于目标检测这种多分类问题,我们如何评价模型喃?我们剋将其看成很多二分类器的叠加,其对每个物体分类就是一个二分类器,我们先算出每个物体分类的平均精度,之后再对所有的分类取平均(或加权平均),即可得到平均精度均值(mAP),这也是我们常用的目标检测分类问题的评价指标。


对于模型速度的评价就要简单许多,一般用处理一张图片要多少时间,或者说单位时间能处理多少图片,学名叫做帧/秒(fps)。


常用目标检测框架的效果


框架名称

mAP(VOC2007数据集)

速度/(帧/秒)

速率/(秒/帧)

DPMv5

33.7

0.07

14

R-CNN

66.0

0

20

Fast R-CNN

70.0

0.5

2

Faster R-CNN

73.2

7

0.14

YOLO

63.4

45

0.022

YOLOv2

78.6

40

0.025

SSD

76.8

19

0.053

好了,本节内容介绍就到此结束了,拜拜了你嘞!


相关文章
|
2月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
68 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
3月前
|
机器学习/深度学习 监控 自动驾驶
深度学习中的2D目标检测
2D目标检测是深度学习中的一个关键任务,旨在识别图像中的目标对象,并在每个目标对象周围生成一个边界框。该任务在自动驾驶、视频监控、机器人视觉等领域具有广泛应用。
76 5
|
2月前
|
机器学习/深度学习 算法 安全
基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)
基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)
36 0
|
2月前
|
机器学习/深度学习 传感器 编解码
深度学习之地球观测中的目标检测
基于深度学习的地球观测中的目标检测是将深度学习技术应用于遥感数据中以自动识别和定位目标物体的过程。这一技术迅速成为遥感领域的研究热点,主要原因在于地球观测(Earth Observation, EO)平台和遥感技术的进步带来了海量的高分辨率数据,而深度学习技术在目标检测、图像识别等任务上的显著成功为其提供了强有力的支持。
38 0
|
3月前
|
机器学习/深度学习 传感器 监控
红外小目标检测:基于深度学习
本文介绍了红外小目标检测技术的优势、基本原理及常用方法,包括背景抑制、滤波、模型和深度学习等,并探讨了多传感器融合的应用。通过一个基于深度学习的实战案例,展示了从数据准备到模型训练的全过程。最后,文章展望了该技术在军事、安防、交通等领域的广泛应用及未来发展趋势。
|
4月前
|
机器学习/深度学习 编解码 自动驾驶
lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
78 0
|
6月前
|
机器学习/深度学习 监控 自动驾驶
深度学习之2D目标检测
2D目标检测是深度学习中的一个关键任务,旨在识别图像中的目标对象,并在每个目标对象周围生成一个边界框。该任务在自动驾驶、视频监控、机器人视觉等领域具有广泛应用。以下是对深度学习中2D目标检测的详细介绍,包括其基本概念、主要方法、常见模型、应用场景、优势和挑战。
127 4
|
6月前
|
机器学习/深度学习 存储 算法
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
|
6月前
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
6月前
|
机器学习/深度学习 存储 安全
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测