赞
踩
优点:
每个图像固定大小 448*448,系统将输入图像分成S × S网格。
如果一个物体的中心落在一个网格单元中,这个网格单元负责检测这个物体
Precision (准确率) 表示检测到的正样本中,实际为正样本的比例。
计算公式为:Precision = TP / (TP + FP),其中 TP(True Positives)表示正确检测到的目标数量,FP(False Positives)表示错误检测到的非目标数量。
Recall (召回率) 表示实际正样本中,被正确检测出的比例。
计算公式为:Recall = TP / (TP + FN),其中 FN(False Negatives)表示未被检测到的目标数量。
PR曲线的绘制
在目标检测中,Precision-Recall (PR) 曲线是一种评估模型性能的工具,它展示了在不同召回率水平下模型的准确率表现。为了绘制这条曲线,我们需要根据不同的阈值计算一系列的准确率和召回率值。
以下是绘制 Precision-Recall 曲线的步骤:
计算置信度分数:对于给定的目标检测模型,对测试数据集中的每个图像进行预测,为每个预测的边界框分配一个置信度分数,表示模型认为该边界框包含目标的可能性。
排序:将所有预测的边界框根据其置信度分数从高到低排序。
设置阈值:从最高的置信度分数开始,逐渐降低阈值。每个阈值都会对应一组被认为是正样本的预测边界框(即置信度分数高于阈值的边界框)。
计算 Precision 和 Recall:对于每个阈值,计算相应的 Precision 和 Recall 值。具体来说,Precision 是在当前阈值下,正确预测的边界框数量占所有预测为正样本的边界框数量的比例。Recall 是在当前阈值下,正确预测的边界框数量占实际正样本总数的比例。
绘制曲线:将每个阈值对应的 Precision 和 Recall 值作为一个点绘制在图上,横坐标为 Recall,纵坐标为 Precision。连接所有这些点,就得到了 Precision-Recall 曲线。
这条曲线提供了一个直观的方式来查看模型在不同召回率水平下的准确率表现。理想情况下,我们希望这条曲线尽可能靠近右上角,这意味着模型在高召回率下仍然能保持高准确率。在实际应用中,通常需要在准确率和召回率之间做出权衡,选择一个合适的阈值以满足特定的需求。
对于每个类别,我们可以根据不同的阈值绘制出 Precision-Recall 曲线。AP 是这条曲线下面积的近似值,反映了模型在不同召回率水平上的准确率表现。AP 的值越高,表示模型的性能越好。
不同的阈值会影响被认为是 True Positive(正确检测到的正样本)的样本数量。
当阈值较高时,只有置信度非常高的预测才会被视为正样本(即被认为是正确的检测)。这通常会导致较少的样本被认为是 True Positive,但同时也减少了 False Positive(错误地将负样本预测为正样本)的数量,因此准确率(Precision)较高。然而,这也可能导致很多实际上是正样本的目标被错过,从而降低了召回率(Recall)。
相反,当阈值较低时,即使置信度不是很高的预测也会被视为正样本。这会增加被认为是 True Positive 的样本数量,提高召回率,但同时也增加了 False Positive 的数量,从而降低准确率。
在目标检测任务中,通常需要检测多个类别的对象。mAP 是对所有类别的 AP 值取平均得到的。具体来说,如果有 N 个类别,那么 mAP = (AP1 + AP2 + … + APN) / N。mAP 考虑了所有类别的检测性能,是一个综合性能指标,常用于比较不同目标检测模型的效果。
总的来说,mAP 是一种衡量目标检测模型在多个类别上整体性能的指标,它考虑了模型的准确率和召回率,是目标检测领域中非常重要的评估指标之一。
置信度分数定义为 P r ( o b j e c t ) ∗ I O U p r e d t r u t h Pr(object)*IOU_{pred}^{truth} Pr(object)∗IOUpredtruth, I O U IOU IOU 是交并比, P r ( o b j e c t ) Pr(object) Pr(object) 是模型认为该网格存在物体的概率,
每个网格单元预测 B 个边界框和这些框的置信度得分。
每个边界框由5个预测组成:x, y, w, h和置信度。(x, y)坐标表示相对于网格单元边界的框的中心。宽度和高度是相对于整个图像预测的。最后,置信度预测表示预测框与任何真实框之间的IOU。
每个网格单元还预测 C 个条件类别概率 P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i |Object) Pr(Classi∣Object)。这些概率取决于包含对象的网格单元。
在测试时,将条件类别概率与单个框置信度预测相乘
这提供了每个边界框特定类别的置信度分数。这些分数编码了该类别出现在框中的概率以及预测框与该对象的匹配程度。
置信度得分反映了模型对于边界框内有目标存在的信心,以及边界框的定位准确性。
这张图展示了YOLO(You Only Look Once)目标检测算法的工作流程,具体步骤如下:
输入图像和网格划分:
边界框和置信度预测:
类别概率映射:
最终检测:
总结:YOLO通过一次性的前向传播过程对整个图像进行预测,生成边界框、置信度和类别概率,然后基于这些信息输出最终的检测结果,这使得它既快速又有效。
系统将检测建模为回归问题。它将图像划分为S × S网格,并为每个网格单元预测B个边界框、这些框的置信度和C类概率。这些预测被编码为S × S × (B * 5 + C)张量。
详细解释一下S×S×(B * 5 + C)这个张量的结构:
S×S:
B:
5:
C:
因此,对于S×S网格中的每个单元,模型都会输出B个边界框,每个边界框有5个预测值,再加上C个类别概率,共计B * 5 + C个预测值。这就是为什么模型的最终输出是一个 S×S×(B * 5 + C) 的张量。该张量汇总了关于位置、大小、置信度和类别概率的所有预测,是模型进行目标检测所需的全部信息。
为了评估 PASCAL VOC上的YOLO,作者设置 S = 7, B = 2。PASCAL VOC有20个标签类,所以 C = 20。所以最终的预测是一个7 × 7 × 30张量。
网络有24个卷积层,后面是2个全连接层。
作者没有使用GoogLeNet使用的初始模块,而是简单地使用1 × 1约简层,然后是3 × 3卷积层
作者还训练了一个快速版本的YOLO,旨在推动快速目标检测的界限。快速YOLO使用了一个卷积层更少的神经网络(9层而不是24层),这些层中的卷积滤波器更少。除了网络的大小,YOLO和Fast YOLO的所有训练和测试参数都是相同的。
作者的检测网络有24个卷积层,后面是2个全连接层。交替的1 × 1卷积层减少了前一层的特征空间。作者在 ImageNet 分类任务上以一半的分辨率 (224 × 224输入图像) 预训练卷积层,然后将分辨率提高一倍用于检测。
如图,网络的最终输出是7 × 7 × 30的预测张量。
这张图展示了YOLOv1目标检测网络的结构。这个结构是典型的卷积神经网络(CNN),由多个卷积层(Convolutional Layers)、池化层(Maxpooling Layers)以及全连接层(Connected Layers)组成。下面是各个部分的详细解释:
输入:
卷积层和池化层:
卷积核和步长:
全连接层:
输出:
总结:这张图详细描述了YOLOv1网络的结构和各层的具体配置。这个网络通过提取和整合特征,最终产生了用于目标检测的预测。
作者在 ImageNet 1000类竞争数据集上预训练卷积层。对于预训练,作者使用图3中的前20个卷积层,然后是平均池化层和全连接层。对该网络进行了大约一周的训练,并在ImageNet 2012验证集上实现了单个作物前5名的准确率达到88%,与Caffe的Model Zoo中的GoogLeNet模型相当。
然后作者将模型用于执行检测。Ren等人表明,在预训练网络中同时添加卷积层和连接层可以提高性能。
因此作者添加了四个卷积层和两个随机初始化权重的全连接层。检测通常需要细粒度的视觉信息,因此作者将网络的输入分辨率从 224 × 224 提高到 448 × 448。
最后一层预测类别概率和边界框坐标。作者通过图像的宽度和高度对边界框的宽度和高度进行归一化,使它们落在 0 和 1 之间。将边界框的 x 和 y 坐标参数化为特定网格单元格位置的偏移量,因此它们也被限定在0和1之间。
对最后一层使用线性激活函数,所有其他层使用以下 leaky rectified linear activation:
作者对模型输出的平方和误差 sum-squared error 进行优化,使用 sum-squared error 的原因是易于优化,然而,它并不完全符合最大化平均精度的目标。它将定位误差与分类误差等同地加权,这可能不是理想的。
在YOLOv1的论文中,当提到优化目标检测的sum-squared error(平方和误差),它是在说模型的训练过程中使用了一种特定的损失函数来度量和优化模型预测的准确性。
Sum-squared error(SSE)是一种常见的损失函数,在目标检测的上下文中,它指的是模型输出和实际值之间差异的平方和。具体来说,对于目标检测,SSE将计算以下几项的误差:
YOLOv1论文中指出,虽然平方和误差易于优化(因为它是可微的且通常是凸形的),但它并不完全符合模型的最终目标,即最大化平均精度(average precision)。这是因为平方和误差对所有类型的误差给予了相同的权重,而在实际情况中,定位误差(如边界框位置和尺寸的预测不准确)和分类误差(如错误的类别预测)对模型性能的影响可能并不相同。例如,在某些情况下,一个小的定位误差可能不会显著影响模型的实用性,但一个分类错误可能会导致完全不同的输出,这在实际应用中可能是不可接受的。
总结来说,平方和误差是一种在模型训练时评价预测准确性的方法,它通过计算预测值和真实值之间的平方差之和来实现,但它可能不会完全反映出在目标检测任务中最重要的性能指标。
此外,在每张图像中,许多网格单元不包含任何对象。这使得这些单元格的“置信度”得分趋近于零,往往压倒了包含对象的单元格的梯度。这可能导致模型不稳定,导致训练在早期出现分歧。
为了解决这个问题,作者增加了边界框坐标预测的损失,减少了不包含对象的框的置信度预测的损失。我们使用两个参数, λ c o o r d λ_{coord} λcoord和 λ n o o b j λ_{noobj} λnoobj来实现这一点。设 λ c o o r d = 5 λ_{coord}=5 λcoord=5, λ n o o b j = 0.5 λ_{noobj}=0.5 λnoobj=0.5。
附注:
在 YOLOv1 的损失函数中, λ coord \lambda_{\text{coord}} λcoord 和 λ noobj \lambda_{\text{noobj}} λnoobj 是两个权重因子,用于调整损失函数中不同部分的相对重要性。它们是超参数,通常在训练前设定,并在训练过程中保持不变。
λ coord \lambda_{\text{coord}} λcoord:
λ noobj \lambda_{\text{noobj}} λnoobj:
通过这种方式,YOLOv1 的损失函数可以更加重视边界框的精确性,并减少那些不包含对象的网格单元的干扰,使得模型更关注于真正包含对象的网格单元。这有助于提高模型对对象位置的敏感性,同时降低背景误报。
平方和误差在大的边界框和小的边界框中的权重也相等。误差度量应该反映出大边界框里的小偏差比小边界框里的小偏差影响小。为了部分解决这个问题,作者预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。
在YOLOv1中,网络的设计允许每个网格单元(grid cell)预测多个边界框(bounding boxes)。这意味着每个网格单元不仅可以检测是否有物体存在,还可以预测物体的位置和尺寸。然而,在训练时,我们不需要或不希望每个网格单元的所有边界框预测器都对同一个物体做出响应,因为这会造成预测冗余和效率低下。
为了解决这个问题,YOLOv1采取了以下策略:
指定“负责”预测器:当多个边界框预测器对同一个对象做出预测时,我们只选择一个预测器作为“负责”该对象的预测器。这个选择是基于哪个预测器和真实边界框(ground truth)之间的交并比(IOU)最高。交并比是预测框和真实框重叠部分面积与两者联合面积之比,是评价边界框预测准确性的一个指标。
预测器的专业化:通过这种方法,每个边界框预测器都会“专门化”来负责不同的任务。一些预测器可能会变得擅长预测特定大小的对象,一些可能擅长特定长宽比的对象,还有一些可能擅长预测特定类别的对象。
提高整体召回率:这种专业化有助于提高模型整体的召回率。召回率是指模型正确检测到的正样本数量占所有正样本数量的比例。由于每个预测器都变得更擅长于其负责的特定类型的预测,整体上模型能够更准确地识别出更多的物体。
简单来说,YOLOv1中的每个网格单元可以预测多个边界框,但在训练过程中,每个真实的物体只由一个最佳匹配的预测器负责,这样每个预测器都可以逐渐适应并优化对特定类型物体的预测,提高模型的检测能力。
其中
1
i
o
b
j
\mathcal{1}_i^{\mathbb{obj}}
1iobj 表示目标出现在网格
i
i
i,
1
i
j
o
b
j
\mathcal{1}_{ij}^{\mathbb{obj}}
1ijobj 表示网格
i
i
i 对应的第
j
j
j 个边界框预测器对该预测负责
这个图展示了YOLOv1模型的损失函数,它是一个多部分组成的复杂函数,用于训练过程中优化模型的各个参数。这个损失函数包含几个不同的部分,分别针对边界框的位置、尺寸、置信度和类别预测。以下是各部分的详细解释:
边界框位置损失(第一项):
边界框尺寸损失(第二项):
置信度损失(第三项和第四项):
分类损失(最后一项):
总的来说,YOLOv1的损失函数是多目标的,旨在同时优化定位精度(位置和尺寸),确保检测到的对象的置信度,以及分类的准确性。通过这种方式,YOLO可以通过一个统一的框架来学习预测边界框和类别。
附注:如何理解下面这段话
Note that the loss function only penalizes classification error if an object is present in that grid cell (hence the conditional class probability discussed earlier). It also only penalizes bounding box coordinate error if that predictor is “responsible” for the ground truth box (i.e. has the highest IOU of any predictor in that grid cell).
这段话描述了YOLOv1中损失函数对不同误差类型的惩罚(penalize)是有条件的,而这些条件取决于网格单元(grid cell)中是否存在对象,以及边界框预测器(bounding box predictor)是否对实际边界框(ground truth box)负责。
以下是详细解释:
分类误差的条件惩罚:
边界框坐标误差的条件惩罚:
总结:
这意味着损失函数设计成只对那些真正重要的错误进行惩罚,以便网络可以集中学习有助于提高检测性能的预测,而不是对所有的错误都一视同仁。这种方法有助于提高训练效率和最终模型的性能。
作者在PASCAL VOC 2007年和2012年的训练和验证数据集上训练了大约135个epoch。在测试PASCAL VOC 2012年的数据时,还利用2007年VOC测试数据进行训练。在整个训练过程中,使用的批大小为64,动量为0.9,衰减率为0.0005。
学习率计划如下:对于第一个epoch,作者缓慢地将学习率从10−3提高到10−2。
如果从一个高学习率开始,模型经常由于不稳定的梯度而偏离。作者继续用10−2训练75次,然后用10−3训练30次,最后用10−4训练30次。
为了避免过拟合,作者使用 dropout 和广泛的数据增强。在第一个全连接层之后设置速率为0.5的dropout层,可以防止层与层之间的共适应。
对于数据增强,作者引入了原始图像大小的20%的随机缩放和平移。作者还在HSV色彩空间中随机调整图像的曝光和饱和度,最高可达1.5倍。
就像在训练中一样,预测被测试图像的检测只需要一次网络评估。在PASCAL VOC上,网络预测每张图像的98个边界框和每个框的类别概率。YOLO在测试时非常快,因为它只需要一次网络评估,不像基于分类器的方法。
网格设计在边界框预测中加强了空间多样性。通常情况下,一个对象落在哪个网格单元是很清楚的,网络只预测每个对象的一个框。
网格设计增强了边界框预测的空间多样性。 通常,物体属于哪个网格单元是很清楚的,并且网络只为每个物体预测一个框。 然而,一些较大的物体或靠近多个单元格边界的物体可以被多个单元格很好地定位。 非极大值抑制(NMS)可用于修复这些多重检测。 虽然对于 R-CNN 或 DPM 而言,非最大抑制对性能并不重要,但非极大值抑制使 mAP 增加了 23%。
YOLO对边界框预测施加了很强的空间约束,因为每个网格单元只能预测两个框,并且只能有一个类。这个空间约束限制了模型可以预测的附近物体的数量。模型难以处理成群出现的小物体,比如鸟群。
由于模型学习从数据中预测边界框,它很难推广到新的或不寻常的长宽比或配置的对象。作者提出的模型还使用相对粗糙的特征来预测边界框,因为模型架构从输入图像中有多个下采样层。
最后,当在近似检测性能的损失函数上进行训练时,损失函数在小边界框和大边界框中处理错误是相同的。大边界框里的小错误通常是良性的,但小边界框里的小错误对 IOU 的影响要大得多。
主要错误来源是不正确的定位。
附注,什么是上采样层,下采样层?
在深度学习和计算机视觉中,上采样层(Upsampling Layer)和下采样层(Downsampling Layer)是卷积神经网络中用于改变数据维度的层。
下采样层(Downsampling Layer):
上采样层(Upsampling Layer):
在一些网络结构中,特别是在进行图像分割(如U-Net)或生成模型(如GANs)时,可能会交替使用上采样层和下采样层,以实现从粗糙到精细的信息流和特征恢复。
作者介绍了目标检测的统一模型YOLO。与基于分类器的方法不同,YOLO是在直接对应于检测性能的损失函数上进行训练的,并且整个模型是联合训练的。
Fast YOLO是文献中最快的通用目标检测器,YOLO推动了最先进的实时对象检测。YOLO还可以很好地推广到新的领域,使其成为依赖于快速、健壮的对象检测的应用程序的理想选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。