想象你站在一家快递分拣中心的传送带旁。新来的分拣员小明要上岗,他必须学会两件事:第一,认出传送带上的包裹是什么(文件袋、盒子、还是易碎品);第二,判断包裹在传送带上的位置,好伸手去拿。这两件事听起来简单,但传送带一刻不停地运转,小明必须在零点几秒内同时完成“认出”和“定位”——这正是实时目标检测要解决的核心问题。 在计算机世界里,摄像头就是传送带,算法就是分拣员。所谓“实时目标检测”,就是让算法像熟练的分拣老师傅一样,在视频的每一帧里,一眼扫过就能同时告诉大家:画面里有什么物体、它们分别在哪里。这篇文章会从一个快递分拣中心的视角,带你认识 YOLO 系列等实时检测算法是怎么设计出来的,它们如何平衡“手速”(检测速度)和“眼力”(检测精度),以及在实际工程项目中该怎么用。

岗位关联

学完本文,你将理解实时目标检测的核心设计思想与 YOLO 系列演进脉络,掌握速度与精度的权衡方法,能在视频监控、自动驾驶等场景中完成模型选型与优化,为实际部署打下坚实基础。

目录
  1. 可视化演示
  2. 检测任务基础
  3. 单阶段检测思想
  4. 骨干特征提取
  5. 锚框设计
  6. 损失与训练
  7. 后处理NMS
  8. 速度精度权衡
  9. YOLO演进路线
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示YOLO网格检测、速度精度Pareto权衡及Anchor框匹配,切换模式理解实时检测核心原理。

本节配有交互动效(进入视口后自动加载,约 3KB)。

YOLO网格检测 7x7网格分割图像 边界框+置信度 P(obj)*IoU 每个网格单元预测边界框坐标和类别概率

检测任务基础

分拣中心的新工人小明开始培训了。师傅告诉他:“你每天的工作就两件事——看清楚传送带上的包裹是什么,然后准确地把它拿下来。”目标检测任务一模一样:给定一张图像,算法要回答两个问题——图像中有什么物体(类别),以及物体在哪里(位置)。“在哪里”不能只回答一个模糊范围,计算机需要精确的数值描述,这就是边界框(Bounding Box)的由来。

边界框是目标检测中最基础的概念。你可以把它想象成在包裹照片上画一个最小的矩形,把这个包裹严丝合缝地框住。机器只需要记住四个数字就能完全确定这个矩形:中心点的横坐标、纵坐标、矩形的宽、矩形的高。

这四个数字合起来,就等于给每个包裹贴了一张“定位标签”。小明只需要喊出这四个数字,师傅就知道包裹在哪、有多大。检测算法的第一步,就是学会输出这四张“标签”。

B=(x,y,w,h)\displaystyle B = (x, y, w, h)
这句公式是在说:一个物体的位置和大小,可以用中心点坐标加宽高四个数字完整描述。
  1. 中心横坐标 x目标中心在图像中的水平位置,通常归一化到 0~1 之间,1 代表图像最右侧。
    x∈[0,1]x \in [0, 1]
  2. 中心纵坐标 y目标中心在图像中的垂直位置,1 代表图像最下侧。
    y∈[0,1]y \in [0, 1]
  3. 宽度 w边界框的宽度,表示目标在水平方向占据的范围。
    w>0w > 0
  4. 高度 h边界框的高度,表示目标在垂直方向占据的范围。
    h>0h > 0

单阶段检测思想

传统分拣中心效率低是有原因的:传送带旁的摄像头先给每个包裹拍一张照片,照片送到分析室,分析室里的专家仔细看完、写好报告,再传回给分拣员执行。这套“先拍照、后分析、再行动”的流程就是我们说的两阶段检测(如 Faster R-CNN)。它的优点是看得仔细,缺点是太慢,传送带稍微快点就跟不上。

YOLO 的设计者琢磨出一个截然不同的思路:与其让专家事后分析,不如让分拣员自己在传送带边上看一眼就做决定。具体怎么做呢?把整张图像划分成一张网格,就像在传送带上画上格子线。每个格子负责“照看”中心落在自己区域内的目标,一次性同时预测出目标框和类别,不需要任何第二阶段的复查。这就是“单阶段”的含义——一个网络、一次前向传播、直接输出最终结果。

