Datawhale AI夏令营第五期魔搭-CV竞赛方向Task1笔记–物体目标检测任务进阶
福州大学 我是一个温柔的刀客
2024/8/28
在这次的CV夏令营活动中,大家其实不必完完全全理解每一行代码,其实计算机相关的学习都是从懵懵懂懂开始的,第一步不妨先跑一跑代码看看能达到什么效果,后面再继续深入学习理解其中的原理! 那么这一次我们的任务主要是继续了解物体检测的相关任务以及技术实现. |
1. 物体检测
1.1 基础概念以及步骤
物体检测是计算机视觉领域的一个重要任务,它的目标是在图像或视频帧中识别和定位感兴趣的物体。物体检测算法不仅要识别图像中的对象属于哪个类别,还要确定它们在图像中的具体位置,通常以边界框(bounding box)的形式表示。以下是物体检测的一些关键概念和步骤:
上次的task1我们主要介绍目标检测中数据集的输入过程,这一次我们着重于接下来的一系列步骤!
1.2 物体检测的评估指标
物体检测的评估标准主要是用来衡量检测算法的性能,确保模型能够在实际应用中达到预期的效果。这些评估标准可以帮助我们了解模型在识别和定位物体方面的准确性和可靠性。
1.2.1 MAP(Mean Average Precision,平均精度均值)
**MAP(Mean Average Precision,平均精度均值)**是一种常用的评估目标检测算法性能的指标。它衡量的是系统返回的结果与实际相关结果之间的匹配程度。MAP 主要用于评价检索系统的准确性,但在目标检测领域,**它被用来评估模型检测出的目标是否正确以及定位是否准确。**MAP的值就是把所有的类别的AP取平均值.
AP 是在召回率递增时精确率的平均值。通常的做法是计算在每次召回率增加时精确率的平均值。通过计算精确率-召回率曲线(PR曲线)下的面积来得到。AP 的计算通常涉及以下两个概念:
-
精确率 (Precision):精确率是指在所有被模型预测为某个类别的实例中,真正属于该类别的比例。计算公式为:
P r e c i s i o n = T P T P + F P Precision={TP\over TP+FP} Precision=TP+FPTP -
召回率 (Recall):召回率是指在所有实际属于某个类别的实例中,被模型正确预测的比例。计算公式为:
R e c a l l = T P T P + F N Recall={TP\over TP+FN} Recall=TP+FNTP
- 正例:属于感兴趣类别的数据点。
- 负例:不属于感兴趣类别的数据点。
举例:
假设我们正在开发一个用于检测电子邮件是否为垃圾邮件的分类器:
- 正例:标记为垃圾邮件的电子邮件。
- 负例:标记为非垃圾邮件(即正常邮件)的电子邮件。
在二分类问题中,我们通常会遇到以下四个概念:
- TP (True Positives):模型正确地预测为正例的数量。在上面的例子中,模型正确地将垃圾邮件识别为垃圾邮件。
- FP (False Positives):模型错误地预测为正例的数量。在上面的例子中,模型错误地将正常邮件识别为垃圾邮件。
- FN (False Negatives):模型错误地预测为负例的数量。在上面的例子中,模型错误地将垃圾邮件识别为正常邮件。
- TN (True Negatives):模型正确地预测为负例的数量。在上面的例子中,模型正确地将正常邮件识别为正常邮件。
AP 的计算可以简化为以下步骤:
- 确定阈值点:选择一系列召回率阈值点(例如,0.0, 0.1, 0.2, …, 1.0)。
- 计算精确率:在每个召回率阈值点上计算对应的精确率。
- 计算 AP:将所有阈值点处的精确率取平均。
1.2.2 IOU(Intersection over Union,交并比)
**IOU(Intersection over Union)**是用于衡量两个区域(通常是矩形框)之间重叠程度的一个指标。在计算机视觉领域,尤其是在物体检测和图像分割任务中,IOU被广泛用来评估预测框与真实标签框之间的匹配度。 IOU的公式定义是两个框的交集面积除以并集面积.
I
O
U
(
A
,
B
)
=
A
r
e
a
o
f
I
n
t
e
r
s
e
c
t
i
o
n
A
r
e
a
o
f
U
n
i
o
n
IOU(A,B)={Area\space of \space Intersection\over Area\space of \space Union}
IOU(A,B)=Area of UnionArea of Intersection
2. 物体检测模型
物体检测算法主要分为两类:One-Stage(一阶段)和Two-Stage(两阶段)模型。
-
One-Stage模型,如YOLO(You Only Look Once)和SSD(Single Shot Detection),直接在单次网络评估中预测图像中所有物体的类别和位置信息。这种方法的优点是速度快,适合实时应用,但可能在精度上不如Two-Stage模型 。端到端的目标检测:采用一个网络一步到位.
端到端:同一个模型进行图片的输入,同一个模型产生最后的类别,位置(边界框)的输出.
-
Two-Stage模型,如R-CNN、Fast R-CNN、Faster R-CNN,首先使用区域提议网络(Region Proposal Network, RPN)生成候选区域,然后对这些区域进行分类和边界框的精细调整。这种方法的优点是精度高, 速度相对较慢 。两步走的目标检测:先进行区域推荐,而后进行目标分类.
One-Stage模型通常在单个卷积网络中同时预测类别和位置,而Two-Stage模型则将检测任务分解为两个阶段:区域提议(候选区域的生成)和候选区域的分类与定位。One-Stage模型因为省略了区域提议步骤,所以能够实现更快的检测速度,但这可能会以牺牲一些精度为代价。相比之下,Two-Stage模型通过两步过程提高了检测的准确性,但同时也增加了计算的复杂性和时间消耗 。
在实际应用中,选择哪种模型取决于特定场景的需求。如果对速度有较高要求,如视频流处理或实时监控,One-Stage模型可能更合适。如果对精度有更高要求,如在需要高精度识别的科研或专业领域,Two-Stage模型可能更加适用 。
🚀有没有候选区域的生成是区别这两种模型最直接的方法!!
3. 一阶段(one-stage)模型
一阶段模型与二阶段模型相比,在设计上更加简单直接,它们的主要优势在于速度更快,适用于实时场景, 基本的处理流程可以概括为:
💌特征提取 **(Feature Extraction):**使用卷积神经网络提取图像特征。
一阶段模型通常会使用一个卷积神经网络(CNN)作为基础特征提取器。该网络可以是预先训练好的模型,如 VGG、ResNet 等,或者是专门为此设计的网络架构。
☀️**物体检测(Object Detection):**在特征图的每个位置预测物体的存在、类别及边界框位置。
在特征提取之后,一阶段模型会在特征图上的每个位置预测物体的存在及其类别。这一过程通常包括两个方面:
- 分类:对于每个位置,模型预测是否存在物体以及其所属的类别。
- 边界框回归:同时预测每个可能存在的物体的边界框位置(中心点坐标、宽度和高度)。
一阶段模型的一个关键点是在特征图的每个位置设置多个锚点(anchors),每个锚点对应一个特定的尺度和长宽比。这样,模型可以预测不同大小和形状的物体。
⛄️**后处理(Post-processing):**使用非极大值抑制和阈值筛选来优化并筛选出最终的检测结果。
为了获得最终的检测结果,一阶段模型还需要进行一些后处理步骤:
-
非极大值抑制 (NMS):与二阶段模型类似,NMS 用来移除重叠的检测结果,只保留最有可能的检测框。
-
阈值筛选 (Thresholding):通常会设定一个置信度阈值,只有当模型预测的概率高于这个阈值时,才会保留该检测结果。
上面两种方法通常结合起来用
以下是一些著名的一阶段模型示例:
- YOLO (You Only Look Once):最早的一阶段模型之一,以其快速的检测速度而闻名。
- SSD (Single Shot MultiBox Detector):使用多尺度特征图来检测不同大小的物体。
- RetinaNet:引入焦点损失(Focal Loss)来解决物体检测中的正负样本不平衡问题。
3.1 一种重要的后处理技术-NMS(Non-Maximum Suppression,非极大型抑制)
3.1.1 基本原理
在目标检测任务中,模型可能会输出多个重叠的边界框来表示同一个目标。例如,在 YOLO 中,每个网格单元都会预测几个边界框及其相应的类别概率。这意味着对于图像中的每个真实物体,模型可能会输出多个边界框。为了从这些边界框中选择最合适的那个,就需要使用 NMS 算法。
3.1.2 基本步骤
排序: 首先,根据每个边界框的置信度(通常是分类概率与定位准确度的综合指标)进行降序排列。置信度最高的边界框被认为是最有可能正确检测到目标的。
置信度 (confidence score)通常用来衡量模型对于所检测出的对象属于某一类别的确信程度。
计算公式:
C o n f i d e n c e = P ( o b j e c t ) ∗ P ( C l a s s ∣ o b j e c t ) Confidence={P(object)*P(Class|object)} Confidence=P(object)∗P(Class∣object)
其中,
- P(Object) 表示边界框内存在物体的概率。
- P(Class∣Object) 表示给定存在物体的情况下,该物体属于某个类别的条件概率。
那么计算这些概率就需要用到一种极其重要的方法–softmax函数
softmax函数是一种常用的激活函数,主要用于多分类问题中,特别是用于将神经网络最后一层的输出转换为概率分布。softmax函数能够将一组实数值转换为概率分布,使得输出值的总和为1,并且每个输出值都处于0到1之间。这使得softmax函数非常适合用于多分类任务,因为它可以提供每个类别的概率估计。
选择: 从排序后的列表中选择置信度最高的边界框,标记为已选,并将其添加到最终的检测结果列表中。
计算IOU: 对于剩余的每个边界框,计算它与已选边界框的IOU。
比较与剔除: 如果某个边界框与已选框的IOU超过了预设的阈值(例如0.5或0.7),则认为这两个框表示的是同一个目标,于是根据置信度较低的原则,剔除这个低置信度的边界框。
重复步骤2-4: 继续选择剩余边界框中置信度最高的,重复计算IOU和剔除过程,直到所有边界框都被检查过。
结束: 最终,剩下的边界框集合即为经过NMS处理后的检测结果,每个目标对应一个最优的边界框。