yolo目标检测技术:基础概念(一)
目标检测技术详解:从基础概念到YOLO模型
文章目录
- 目标检测技术详解:从基础概念到YOLO模型
- 一、目标检测的三大任务
- (一)图像分类(Image Classification)
- (二)目标检测(Object Detection)
- (三)图像分割(Image Segmentation)
- (四)三者的分别
- 二、单阶段与两阶段目标检测算法
- (一)单阶段目标检测算法(One-stage)
- (二)两阶段目标检测算法(Two-stage)
- (三)总结对比
- (四)如何选择?
- 三、数据集的标注与划分
- (一)数据集的标注
- (二)数据集的划分
- 四、目标检测的关键指标
- (一)IOU(Intersection over Union)
- (二)置信度(Confidence Score)
- (三)混淆矩阵(Confusion Matrix)
- (四)准确率(Accuracy)
- (五)精确率(Precision)
- (六)召回率(Recall,又称 True Positive Rate)
- (七)F1 分数
- (八)PR 曲线(Precision-Recall Curve)
- (九)AP(Average Precision)
- (十)mAP(mean Average Precision)
- 一句话速记图
- 五、目标检测的速度与算力需求
- (一)FPS(Frames Per Second)
- (二)GFLOPS(Giga Floating Point Operations Per Second)
- (三)消耗时间
在计算机视觉领域,目标检测一直是核心任务之一,它广泛应用于自动驾驶、安防监控、医学影像分析等多个领域。
一、目标检测的三大任务
目标检测主要可以分为以下三个任务:
(一)图像分类(Image Classification)
图像分类是目标检测的基础任务之一,它的目标是判断图像中是否存在某个特定的类别,并输出该类别的概率。例如,判断一张图片中是否包含猫、狗等动物。图像分类模型通常会输出一个概率分布,表示图像属于各个类别的可能性。
(二)目标检测(Object Detection)
目标检测不仅需要判断图像中是否存在目标,还需要确定目标的位置。具体来说,目标检测模型会输出目标的类别以及一个边界框(Bounding Box),用于框出目标的位置。例如,在一张包含多个人和车辆的图片中,目标检测模型需要分别检测出每个人和车辆的位置,并标注出它们的类别。
(三)图像分割(Image Segmentation)
图像分割是目标检测的进一步延伸,它的目标是将图像中的每个像素都分配到一个特定的类别中。与目标检测不同的是,图像分割不仅需要确定目标的位置,还需要精确地分割出目标的轮廓。例如,在医学影像分析中,图像分割可以用于分割出肿瘤的边界,为医生提供更精确的诊断信息。
(四)三者的分别
二、单阶段与两阶段目标检测算法
在目标检测领域,算法通常被分为单阶段(One-stage)和两阶段(Two-stage)两大类。它们的核心区别在于是否显式地生成候选区域(Region Proposals)。
(一)单阶段目标检测算法(One-stage)
特点 | 描述 |
---|---|
流程 | 直接在一次前向传播中完成目标定位与分类,无需显式生成候选区域。 |
原理 | 在图像上密集采样锚框(anchor)或网格,直接对每个框进行类别预测和边框回归。 |
优点 | 速度快,结构简单,适合实时应用。 |
缺点 | 精度略低,尤其对小目标或密集目标检测容易误检或漏检。 |
代表算法 | YOLO 系列(v1~v8)、SSD、RetinaNet、EfficientDet、CenterNet 等。 |
(二)两阶段目标检测算法(Two-stage)
特点 | 描述 |
---|---|
流程 | 第一阶段:使用区域建议网络(RPN)或选择性搜索生成候选框; 第二阶段:对每个候选框进行分类和位置精修。 |
原理 | 先生成高质量候选区域,再精细识别,减少背景干扰。 |
优点 | 精度高,尤其在小目标、复杂场景下表现更好。 |
缺点 | 模型复杂,推理速度慢,资源消耗大。 |
代表算法 | R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、Cascade R-CNN 等。 |
(三)总结对比
维度 | 单阶段 | 两阶段 |
---|---|---|
速度 | 快 ⭐⭐⭐ | 慢 ⭐ |
精度 | 一般 ⭐⭐ | 高 ⭐⭐⭐ |
适合场景 | 实时检测、边缘设备 | 精度要求高、服务器端 |
典型算法 | YOLO、SSD | Faster R-CNN、Mask R-CNN |
(四)如何选择?
- 自动驾驶、视频监控、移动端部署 → 选 单阶段(YOLO、SSD)。这些场景通常对实时性要求较高,需要快速检测出目标,而单阶段算法的高效性能够满足这一需求。
- 医学影像、安防、科研 → 选 两阶段(Faster R-CNN、Cascade R-CNN)。在这些场景中,对检测精度的要求极高,例如在医学影像中,漏检或误检可能会导致严重的后果,因此两阶段算法的高精度特性更适合。
三、数据集的标注与划分
在目标检测任务中,数据集的标注和划分是至关重要的环节。
(一)数据集的标注
数据集的标注是指对图像中的目标进行标注,包括目标的类别和边界框的位置。常见的标注工具包括LabelImg、CVAT等。标注的质量直接影响模型的性能,因此需要确保标注的准确性和一致性。
(二)数据集的划分
数据集通常被划分为训练数据集、验证数据集、测试数据集和推理数据集。
- 训练数据集:用于训练模型,模型通过学习训练数据集中的特征来优化自身的参数。
- 验证数据集:用于验证模型的性能,通过验证数据集可以调整模型的超参数,避免过拟合。
- 测试数据集:用于评估模型的最终性能,测试数据集通常在模型训练完成后使用,用于衡量模型在未见过的数据上的表现。
- 推理数据集:用于实际应用中的推理任务,模型在推理数据集上进行目标检测,输出检测结果。
四、目标检测的关键指标
目标检测的性能通常通过以下指标来衡量:
(一)IOU(Intersection over Union)
- 定义:预测框与真实框的交集面积除以并集面积。(交并比)
- 公式:IOU = |A∩B| / |A∪B|。
- 注意:IOU≥0.5 通常视为“检测成功”的阈值,不同任务可设为0.3/0.75等。
- 图形公式如下:
(二)置信度(Confidence Score)
- 定义:模型给出的“该框内存在目标且类别正确”的概率。
- 公式:无固定公式,由网络最后一层 sigmoid/softmax 输出。
- 注意:置信度阈值(如0.3)决定一条预测框是否进入后续评估。
(三)混淆矩阵(Confusion Matrix)
- 定义:行=真实类别,列=预测类别,元素表示样本数。
- 公式:二维计数表,对角线为正确预测。
- 注意:目标检测需先按IOU+置信度配对框,再做类别计数,否则无法直接套用分类式矩阵。
(四)准确率(Accuracy)
- 定义:所有预测框中,被正确分类且IOU达标的框所占比例。
- 公式:Acc = (TP+TN) / (TP+FP+FN+TN)。
- 注意:检测任务里背景框极多,准确率经常被稀释,很少单用。
(五)精确率(Precision)
- 定义:被检出的框里,真正框的比例。
- 公式:P = TP / (TP+FP)。
- 注意:高精确率意味着低误报,适用于“宁可漏检也不能错检”场景。
(六)召回率(Recall,又称 True Positive Rate)
- 定义:所有真实目标里,被成功检出的比例。
- 公式:R = TP / (TP+FN)。
- 注意:高召回意味着低漏检,安防/医学场景尤其看重。
(七)F1 分数
- 定义:精确率与召回率的调和平均。
- 公式:F1 = 2·P·R / (P+R)。
- 注意:P、R 同权重,单一指标时最常用。
(八)PR 曲线(Precision-Recall Curve)
- 定义:以不同置信度阈值切点,画出 Precision vs Recall 的曲线。
- 公式:横轴 Recall,纵轴 Precision。
- 注意:越靠近右上越好;当类别极不平衡时,PR 曲线比 ROC 曲线更有意义。
(九)AP(Average Precision)
-
定义:PR 曲线下的“平均精确率”,衡量单类检测性能。(可理解为PR曲线下的面积)
-
两种计算方式:
-
11 点插值法(PASCAL VOC 2007):在 Recall = 0, 0.1, …, 1.0 共 11 个等距点取最大 Precision,做平均。
-
-
面积法(VOC 2010+ / COCO):对 PR 曲线做单调递减后,直接计算曲线下面积(AUC)。
-
-
-
注意:COCO 默认用面积法,mAP@0.5:0.95 即把 IOU 从 0.5 到 0.95 每 0.05 取一次 AP 再平均。
(十)mAP(mean Average Precision)
- 定义:所有类别 AP 值的平均。也叫平均平均精度
- 公式:mAP = (1/N) Σ AP_i。
- 注意:
- VOC 数据集常用 mAP@0.5(一个 IOU 阈值)。
- COCO 数据集常用 mAP@0.5:0.95(10 个阈值再平均),数值通常比 VOC 低很多。
一句话速记图
IOU 配对 → 置信度阈值 → TP/FP/FN → 混淆矩阵 → 计算 P/R → 画 PR 曲线 → 求 AP → 求 mAP。
五、目标检测的速度与算力需求
在实际应用中,目标检测的速度和算力需求也是需要考虑的重要因素。
(一)FPS(Frames Per Second)
FPS表示每秒处理的帧数,是衡量目标检测速度的重要指标。一般来说,FPS >= 30可以满足实时监测的需求,例如在自动驾驶和视频监控等场景中,需要快速检测出目标并做出响应。
(二)GFLOPS(Giga Floating Point Operations Per Second)
GFLOPS表示每秒执行的浮点运算次数,是衡量模型算力需求的指标。不同的目标检测算法对算力的需求有所不同,例如单阶段算法通常对算力需求较低,而两阶段算法对算力需求较高。
(三)消耗时间
消耗时间包括预处理时间、推理时间以及后置处理时间。预处理时间是指将输入图像进行预处理(如缩放、归一化等)所需的时间;推理时间是指模型对输入图像进行目标检测所需的时间;后置处理时间是指对检测结果进行后处理(如NMS等)所需的时间。总消耗时间越短,模型的实时性越好。