回想传送带旁喊话的老师傅:他不需要等分析报告,眼睛扫到包裹的同时嘴里已经喊出“左边那个,盒子!”。单阶段检测就是这样,把“看”和“说”合二为一,速度自然就上来了。

输出张量=S×S×(B×5+C)\displaystyle \text{输出张量} = S \times S \times (B \times 5 + C)
这个公式描述的是:把图像切成 S 行 S 列网格后,每个格子会输出 B 个候选框的信息(每个框 5 个值)以及 C 个类别概率。
  1. 网格数 S×S图像被均匀切成 S 行 S 列,共有 S² 个格子,每个格子负责其中心区域内的目标。
    S2S^2
  2. 每个格子的候选框数 B每个格子预测量 B 个边界框,通常取 2~3 个。
    BB
  3. 每个框的 5 个预测值中心坐标 x、y,宽 w、高 h,外加一个置信度分数。
    B×5B \times 5
  4. 类别概率数 C每个格子还要输出 C 个值,表示目标属于每个类别的概率。
    CC

骨干特征提取

小明的眼睛一开始没那么毒,看哪个包裹都差不多。师傅告诉他:“别把每个像素都死记硬背,要学会抓特征——看棱角、看颜色区块、看纹理走向。”这就像卷积神经网络(CNN)的骨干网络:浅层卷积负责提取边缘、颜色等低级特征,深层卷积逐渐组合出“有轮子”“有窗户”等高级语义特征。

但是,只看一个像素点是不可能判断出“这是盒子”的。神经网络里的每个神经元其实只能“看到”输入图像上的一个局部区域,这个区域的大小就叫感受野(Receptive Field)。感受野越大,神经元掌握的信息越多,判断就越有把握;感受野太小,看什么都像盲人摸象。卷积层堆叠得越深,感受野就越大,这也解释了为什么骨干网络通常需要相当多的层数。

老师傅的眼光也是这样一层层练出来的:先看局部细节,再学会组合成整体判断。骨干网络就是分拣员的“视力训练系统”,层数越深、设计越好,分拣员的眼光就越毒辣。

RF=RFprev+(k−1)×s\displaystyle RF = RF_{\text{prev}} + (k - 1) \times s
这个公式告诉你:每经过一层卷积,神经元能看到的输入范围会按照卷积核大小和步长规律性地扩大。
  1. 上一层感受野 RF_prev当前层之前,特征点已经能看到的输入区域大小。
    RFprevRF_{\text{prev}}
  2. 卷积核尺寸 k当前卷积核的边长,例如 3×3 卷积则 k=3。
    kk
  3. 卷积步长 s卷积核每次滑动的像素距离,步长越大感受野增长越快。
    ss
  4. 累加关系新的感受野等于旧的感受野加上卷积核带来的增量。
    (k−1)×s(k - 1) \times s

锚框设计

分拣台上摆着一排不同规格的预置筐:大件筐、小件筐、长条筐、正方筐。包裹来了,看看哪个筐最合身,就往哪个筐里放,再稍微调整一下位置。锚框(Anchor)就是给模型准备的这些“预置筐”——一组预设好的参考边界框,覆盖不同的尺寸和长宽比。

模型并不直接预测目标的绝对坐标,而是预测“目标相对于某个锚框的偏移量”。这大大降低了学习难度,就像你不用凭空说出包裹的准确尺寸,只需要说“比这个大件筐稍微窄一点、短一点”就行。训练时,如何判断哪个锚框负责哪个目标呢?靠 IoU——两个框重叠程度的度量。IoU(Intersection over Union)计算预测框与真实标注框的交集面积除以并集面积,数值越接近 1,说明两个框越吻合。

训练时,IoU 大于某个阈值(通常 0.5)的锚框被判定为“正样本”,负责学习预测这个目标;IoU 过低的则作为“负样本”,学习输出“这里没有目标”。就像分拣台上的筐子,备得全,才能什么包裹都接得住;但筐子太多,也会让分拣员手忙脚乱。

