游乐游手机版
首页/AI热点日报/热点详情

目标检测完全指南:从原理到应用一次读懂

类型:热点整理2026-07-07
在计算机视觉的众多技术分支中,目标检测(Object Detection)可以说是最基础也最关键的任务之一。无论是图像分割、物体追踪,还是关键点检测,往往都得先依赖目标检测把目标“找出来”。既然它这么基础,那它和图像分类、图像分割这些概念之间到底是什么关系?本文先帮助大家理清这几者的区别与联系。 图

在计算机视觉的众多技术分支中,目标检测(Object Detection)可以说是最基础也最关键的任务之一。无论是图像分割、物体追踪,还是关键点检测,往往都得先依赖目标检测把目标“找出来”。既然它这么基础,那它和图像分类、图像分割这些概念之间到底是什么关系?本文先帮助大家理清这几者的区别与联系。

一文带你读懂目标检测

图像分类:图像分类聚焦的是单张图像里只有单个物体的场景,它要做的判断其实很直白:这张图属于什么类别?比如是人还是动物,或者更细一点,是猫还是狗。这类任务相对简单,理解起来不费劲,所以也是最早发展起来并大规模应用的计算机视觉技术之一。

目标检测:目标检测的输入图像是复杂得多的情况——一张图里可能包含多个类别、多个物体,这也是我们日常拍摄或看到的图像的常态。它的核心目的,就是找出图像中所有感兴趣的物体,并且告诉用户它们分别在哪里、是何种类别。

图像分割:图像分割的输入和目标检测类似,但它的粒度更细——它把图像里的每一个像素都当作判断的基本单位,需要给每个像素都分配一个类别标签。可以说,图像分割是像素级别的分类任务。这两者通常互相借鉴,不少模型和方法都是相通的。

一、目标检测的基本概念

目标检测要做的事情,就是针对图像中所有感兴趣的目标进行分类,同时检测出它们各自的位置坐标。

如下图所示,检测结果中包括了dog、bicycle、truck三个目标,并且每个目标都有精确的位置信息。当然,目标检测能识别的类别可以很多——只要你想从一张图里找到某个目标,就可以通过对预先标注的类别图像进行训练,让网络模型学会这些目标的特征,然后去其他图像中找到它们的位置和类别。

二、目标检测的发展历程

最初的目标检测依赖的是手工设计的特征,传统算法通常分三步走:区域选取、特征提取、特征分类。而随着计算机算力的提升,深度学习开始大规模普及,基于深度学习的目标检测也成了目前的主流方法。

经过多年研究和网络模型的持续迭代,业界涌现出不少优秀的检测算法。按照处理流程的不同,这些模型大致可以分为两种类型:一是以R-CNN系列为代表的两阶段(2-stage)检测模型,另一类是以SSD和YOLO系列为代表的单阶段(1-stage)检测模型。自从Faster-RCNN引入了anchor机制之后,后续很多改进算法都沿用了这一思路。因此,还有一个划分维度是按是否使用anchor机制,分为anchor-baseanchor-free

1.Two stage与One stage

1)Two stage

常见的两阶段目标检测算法包括:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN等。其中,Faster R-CNN是这个领域的典型代表。其流程为:首先,模型通过主干网络提取特征;然后,特征图会经过一个Region Proposal Network(RPN网络)来生成候选区域(Region Proposal,即包含目标的区域建议框);最后,结合特征图和RP生成RoI(感兴趣区域),完成位置信息的回归与分类。

2)One Stage

单阶段目标检测的代表算法有:OverFeat、YOLOv1到YOLOv7、SSD、RetinaNet等。值得一提的是,YOLOv7在5到160 FPS的速度范围内,综合速度和精度表现相当亮眼。单阶段模型没有RPN这部分的中间步骤,而是直接在卷积网络中提取特征,一步到位地预测目标的类别和位置。因此,只要拿到预训练的特征提取网络权重,整个模型就可以直接进行端到端训练。就整体设计而言,单阶段检测器大幅简化了模型结构,提升了推理速度,也让训练过程更加简洁高效。

2.anchor-base和anchor-free

在深度学习时代,目标检测逐渐分化为anchor-based、anchor-free以及两者融合的类型,核心区别就在于是否利用anchor来提取候选目标框。

先来说说什么是anchor?anchor也叫锚,本质上是一组预设的、不同尺寸和大小的边界框。在训练时,模型学习的是真实目标位置相对于这些预设框的偏移量。通俗地讲,就是先在目标可能出现的位置提前布设一些“候选框”,然后在它们的基础上进行微调。这一步的本质,其实是解决标签分配的问题。

