目标检测基础

📅 2026/8/19 12:08:11
目标检测基础
目标检测计算机视觉技术、在图像或视频中自动识别并定位感兴趣的对象。可识别出存在的物体类别、精确给出这些物体在图像中的位置信息通常用边界框表示。目标检测技术分为两类1. 传统方法Haar 特征、HOG特征结合SVM、滑动窗口2. 基于深度学习方法两阶段检测生成一系列可能包含目标的候选区域然后对这些候选区域进行分类和边界框回归。R-CNN系统Fast R-CNN、Faster R-CNN一阶段检测直接在网络中预测目标类别和位置不需要生成候选区域速度快。YOLO、SSD等目标检测简介计算机视觉让计算机具备类似人类的视觉能力使计算机能够理解和解释视觉信息处理图像和视频数据。最基本的任务包含4项分类、定位、检测和分割。分类解决是什么的问题判断包含什么类别目标定位解决在哪里的问题确定目标位置检测是什么、在哪里的问题。分割解决 每一个像素属于哪个目标物体活场景 的问题语义切割对每一个像素分类标识出每个像素所属的对象类别实例分割更强调对每个具体的物体实例进行分割。例如画面中有多只猫语义分割可能知识将所有猫所在的区域归为猫类元素。实例分割则将每只猫单独分割出来作为不同的实例处理。目标检测一是定位、二是分类。边界框xyxy即(Xmin,Ymin,Xmax,Ymax)其中(Xmin,Ymin)是矩形框左上角坐标(Xmax,Ymax)是矩形框右下角的坐标。xywh即(Xc,Yc,w,h)其中Xc,Yc是矩形框中心点的坐标w是宽度、h是高度边界框的分类真实边界框在训练数据中标注的表示目标物体位置的矩形框。用于指导模型学习如何正确定位和识别目标物体。真实边界框作为监督信号用于计算模型的损失函数通过比较预测边界框与真实边界框的差异来指导模型学习如何生成准确的预测边界。预测边界框指目标检测模型在给定输入图像后生成的边界框表示模型对目标物体位置的预测。预测边界的生成过程如下1. 在模型预测阶段为图像生成多个锚框(AnchorBox)这些锚框具有不同的大小和宽高比。2. 模型为每个锚框预测类别和偏移量。根据预测的偏移量调整锚框位置。3. 为了提高检测的准确性通常会采用非极大值抑制(NMS)方法来去除重复活相似的预测边界框。锚框锚框也被称为先验框Prior Box锚框主要作用是为模型提供一个预定义的边界框集合作为预测物体的基准。在训练过程中模型会学习如何调整这些锚框的位置和大小以更好地匹配实际的目标物体。锚框的生成方法如下1. 设定尺度Scale和宽高比AspectRatio。锚框的生成通常涉及两个关键参数尺度和宽高比。尺度决定锚框的大小而宽高比决定锚框的形状。尺度通常设定为一组0~1之间的值表示锚框相对于输入图像大小的比例例如0.25、0.5、1.0.宽高比通常设定为一组大于0的值表示锚框的宽度与高度的比例例如1、2、0.5。2. 生成锚框。假设输入图像的高度为h宽度为w以每个像素为中心生成不同尺度和宽高比的锚框。3. 计算基本锚框。根据设定的尺度和宽高比计算基本锚框的宽度和高度。4. 生成锚框以每个像素为中心生成具有不同尺度和宽高比的锚框。5. 坐标转换。将生成的锚框坐标转换为标准化的形式。交并比交并比 (Intersection over Union, IoU)用于衡量预测边界框与真实边界框之间的重叠程度。交并比的范围在0~1之间0表示无重叠1表示完全重叠。值越大表示两个边界框的重叠程度越高 预测越准确。交并比是指两个边界框的交集面积与并集面积的比值。在训练目标检测模型时交并比用于评估预测边界框与真实边界框之间的匹配程度。在评估目标检测模型的性能时交并比用于计算各种评估指标。非极大值抑制非极大值抑制Non-Maximum SuppressionNMS在目标检测领域一个目标可能会被多个边界框检测到这些边界框可能具有不同的位置和大小但表示的是同一个目标。NMS的作用就是抑制这些重叠的边界框只保留置信度最高的边界框从而得到最终的目标检测结果。NMS具体计算过程如下1. 按照置信度得分排序。将所有边界框按照其对应的置信度得分从高到低进行排序。这样做的目的是优先处理最有可能是目标的边界框。2. 选择置信度得分最高的边界框将其标记为最佳边界框并从当前列表移除或标记为已处理后续不再考虑它被抑制的情况。3. 计算IoU。对于剩下的没一个边界框计算其与当前最佳边界框之间的IoU。4. 移除重叠框。设定一个阈值如0.5如果某个边界框与当前最佳边界框的IoU超过该阈值则任务这两个边界框重叠过多将该边界框从候选列表中移除。5. 重复过程从剩余的边界框中再次选择置信度最高的框重复上述第3、4步直到所有边界框都处理完毕。评价指标mAP用于衡量模型预测边界框的类别和位置是否正确正样本指的是要检测的物体负样本不需要检测的物体例如在检测人脸的任务中人脸是正样本而背景如窗户、红绿灯等则是负样本。最常见的方法就是 通过混淆矩阵结合分析图表对指标进行综合评价。TPTrue Positive正样本被正确检测的数量FPFalse Positve负样本被错误检测为正样本也称误报的数量的FNFalse Negative正样本未被检测出来也称漏报的数量TNTrue Negative负样本被正确检测数量。在目标检测中通常不关注TN。准确率 Accuracy准确率是指模型正确识别目标的比例。公式为但在目标检测中由于正样本的不均衡性和目标检测任务的特殊性准确率并不是理想的评价指标。使用更多的是精度和召回率。精度 Precision精度是指模型预测为正例的样本中实际也为正例的比例。公式为精度体现了模型在预测为正例样本时的准确程度。召回率 Recall召回率是指实际为正例的样本中被模型正确预测为正例的比例召回率反映了模型检测出所有正例的能力。F1分数 F1 ScoreF1 分数既用来强调覆盖也用来强调精准程度它是精度和召回率的调和平均。F1分数越高说明模型的精度和召回率整体就越高。PR 曲线PR曲线是以召回率为横轴精度为纵轴绘制的曲线。通过观察PR曲线可以直观地了解模型在不同阈值下的精度和召回率的表现。平均精度 Average Precisiton APAP是目标检测中非常流行的一个度量指标它反映了模型在不同召回率下的平均精度。AP的计算方式是对不同召回率下的精度进行平均通常定义为PR曲线下的面积。AP的值域为[0,1]。平均精度均值 mean Average Precision. mAPmAP 是 AP 的平均值用于综合评估目标检测模型在所有类别上的表现。计算mAP时通常会先计算每个类别的AP然后对所有类别的AP值求平均值。mAP越高说明模型的整体检测性能越好。在多类别目标检测中mAP是一个重要的评价指标。两阶段目标检测算法两阶段算法首先生成候选区域然后对这些区域进行分类和定位。R-CNN算法R-CNNRegion-based CNN是一种基于深度学习的目标检测算法通过结合选择性搜索Selective Search, SS生成候选区域和CNN提取特征大幅提高了目标检测的准确性和性能。R-CNN 的核心思想是将目标检测问题转化为一系列候选区域Region Proposal的分类问题。算法流程1. 候选区域生成对于一张输入的图像首先使用选择性搜索算法获取大约2000个候选区域。选择性搜索算法通过图像分割的方法生成一些原始区域然后利用合并策略将这些区域合并得到层次化的区域结构这些结构包含可能需要的物体。候选区域被认为是可能包含目标的区域。2. 特征提取由于候选区域的大小各不相同为了适应后续CNN的输入要求需要先对候选区域进行预处理将每个候选区域缩放至固定大小通常为227x227像素以便输入CNN中。接着进行特征提取这些缩放后的候选区域被输入预训练的CNN如AlexNet中以提取出4096维的特征向量。这一步将每个候选区域转换为固定大小的向量便于后续处理。3. 分类使用SVM分类器对提取的特征向量进行分类将每个候选区域的特征向量输入对应的SVM分类器中得到每个类别的概率判断每个候选区域是否包含目标以及目标的类别。对于每个类别单独训练一个二分类SVM。正样本是与真实边界框的IoU大于0.7的候选区域负样本是与真实边界框的IoU小于0.3的候选区域。对于PASCAL VOC 数据集中的20个类别需要训练20个SVM分类器。将每个候选区域的4096维特征向量分别输入20个SVM分类器中得到20个概率值。分类器输出一个2000x20的矩阵其中每一行代表一个候选框每一列表示该候选框属于某一类别的概率选择概率最高的类别作为该候选区域的类别。4. 边界框回归与NMS虽然候选区域已经初步定位了目标的位置但由于候选区域的生成过程存在误差需要进一步精确定位目标。为此R-CNN使用边界回归器对每个候选区域进行微调以修正候选框的位置。此外为了消除冗余的候选框R-CNN还采用NMS算法进行筛选去除那些与高概率候选框高度重叠的低概率候选框从而保留最有可能的目标框。优点1. 引入深度学习开创性、迁移学习2. 显著提升检测精度深度特征提取、多类别检测3. 模块化设计候选区域生成、特征提取和分类分离缺点1. 计算复杂度高1. 候选区域数量多R-CNN 生成的候选区域数量通常在2000个左右每个候选区域都需要通过CNN提取特征导致计算量非常大2. 特征提取重复计算由于每个候选区域都需要单独进行特征提取在候选区域之间存在重叠的情况下会导致大量的重复计算。2. 训练和测试时间长训练时间长测试时间长3. 内存消耗大特征存储模型复杂度高4. 依赖候选区域生成算法选择性搜索R-CNN依赖选择性搜索算法生成候选区域而选择性搜索算法本身存在一定的局限性。可能会遗漏一些目标活生成过多的冗余的候选区域。候选区域质量影响大候选区域的质量直接影响最终的检测结果如果候选区域的生成算法不理想R-CNN的性能也会受到影响。Fast R-CNN 算法Fast R-CNN 在 R-CNN 的基础上吸收了SPP-Net 的思想使用了与 SPPSpatial Pyramid Pooling空间金字塔池化层类似的兴趣区域池化层同时将提取特征后的分类和边界框回归添加到深度学习中进行同步训练使得Fast R-CNN 的训练与 R-CNN的多阶段训练相比更加简洁节省时间和空间。Fast R-CNN 的训练速度是 R-CNN的9倍检测速度是R-CNN的213倍。创新点1. 共享卷积计算Fast R-CNN 将整张图像输入CNN一次性计算出整张图像的特征图然后根据候选区域在特征图上的位置直接从特征图中提取每个候选区域的特征避免了重复计算。2. RoI Region of Interest 兴趣区域池化层为了处理不同大小的候选区域Fast R-CNN 引入了RoI池化层。 RoI 池化层能将不同大小的候选区域映射为固定大小的特征向量从而适应全连接层的要求。3. 多任务损失函数Fast R-CNN 采用多任务损失函数该函数同时考虑分类损失和边界框回归损失。通过这种方式Fast R-CNN 能够在一次训练中同时优化分类和定位任务从而提升模型的综合性能。算法流程1. 候选区域生成与R-CNN类似Fast R-CNN 使用选择性搜索算法在图像中生成约 2000 个候选区域。2. 特征提取与RoI池化手首先输入图像通过预训练的CNN如VGG16或ResNet进行特征企图得到整张图像的特征图。在得到特征图后Fast R-CNN 会根据预先生成的候选框对特征图进行RoI池化操作。RoI池化层是一种特殊的池化层可以将不同大小的输入映射到固定大小的输出。这样无论候选框大小如何变化都能得到固定大小的特征向量。3. 分类与回归将经RoI池化后的特征向量送入全连接层分别进行分类和边界框回归。分类任务使用softmax函数输出每个候选区域属于各个类别的概率而回归任务则用于精确定位候选区域的边界框。Fast R-CNN 将分类和位置精调两个任务统一用深度网络实现即用同一网络同时输出类别概率和边界框回归参数。这样就可以实现端到端的训练进一步提高检测精度。RoI池化层作用是将不同尺寸RoI映射到相同大小的特征图上以便进行后续的分类和定位操作。多任务损失函数将分类损失和边界损失加权求和作为总损失这样就可以在一次训练中同时优化分类和边界框回归两个任务。分类损失通常使用交叉熵函数损失函数。边界框回归损失则使用L1损失函数。Faster R-CNN 算法为了解决选择性搜索在寻找候选区域速度较慢的问题。Faster R-CNN 采用和 Fast R-CNN 相同的设计只是它用RPN替代选择性搜索。一阶段目标检测算法一阶段目标检测算法直接从图像中预测目标的类别和位置无须生成候选区域。YOLO 算法YOLO 12016年由华盛顿大学的 Joseph Redmon 和 Ali Farhadi 开发是YOLO系列的开山之作。YOLOv1将目标检测任务视为一个回归问题通过单次前向传播完成图像中所有目标的检测。它将图像划分为网格每个网格预测边界框和类别并在PASCAL VOC 2007数据集上实现了63.4%的mAP值。YOLO1的设计使其在保持较高检测精度的同时能够实现接近实时的检测速度。YOLO v2YOLO90002016年底发布也被称为YOLO9000。这个版本在YOLOv1的基础上加入了锚点和批量归一化提高了小目标的检测精度并具备了检测超过9000个不同物体类别的能力。同时它采用了全卷积网格结构并在高分辨率图像上进行了微调。此外它还引入了多尺度训练方法使同一模型可以在不同大小的图像上运行。YOLOv32018年4月发布在YOLOv1和YOLOv2的基础上进行了多项改进。它采用了多尺度特征提取技术优化了网络结构使用Darknet-53作为骨干网络并引入了特征金字塔网络Feature Pyramid NetworkFPN的概念从而增强了对不同尺度目标的检测能力。YOLOv3在不同尺度上进行三次检测分别在32倍、16倍和8倍降采样的特征图上进行这种设计使其能够更好地检测不同大小的目标。YOLOv42020年4月由 Alexey Bochkovskiy 等人发布。YOLOv4通过实验多种技术如CBN跨小批量归一化、PAN路径聚合网络、SAM空间注意力模块等找到了训练策略和推理成本之间的最佳平衡点。它还引入了Mosaic数据增强、新的无锚点检测头和新的损失函数等创新YOLOv5主要变化在于使用PyTorch而不是Darknet进行开发由Ultralytics维护。进一步提高了模型的性能并添加了新功能如超参数优化、集成实验跟踪和自动导出为流行的导出格式。YOLO v62022年6月由美团视觉智能部发布。YOLOv6采用了无锚点的检测器并对Backbone和Neck进行了重新设计以提高GPUGraphics Procssing Unit图形处理单元等硬件的效率。它已被用于美团的许多自主送货机器人中。YOLOv72022年7月由YOLOv4作者发布。YOLOv7提出了模型结构重参化和动态标签分配问题的优化进一步减少了参数量和计算量。它还增加了额外的任务如COCO关键点数据集的姿势估计。YOLOv82023年1月由Ultralytics发布。YOLOv8是无锚的 具有更快的NMS过程提供了不同大小的模型选择以适应不同的性能和精度需求。它还引入了新功能和改进以提高性能、灵活性和效率支持全方位的视觉AI任务。YOLOv92024年2月由原YOLOv7团队发布。YOLOv9提出了可编程梯度信息PGI的概念并设计了基于梯度路径规划的通用高效层聚合网络GELAN。YOLOv102024年5月发布由清华大学的研究人员使用UltralyticsPython 包创建。此版本通过引入端对端头实现了实时目标检测的改进消除了NMS的需求。YOLOv112024年9月发布是Ultralytics推出的最新YOLO模型。YOLO11是一款前沿的SOTA模型它是先前YOLO版本的基础上引入了新的特性和改进点以进一步提升性能和灵活性。YOLO11被设计为快速、准确且易于使用使其称为广泛应用于目标检测与跟踪、实例分割、图像分类和姿态估计任务的理想选择。