IoU=SoverlapSA+SB−Soverlap\displaystyle \text{IoU} = \frac{S_{\text{overlap}}}{S_A + S_B - S_{\text{overlap}}}
这句公式是衡量“两个框有多像”的尺子:重叠面积占两框总覆盖面积的比例越高,说明框得越准。
  1. 重叠面积 S_overlap两个边界框相交区域的面积,完全重合时等于框本身的面积。
    SoverlapS_{\text{overlap}}
  2. 并集面积两个框各自面积之和减去重叠面积,代表两框总共覆盖的区域。
    SA+SB−SoverlapS_A + S_B - S_{\text{overlap}}
  3. 比值范围IoU 在 0 到 1 之间,0 表示完全不相交,1 表示完全重合。
    IoU∈[0,1]\text{IoU} \in [0, 1]

损失与训练

分拣培训是要交“学费”的。师傅在每张考核表上记下三种错误:包裹框歪了——定位错了,罚款;把文件袋认成盒子——类别错了,罚款;面前有包裹却视而不见——漏检了,重罚。训练的损失函数,就是这张数字化了的“罚款单”。

YOLO 的损失函数由三部分组成:定位损失(衡量边界框位置偏差)、分类损失(衡量类别预测错误)、置信度损失(衡量“框内有没有目标”判断错误)。但三类错误不能同等对待,因为一张图中大部分区域是背景,模型很容易学成“什么也不检测”的偷懒鬼。所以需要给定位损失加一个较大的权重系数,让模型把注意力集中在把框摆正这件事上。

罚款单的设计决定了分拣员会长成什么样子:如果漏检罚款太低,他就爱偷懒;如果框偏了罚款太低,他就马马虎虎。训练过程就是反复用这些“罚款”修正模型参数,最终让它在三类错误之间找到最佳平衡。

L=λcoordLloc+Lcls+Lobj\displaystyle L = \lambda_{\text{coord}} L_{\text{loc}} + L_{\text{cls}} + L_{\text{obj}}
这表示总损失等于三笔“罚款”的加权求和,其中定位损失通常乘以一个大于 1 的系数来强调它的重要性。
  1. 定位损失 L_loc预测框与真实框之间的位置偏差,通常用坐标差的平方来衡量。
    LlocL_{\text{loc}}
  2. 分类损失 L_cls预测类别与真实类别的差异,用交叉熵等度量。
    LclsL_{\text{cls}}
  3. 置信度损失 L_obj对框内是否有目标的二分类误差,负责抑制背景误检。
    LobjL_{\text{obj}}
  4. 平衡系数 λ_coord通常设为 5,放大定位错误的惩罚,防止模型只顾着学背景。
    λcoord=5\lambda_{\text{coord}} = 5

后处理NMS

检测模型运行的时候,会出现一个有趣的现象:三个分拣员同时看好同一个包裹,都伸手去抓,谁都不让谁。在模型看来,这就是一个目标被多个锚框同时命中,输出了好几个高度重叠的候选框。总不能把五个框都交出去吧?必须有个协调机制,这就是非极大抑制(Non-Maximum Suppression,NMS)。

NMS 的规则很朴素:先让所有分拣员按“自信程度”(置信度)排队,最自信的那个先出手,拿到包裹;其他人和他“撞车”程度(IoU)超过一定阈值的话,就自觉放手。重复这个过程,直到每个包裹都只有一个分拣员负责。这里的碰撞阈值就是 IoU 阈值:设得太小,重叠的框会被误杀;设得太大,重复框会浑水摸鱼。

这套“让最自信的人先上,其他人让路”的规则,保证了每个包裹最终都只有一个干干净净的结果框。NMS 看似简单,却是检测结果从“一堆候选框”变成“清晰结论”的关键一步。

若 IoU(M,bi)>Nt,则抑制候选框 bi\displaystyle \text{若 } \text{IoU}(M, b_i) > N_t \text{,则抑制候选框 } b_i
这条规则说的是:当某个候选框与当前最优框 M 的重叠程度超过阈值时,就认为它在重复检测同一目标,直接丢弃。
  1. 最优框 M当前置信度得分最高的候选框,是 NMS 的基准。
    MM
  2. 待检查候选框 b_i候选集合中尚未处理的某一个框。
    bib_i
  3. 阈值 N_t预设的 IoU 阈值,工程中常取 0.4~0.5。
    NtN_t
  4. 抑制操作条件成立时从候选集合中删除该框。
    删除 bi\text{删除 } b_i