anchor作为一系列先验框信息,其生成依赖于以下几个方面:(1) 用网络提取的特征图上的点来定位框的位置;(2) 用anchor的尺寸来设定框的大小;(3) 用anchor的长宽比来设定框的形状。

1)anchor-base

近几年,anchor机制在目标检测中应用非常广泛,使用anchor的模型包括Faster-RCNN、SSD、YOLOv2到YOLOv7等。这类算法的流程大致分三步: (1) 在图像或点云空间中预先生成大量的anchor(2D或3D);(2) 回归目标相对于anchor的四个偏移量;(3) 用对应的anchor和回归得到的偏移量修正出精确的目标位置。

one stageanchor base结合的目标检测模型为例,整个模型获取过程主要包括训练测试两个阶段。训练的目的是利用训练数据集学习检测网络的参数,训练数据包含大量图像及其标注信息(位置和类别)。训练阶段的核心流程包括数据预处理、检测网络、标签匹配与损失计算等。测试阶段则是用训练好的模型对输入图像进行预测,再经过后处理得到最终的检测结果。

目标检测输出的结果,通常是各个类别的名称加上矩形框的位置信息。在网络中,类别一般用数字表示(比如0代表Dog,1代表Cat),位置信息则用矩形边界框(Bounding Box)来表示,通过框的四个坐标点来确定目标的具体位置。

非极大值抑制(Non-Maximum-Suppression,NMS)

在模型预测时,我们会为图像生成多个锚框,每个框都进行类别和位置偏移量的预测。但这样一来,会产生大量冗余的、没有完全包含目标的框,甚至同一个目标可能会输出多个相似的预测框。因此,我们需要借助NMS来找到与真实目标最匹配的那个框。具体做法是:先计算预测框之间的交并比(IOU),通过设置一个阈值,剔除掉重叠过多的框,最终为每个类别留下得分最高的那个预测框。

下面这张图展示了交并比的定义,以及使用NMS前后目标检测输出的对比效果。

2)Anchor-free

anchor-free类的典型算法包括CornerNet、ExtremeNet、CenterNet、FCOS等。这类算法主要采用两种方式:(1)基于多关键点联合表达的方法(2)基于单中心点预测的方法

第一种方法通过定位目标物体的几个关键点来限定其搜索空间。比如Grid R-CNN,它在RPN找到候选区域后,对每个Roi区域提取特征图,再把特征图输入全卷积网络,输出一个热度图,用来定位与目标对齐的边界框网格点,最终通过网格点融合特征,确定目标边界框。

第二种方法则是以目标的中心点作为定位依据,然后预测中心点到边界的距离。例如CenterNet,它把目标当作一个点来检测——简单来说,就是用物体的中心点来表示它,再预测中心点的偏移量(offset)和宽高(size),进而得到实际的物体框。而heatmap负责表示分类信息。每个类别都有一张独立的heatmap,如果某个坐标处有目标的中心点,就在该坐标上生成一个keypoint(用高斯圆表示)。

可以看到,anchor-base和anchor-free最核心的区别,在于正负样本的定义和回归方式。在anchor-free中,物体落到哪个网格,那个网格就是正样本,其余全是负样本;而anchor-base则通过计算每个anchor预选框与实际框的交并比(IOU),超过一定阈值的才算正样本。回归方面,anchor-free是直接基于点做回归,而anchor-base是基于anchor box和ground truth之间的偏移量来做。正是这些差异,催生了融合anchor-basedanchor-free分支的方法,比如FSAF、SFace、GA-RPN等。

三、目标检测在车载中的应用场景

目标检测的应用可以说无处不在。近年来,随着自动驾驶的迅速发展,目标检测算法在该领域找到了极为丰富的应用场景。典型的包括道路行人与车辆检测、驾驶员疲劳监测中的人脸检测、智能座舱内遗留物检测、乘员位置检测等。

1.舱外行人与车辆检测

对道路上来往的行人与车辆进行实时检测,便于观察道路的运行状况,为自动驾驶决策提供关键输入。

2.舱内驾驶员人脸检测

实时检测驾驶员人脸框的位置,作为驾驶员状态监测的基础环节,有助于识别疲劳驾驶等风险行为。

3.舱内后排遗留物检测

在驾驶员下车后,检测座舱内是否遗留了物品,及时提醒驾驶员注意停车后的座舱安全,避免儿童或宠物被遗忘在车内。

来源:https://m.elecfans.com/article/1888252.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。