速度精度权衡

分拣中心的经理面临一个永恒难题:传送带调多快?调快了,老师傅看漏包裹,准确率下降;调慢了,准确率是高了,但包裹在入口堆积如山。实时检测系统同样面临这个选择:代表速度的 FPS(每秒处理帧数)和代表精度的 mAP(mean Average Precision,平均精度均值)。

FPS 很好理解,就是每秒钟能处理多少张图像,30 FPS 以上通常被视为“实时”。mAP 则是综合衡量检测精度的指标:先对每个类别单独计算 AP(该类别在所有置信度阈值下的平均精度),再对所有类别求平均。一个模型的 mAP 越高,说明它在各种情况下检得又准又全。而模型缩放(调整网络深度、宽度和输入分辨率)就是那个“传送带调速旋钮”——牺牲一点精度可以换来速度的大幅提升。

回到分拣中心:快递高峰期(交通场景复杂)可以把传送带调慢一点换取准确率,平峰期则拉满速度。工程上没有绝对最好的模型,只有最适合当前产线档位的模型——理解 FPS 和 mAP 的此消彼长,是每个检测工程师的必修课。

mAP=1C∑c=1CAPc\displaystyle \text{mAP} = \frac{1}{C} \sum_{c=1}^{C} \text{AP}_c
这个公式很好理解:把每个类别的检测精度加起来除以类别总数,得到一个反映整体精度的综合分数。
  1. 类别总数 C数据集中需要检测的物体类别数量。
    CC
  2. 单类别精度 AP_c第 c 个类别的精度-召回率曲线下面积。
    APc\text{AP}_c
  3. 取平均所有类别各算一遍再求平均,避免某个类特别强就掩盖其他类拉胯。
    1C∑c=1C\frac{1}{C} \sum_{c=1}^{C}

YOLO演进路线

YOLO 家族就像分拣中心的系统升级史。第一代(YOLOv1)是刚上岗的毛头小子:把图像分个网格式,每个格子直接回归出边界框,想法大胆但精度粗糙,小目标经常漏检;第二代(YOLOv2)学会了用“预置筐”(锚框)和批量归一化,定位更稳了;第三代(YOLOv3)引入了特征金字塔,在多个尺度上同时预测,大件小件一网打尽;到了第五代(YOLOv5),系统已经能根据产线需求自动缩放档位,成了工程落地的首选。

以 YOLOv3 的边界框解码公式为例,它展示了“锚框 + 偏移量”这套机制的精妙之处:网络不直接输出绝对坐标,而是输出相对锚框的调整量,再用一个巧妙的方式把调整量变成最终的框。

分拣系统每一代升级都是一次“看得更全、框得更准、跑得更快”的迭代。YOLO 系列的成功告诉我们:工程上的伟大创新,往往不是发明全新理论,而是把已有的零件(网格、锚框、特征金字塔)组合成一套高效运转的系统——就像分拣中心不断优化流程,最终练就了“一眼扫描”的绝活。

bx=σ(tx)+cx,bw=pwetw\displaystyle b_x = \sigma(t_x) + c_x, \quad b_w = p_w e^{t_w}
这个公式是在说:最终框的中心位置 = 网格坐标 + 网络预测的偏移量;最终框的宽度 = 锚框宽度 × 指数缩放系数。
  1. 预测偏移量 t_x网络输出的原始数值,经过 sigmoid 函数压缩到 0~1 之间,代表相对网格左边界的偏移比例。
    σ(tx)\sigma(t_x)
  2. 网格坐标 c_x目标中心所在网格单元的左上角横坐标,起到基准定位作用。
    cxc_x
  3. 锚框宽度 p_w预先设定的参考宽度,模型只需学一个缩放倍数。
    pwp_w
  4. 指数缩放 e^t保证缩放系数永远为正,且允许框宽超过锚框本身。
    etwe^{t_w}

AI 应用场景

视频监控与安防预警

阶段:模型推理与部署

解决的问题:传统安防靠保安盯多路监控屏幕,人眼连续工作 20 分钟后注意力急剧下降,漏报率极高。采用实时目标检测后,算法对每路视频流以 25~30 FPS 的速度持续扫描,一旦检测到行人闯入、异常停留等目标,立即触发告警。

具体案例:某园区部署了基于 YOLOv5 的周界安防系统,在 16 路摄像头上实时检测行人、车辆和越界行为。系统对 1080p 视频帧的检测延迟控制在 40ms 以内,夜间配合红外补光依然保持 90% 以上的检出率,误报率从人工值守的每天 20 多次降到每周 3 次。

自动驾驶感知系统

阶段:模型选型与优化

解决的问题:自动驾驶车辆需要在高速行驶中实时识别前方车辆、行人、交通标志,每延迟 100ms 就多几米刹车距离。两阶段检测精度虽高但速度不足,单阶段实时检测器成为车载感知的主流选择,在速度与精度之间取得关键平衡。

具体案例:某自动驾驶公司的感知模块采用 YOLOv3 作为前置检测器,在嵌入式车载芯片上以 35 FPS 运行,同时检测车辆、行人、骑行者三类目标。通过模型缩放(裁剪通道、降低输入分辨率到 416×416),在保证车辆召回率的前提下,将单帧推理时间压缩到 28ms,为后续规划控制留出充足余量。

工业质检与缺陷检测

阶段:数据标注与模型微调

解决的问题:生产线上产品流转速度极快,传统机器视觉只能做固定规则的检测,遇到划痕、色差等形态多变的缺陷就无能为力。实时目标检测器能够快速定位缺陷区域并分类,且支持在边缘设备上低延迟运行。

具体案例:某电子元器件工厂在流水线相机后接入 YOLOv5 检测模型,以 60 FPS 的速度实时检测电路板上的焊点缺陷、元件缺失和引脚偏移。通过采集 5000 张缺陷样本进行微调,模型在产线上达到 97.2% 的召回率,漏检的缺陷板被下游人工复核兜住,整体质检效率提升了 3 倍。

Python 演示

python40 行
import numpy as np def compute_iou(box1, box2):    x1 = max(box1[0], box2[0])    y1 = max(box1[1], box2[1])    x2 = min(box1[2], box2[2])    y2 = min(box1[3], box2[3])    inter = max(0, x2 - x1) * max(0, y2 - y1)    area1 = (box1[2] - box1[0]) * (box1[3] - box1[1])    area2 = (box2[2] - box2[0]) * (box2[3] - box2[1])    union = area1 + area2 - inter    if union == 0:        return 0    return inter / union def nms(boxes, scores, iou_threshold=0.5):    order = np.argsort(scores)[::-1]    keep = []    while order.size > 0:        i = order[0]        keep.append(i)        rest = order[1:]        if rest.size == 0:            break        ious = np.array([compute_iou(boxes[i], boxes[j]) for j in rest])        order = rest[ious <= iou_threshold]    return keep if __name__ == "__main__":    boxes = np.array([        [10, 10, 60, 60],        [12, 12, 62, 62],        [100, 100, 150, 150],        [105, 102, 155, 148]    ], dtype=float)    scores = np.array([0.92, 0.80, 0.75, 0.60])    selected = nms(boxes, scores, 0.5)    print("NMS 保留的索引:", selected)    for i in selected:        print("框", i, boxes[i], "置信度", scores[i])
目的:实现了目标检测后处理中最重要的两个工具——IoU 计算与 NMS 非极大抑制,直观演示多个重叠候选框如何被合并为最终检测结果。
  1. inter = max(0, x2 - x1) * max(0, y2 - y1)计算交集面积的核心技巧:不相交时面积为 0
  2. order = np.argsort(scores)[::-1]对所有候选框按置信度从高到低排序
  3. keep.append(i)当前置信度最高的框直接保留,它是“最自信的分拣员”
  4. order = rest[ious <= iou_threshold]只保留与当前框重叠程度不超过阈值的候选框,继续参与竞争

常见误区

误区很多人觉得 YOLO 就是把 Faster R-CNN 的代码优化一下、用 GPU 加速,所以速度快。那我换个好显卡,两阶段模型也能实时。

正解单阶段和两阶段的本质区别是设计思路,不是运行环境。两阶段模型先提取候选区域再逐区域分类,管线决定了它有两次独立的计算;单阶段模型用一次前向传播同时输出所有信息。就像“先拍照送分析室”和“现场喊话”是两种工作流程,换再快的跑步机也改变不了流程本身的步骤数。

为何常见:大家习惯用“速度慢但精度高”来理解两阶段,容易误以为慢只是工程优化不足,忽略了结构性的设计差异。

误区选模型时只看 FPS 指标,觉得每秒能跑 60 帧的模型一定比 30 帧的强,反正速度快就是性能好。

正解FPS 只衡量速度,不衡量检测质量。一个模型可能因为输入分辨率低、网络层数少而跑得快,但对小目标几乎检不出来。正确做法是同时看 FPS 和 mAP:在满足实时性要求(比如 ≥30 FPS)的前提下,选 mAP 最高的模型,就像挑选分拣员要看速度和准确率两张考核表。

为何常见:“快”是最直观的体感指标,而 mAP 需要跑评测集才能算出来,人脑天然偏好容易感知的数值。

误区既然锚框是给模型准备的参考筐,那多准备几种尺寸、多放几个锚框,各种目标总能被覆盖到,精度应该更高。

正解锚框越多,正负样本越失衡。绝大多数锚框落在背景区域,会被标记为负样本,模型花大量精力学习“这里没有目标”,反而冲淡了真正需要学习的正样本信号。合理的锚框设计是在覆盖目标尺度分布的前提下尽量减少数量,YOLOv2 之后通过聚类统计训练集中的目标尺寸来设计锚框,就是出于这个考虑。

为何常见:“多多益善”是日常经验,但在机器学习中,冗余的负样本会扭曲训练目标,这是反直觉的地方。

误区NMS 会把重叠框删除,那我把 IoU 阈值调大,删除的条件更苛刻,保留的框就更多,漏检不就少了吗?

正解阈值设得太大,同一个物体会输出多个高度重叠的框,检测结果里出现大量重复框;设得太小,两个挨得近的目标(比如并肩的行人)会被当成一个。合适的阈值(通常 0.4~0.5)需要在“重复框”和“误合并”之间取平衡,和分拣协调规则一样,太宽松或太严格都会乱套。

为何常见:直觉上“保留更多结果 = 更保险”,但忘了后处理的目标是精简结果,而不是保留所有可能性。

误区图像细节越多,小目标越清楚,那把输入分辨率从 416×416 提高到 1280×1280,精度一定全面提升。

正解分辨率提升确实对小目标有帮助,但代价是计算量大幅增加、FPS 断崖式下跌。而且过高的分辨率会让模型看到过多的背景噪声,某些场景下精度反而下降。实际工程中常用“测试时缩放”策略:训练用低分辨率保证批大小,推理时按需调高并配合模型缩放,而不是无脑拉大分辨率。

为何常见:“看得越清楚就看得越准”符合直觉,但忽略了模型训练与推理的分辨率一致性,以及算力资源的现实约束。

面试题

Q1. 实时目标检测中,“单阶段”指的是什么?

单选题 · easy

  • A.网络只输入一张图片数据
  • B.一步同时输出位置与类别← 正确答案
  • C.模型只训练一个训练周期
  • D.每次只检测一个目标物体

答案:B。单阶段检测指不经过候选区域提取,直接用一次前向传播同时完成目标定位和分类,就像分拣员现场喊话一步到位。A 描述的是输入格式,C 是训练周期,D 是检测数量,都与“阶段”的含义无关。

Q2. 两个边界框完全重合时,IoU 的数值是多少?

单选题 · mid

  • A.-1.0
  • B.0.0
  • C.1.0← 正确答案
  • D.0.5

答案:C。IoU 是交集面积除以并集面积。两个框完全重合时,交集等于并集,比值为 1.0。0 表示完全不相交,0.5 只是常见的正样本判定阈值而不是重合值,-1.0 不在 IoU 的定义域内,因为面积不可能为负。

Q3. 以下哪项是 YOLO 相对于两阶段检测的劣势?

单选题 · hard

  • A.模型推理速度相对较慢
  • B.能够利用更大感受野信息
  • C.小目标检测精度相对更弱← 正确答案
  • D.训练过程无法端到端完成

答案:C。YOLO 用网格直接回归,每个格子负责固定区域的目标,密集排列的小目标很容易挤在同一个网格里,导致漏检。两阶段检测先提候选区域再做精细分类,对小目标更友好。A 与事实相反,B 是 YOLO 的优势,D 不正确,YOLO 正是端到端训练的。

Q4. 标准的 NMS 后处理流程包含哪些操作步骤?

多选题 · mid

  • A.按置信度从高到低排序← 正确答案
  • B.将低置信度候选框剔除← 正确答案
  • C.抑制与最优框高重叠的框← 正确答案
  • D.修改网络权重继续反向传播

答案:ABC。NMS 首先按置信度降序排列候选框,低于置信度阈值的框直接过滤,然后从最高分框开始,抑制与之 IoU 超过阈值的重叠框,迭代处理全部候选。D 是训练阶段的操作,推理时不再更新权重。

Q5. 卷积神经网络中,感受野描述的是什么?

单选题 · easy

  • A.模型参数量的具体多少
  • B.神经元看到的输入范围← 正确答案
  • C.训练数据量的具体多少
  • D.检测框占图片的面积比

答案:B。感受野是指特征图上的一个神经元对应到输入图像上的区域大小,区域越大,神经元掌握的信息越丰富。参数量是模型规模指标,训练数据量是数据规模指标,检测框占比是目标大小指标,都与感受野无关。

Q6. YOLOv3 相对于 YOLOv1 的主要改进包括哪些?

多选题 · hard

  • A.采用多尺度特征图进行预测← 正确答案
  • B.引入特征金字塔网络结构← 正确答案
  • C.使用锚框机制细化定位结果← 正确答案
  • D.彻底移除卷积网络骨干结构

答案:ABC。YOLOv3 在三个不同尺度的特征图上分别预测,形成特征金字塔,对小目标更友好;同时继承并细化了锚框机制。D 说法错误,卷积骨干网络是所有 YOLO 版本的基础,从未被移除。

Q7. 检测模型输出的置信度分数主要表示什么含义?

单选题 · mid

  • A.框内含目标的概率高低← 正确答案
  • B.图像整体色调的明亮程度
  • C.图中目标类别的数量多少
  • D.候选边界框的面积大小

答案:A。置信度分数反映“这个框内确实有目标”以及“框得准不准”的综合信心,数值越高代表模型越有把握。B 是图像底层属性,C 是数据集属性,D 是框的几何属性,都不是置信度考察的内容。

Q8. 目标检测指标 mAP 中的 AP 具体指的是什么?

单选题 · easy

  • A.单类别检测的平均精度← 正确答案
  • B.全部模型参数的数值均值
  • C.检测框重叠面积的数值比
  • D.每秒处理图像的帧数指标

答案:A。AP(Average Precision)是单个类别在精度-召回率曲线下的面积,反映该类别的综合检测质量。mAP 则是所有类别 AP 的平均值。B 是参数量统计,C 是 IoU,D 是 FPS,都与 AP 定义无关。

Q9. 解决检测训练中正负样本不平衡的常用手段有哪些?

多选题 · hard

  • A.调整损失函数的加权系数← 正确答案
  • B.控制正负样本的采样比例← 正确答案
  • C.忽略背景区域的部分损失← 正确答案
  • D.直接删减神经网络的层层数

答案:ABC。正负样本不平衡指背景框远多于目标框,常用对策包括:给定位损失加权重系数(如 λ_coord=5)、在线难例挖掘控制正负样本比例、设置 ignore 区域忽略部分背景损失。D 是改变网络结构,与样本平衡无关。

Q10. 想提升实时目标检测的推理速度,以下哪种做法合理?

单选题 · mid

  • A.加深加宽整体网络结构
  • B.对模型进行缩放和剪枝← 正确答案
  • C.无限扩大输入图像尺寸
  • D.把 NMS 阈值调成最大值

答案:B。模型缩放(减少通道、降低深度、缩小输入分辨率)和剪枝是提速的常用手段,相当于给分拣系统调高传送带档位。A 和 C 增加计算量反而变慢,D 调大 NMS 阈值不会改善速度,还会引入重复框。