想象你是演唱会安保总指挥,今晚有三万观众涌进体育场,系统需要在几秒内锁定每一张人脸。你面前摆着三套方案:第一套是“三层安检岗”,年轻、便宜、反应快,但遇到远处看台上的小脸会漏看;第二套是“全能指挥中心”,一块巨幕上同时显示脸框、五官点位、头部姿态,火眼金睛,但设备昂贵、响应稍慢;第三套是“高速巡逻无人机”,盘旋全场、帧帧不落,速度飞快,细节却不如指挥中心细腻。这就是主流人脸检测三剑客的现实图景:MTCNN(三层安检岗)、RetinaFace(全能指挥中心)、YOLOv5-Face(高速巡逻无人机)。 没有哪套方案“绝对最强”,只有“在某个舞台最合适”。本文将带你走进这三款算法的设计思路、精度与速度表现,学会在不同业务场景下做聪明的选型。全程用一个演唱会安保的故事贯穿,让没有 AI 背景的你也能轻松建立直觉。
对人脸检测从业者而言,理解三款主流算法的架构与权衡,是落地人脸考勤、安防监控、金融认证等场景的必备技能。掌握选型逻辑,能直接帮公司节省算力成本、提升用户体验。
可视化演示
展示三大人脸检测算法对比:MTCNN级联、RetinaFace单阶段、YOLOv5-Face轻量化的精度与速度权衡,MTCNN三级级联架构流程,以及小脸检测与密集人脸场景处理效果。
本节配有交互动效(进入视口后自动加载,约 3KB)。
算法对比:精度与速度权衡 浅蓝为MTCNN(均衡) 绿色为RetinaFace(高精度) 红色为YOLOv5-Face(高速度) MTCNN: 85%/30fps | RetinaFace: 95%/15fps | YOLOv5: 91%/120fps 三款算法在精度和速度上各有优势,需根据场景选型
算法总览
站在演唱会指挥塔上向下望,三万观众像潮水一样涌入内场。你需要的不是一双肉眼的执着,而是一套能把“找出所有脸”变成自动化流程的系统。安保顾问递来三份方案:三层安检岗、全能指挥中心、高速巡逻无人机。它们解决同一个任务——视频里每一帧画面中,有没有人脸?脸在哪里?——但实现思路和资源消耗却截然不同。
在技术世界里,这个任务叫“人脸检测”:给定一张图像,输出所有人脸的位置框和置信度得分。MTCNN 代表“级联分类器”路线——用三个从小到大、由粗到精的网络串联;RetinaFace 代表“多任务单阶段”路线——一个网络同时输出框、关键点和 3D 信息;YOLOv5-Face 代表“单阶段回归”路线——把图像切成网格,每个格子直接预测目标。三条路线没有绝对优劣,而是各自占据精度-速度平面上的不同坐标。
无论哪条路线,检测器输出都可以形式化为一个标准公式:
回到指挥塔,三份方案书摊在桌上。安检岗成本低、部署快;指挥中心信息全、精度高;无人机覆盖广、速度猛。你开始意识到,“选哪个”不是单选题,而是接下来一整晚安保策略的方向盘。
- 输入图像把一帧画面看作一个像素矩阵,通常记作 I
- 边界框向量每个检测结果包含人脸的位置与大小
- 类别与置信度标签 y 表示是否为人脸,s 表示模型有多确信
- 阈值筛选置信度低于阈值 τ 的候选直接丢弃,只保留高置信结果
MTCNN级联架构
三层安检岗的运作逻辑是:第一层安检员拿手持扫描仪在人群中快速扫过,看到“疑似人脸”的轮廓就吹哨标记;第二层安检员跑过去重点核查标记区域,排除误报;第三层资深安检员在确认区域内精确画圈,并记录五个特征点(两眼、鼻尖、两个嘴角)的位置。这就是 MTCNN 的级联哲学——先粗后细,层层递进。
MTCNN 全称是“多任务级联卷积网络”,由 P-Net(Proposal,提议)、R-Net(Refine,精炼)、O-Net(Output,输出)三个小网络串联。P-Net 在输入图像的每个位置快速判断“这里像不像脸”,输出大量候选框;R-Net 对候选框逐一精细分类,去掉大多数误报;O-Net 做最终判定,同时回归五个关键点坐标。为了同时捕捉不同大小的脸,MTCNN 还会把图片缩放成多个版本——这就是“图像金字塔”,相当于让安检员拿出望远镜看远处看台,再回到近处看内场。
每个阶段的网络都有各自的损失函数,整体目标是最小化三类错误:
三层安检岗的妙处在于“把简单问题留给前面的快岗,把复杂问题放到后面的精岗”。P-Net 一天能扫十万人,R-Net 只检查被标记的几百人,O-Net 只需核实几十人。正是这种级联结构,让 MTCNN 在移动端、嵌入式设备上依然跑得飞快,成为老而弥坚的轻量级选手。
- 分类损失判断某区域是人脸还是非人脸,用交叉熵衡量置信错误
- 框回归损失预测的边界框与真实标注框之间的位置偏移误差
- 关键点损失五个人脸关键点的预测位置与真实标注的距离误差
- 加权求和λ1、λ2 控制不同类型误差的侧重,训练时按阶段调整
RetinaFace多任务
如果说 MTCNN 是三道安检门,RetinaFace 就是一间全能指挥中心。巨幕上不仅有人脸框,还有每个人的五官点位、头部转动角度甚至脸部 3D 网格——仿佛一个站在你面前的真人,你能看清他的每一个表情细节。RetinaFace 的核心思想是“一个网络,一次推理,输出所有信息”,不需要三级接力。
RetinaFace 属于单阶段检测器。它在图像的每个位置预设多个不同大小、不同长宽比的“锚点框”(Anchor),就像指挥中心在电子地图上铺满大小不一的搜索框。锚点框负责猜测“脸可能出现在这里,大概是这个尺寸”。接着网络同时执行四个任务:判断框里是不是人脸、微调框的位置、回归五个关键点、预测密集的像素级人脸解析结果(3D 脸部网格)。多任务共享同一个特征提取器,让脸部结构信息互相强化。
它的联合损失函数比 MTCNN 多了一项像素级约束:
全能指挥中心的信息冗余带来一个直接收益——在 WIDER FACE 这类困难基准上,RetinaFace 的精度长期霸榜。但它也像一台庞大的服务器机房:需要大算力、大显存、长推理时间。在演唱会安保室用没问题,但塞进手机里就有点吃力了。
- 分类与框回归与 MTCNN 类似,判断是否人脸并修正框位置
- 关键点回归回归五个面部关键点的精确坐标(两眼角、鼻尖、两嘴角)
- 像素级解析损失预测人脸每个像素的 3D 位置,与真实网格对齐
- 权重平衡λ 系数组决定各项任务的相对重要性
YOLOv5-Face单阶段
现在轮到高速巡逻无人机登场。它不设安检门,也不搞全能巨幕,而是把体育场上空划分成密密麻麻的网格——每一格都有一架“迷你侦察机”负责。你只需要告诉它:“你的人脸目标大概长什么样、多大尺寸”,它便每帧截图、逐格扫描、瞬时上报。这就是 YOLOv5-Face 的设计逻辑:把检测转化成一次“端到端的回归”,一步到位输出所有检测框。
YOLOv5-Face 源自 YOLOv5 目标检测框架,针对人脸做了三处改造:首先,重新聚类了人脸宽高比专用的锚点框(人脸通常更窄长,与通用物体的方形锚点差异大);其次,引入更适合人脸框回归的 CIoU 损失函数;最后,保留 YOLOv5 的 CSPDarknet 主干和特征金字塔结构,在多个尺度上同时检测。相比 MTCNN 的三级串联,它不需要候选再精炼的两步流程,所以显卡上的推理速度极快。
CIoU 损失是它框回归的关键,精确定义为:
巡逻无人机的短板也随之而来:它飞得快,但离得远的小目标(看台上后排观众的模糊人脸)容易从网格缝隙中溜走。在密集人群中,它需要配合更精细的后处理才能避免重复计数。无人机适合的是“广撒网、高吞吐”的露天场景,而不是需要深挖细节的 VIP 包厢。
- IoU 项预测框与真实框的交并比,重叠越少损失越大
- 中心距离惩罚预测框与真实框中心点欧氏距离的平方
- 归一化因子两框最小外接矩形的对角线长度平方,用于缩放距离损失
- 长宽比惩罚项衡量预测框与真实框宽高比的差异程度
- 平衡系数根据当前 IoU 动态调整,控制长宽比惩罚的力度
精度速度对比
三套安保方案摆在一起,你需要一份客观的“配置单”。这就好比买相机:单反画质绝佳但机身笨重,手机轻便随手拍但画质受光线制约,运动相机帧率高却牺牲部分色彩细节。精度与速度,从来是一对需要权衡的冤家。
衡量精度的权威标尺有两个:古老的 FDDB 基准和更难更现代的 WIDER FACE 基准。WIDER FACE 把测试数据分成 Easy、Medium、Hard 三个难度档,Hard 档几乎全是小脸和密集脸。综合来看,RetinaFace(ResNet50 主干)在 Easy 档能达到约 97% 的平均精度,YOLOv5-Face 大约 96%,MTCNN 大约 95%——差距看似不大,但在 Hard 档会明显拉开。速度上,模型体积与推理时延紧密挂钩:MTCNN 仅几 MB,手机上可跑到几十毫秒一帧;YOLOv5-Face 在 GPU 上能实现几十甚至上百 FPS;RetinaFace 在 GPU 上通常只有前者的三分之一到一半速度。
衡量速度的核心指标是 FPS(Frames Per Second,每秒处理帧数),它的计算非常直接:
同一算法在不同硬件上的表现可能天差地别:在桌面 GPU 上 YOLOv5-Face 如鱼得水,在单片机一样的嵌入式设备上,MTCNN 反而才是唯一能实时跑动的方案。看完这份“配置单”,你需要回到自己真实的舞台——服务器有几块卡?用户手机什么档位?现场光照是否杂乱?这些变量,比纸面数字更能决定今晚安保的成败。
- 前处理时延图像缩放、颜色通道调整、归一化等准备时间
- 模型推理时延神经网络前向传播的实际计算时间,占总耗时大头
- 后处理时延NMS 去重框、阈值筛选等收尾工作的时间
- 帧率计算总时延的倒数,代表一秒能处理多少帧
小脸密集场景
演唱会进行到高潮,看台最后一排的观众激动地挥舞荧光棒,他们的脸在镜头里只有指甲盖大小;与此同时,内场前排的观众挤成一团,人与人的脸几乎贴在一起。这两类极端场景——小脸检测和密集人脸——正是区分算法含金量的试金石。
小脸检测难在哪里?一张脸只有十几个像素高,卷积神经网络在逐层下采样后,脸部特征几乎被“磨碎”了。好比安检员用一副模糊的望远镜看百米外的人:五官轮廓完全糊成一团。最初级的解法是图像金字塔——把输入图像放大再检测,让原本的小脸在放大图上变大。MTCNN 就是这么干的,但代价是计算量成倍增长。更优雅的解法是特征金字塔(FPN):网络不同层天然捕捉不同尺度的特征,高层管大脸、低层管小脸,RetinaFace 和 YOLOv5-Face 都用这种方式同时兼顾多尺度。
密集人脸的核心矛盾则是“框打架”:三个人紧紧挨着,算法可能在一张脸上叠出五六个检测框。这时候需要 NMS(非极大值抑制)出马——它把重叠度高的框合并,只保留得分最高的那个。NMS 的基础是 IoU:
在实际的密集座位上,RetinaFace 还引入了改进的 DIOU NMS,不仅看重叠程度,还惩罚两个框中心距离过远的情况,进一步减少“把两个人脸误判为一个人”的错误。小脸的上下文融合也很关键——当一张小脸过于模糊,算法可以借助周围的行人肩膀、身体边缘等上下文信息来佐证“这里确实有张脸”。这就像安检员认不出脸,但看到“荧光棒+高举的手机”也能推断那是一个观众。
- 交集面积两个检测框重叠区域的面积大小
- 并集面积两个框覆盖的总面积(重叠部分只算一次)
- 重叠比例交集与并集的比值,越接近 1 说明两个框越重合
选型指南
演唱会必散场,决策必须在天亮前做出。回到指挥塔,你把三套方案和真实约束摆在一起:安保预算多少?监控摄像头接的是服务器还是手机端?要求人脸识别在 100 毫秒内出结果,还是可以容忍半秒?选型没有标准答案,只有“在约束条件下求最优解”的工程智慧。
三个典型场景给出直接建议。第一,移动端首选 MTCNN:手机 App 做人脸登录、美颜相机做五官定位,算力紧张、电池敏感,MTCNN 几 MB 的模型和快速的级联筛选是最优解。第二,金融级认证首选 RetinaFace:银行远程开户、支付活体检测要求极高的精度和关键点信息,宁可多等几百毫秒也要保证是“本人且是活人”。第三,视频流与闸机首选 YOLOv5-Face:地铁闸机、商场客流统计需要同时处理多路高清视频流,高 FPS 的 YOLOv5-Face 能保证不丢帧、不卡顿。如果场景介于两者之间,可以缩小 RetinaFace 的 backbone(如用 MobileNet 替换 ResNet),在精度与速度之间调出一个中间档。
把选型逻辑抽象成公式,就是给每个候选算法打一个加权分:
夜深了,三份方案书终于各就各位:安检岗守手机端、指挥中心守金库、无人机守闸机。它们不是竞争者,而是不同岗位上最合适的人选。下次你面对算法选型时,记得先问自己三个问题——部署在哪里?时延预算多少?精度下限是多少?答案出来,算法自然就位。
- 精度得分算法在目标数据集上的精度指标,越高越好
- 延迟成本算法端到端的单帧处理时延,越长越扣分
- 精度权重业务对精度的敏感程度,认证场景调大它
- 延迟权重业务对实时性的要求,闸机场景调大它
AI 应用场景
手机 App 人脸登录
阶段:端侧推理与轻量化部署
解决的问题:传统云叫人脸识别需要上传照片,既耗流量又担心隐私,且弱网环境下体验极差。MTCNN 作为前端人脸检测器,在手机本地快速定位人脸框并输出五官关键点,为后续裁剪对齐提供基础。
具体案例:一款银行手机 App 的刷脸登录功能,用 MTCNN 在端侧 30 毫秒内完成人脸检测与对齐,再送入小型人脸识别网络比对特征。用户在高铁上开飞行模式也能完成登录,全程照片不出手机。
银行远程开户身份核验
阶段:高精度检测与活体防伪
解决的问题:远程开户最大的风险是照片、视频翻拍攻击。RetinaFace 输出的关键点和 3D 人脸网格能让系统判断镜头前是否是立体真人,同时其高精度保证低误拒率。
具体案例:某银行视频柜员机使用 RetinaFace 检测人脸并提取 68 点关键点,结合随机眨眼、转头指令做活体校验,同时用 3D 网格特征识别人脸面具,开户审核通过率提升 15%,欺诈申请拦截率提升 40%。
地铁闸机客流监控
阶段:视频流实时分析与高并发处理
解决的问题:早高峰地铁闸机每秒同时通过多人,检测速度不足就会漏检、卡顿。YOLOv5-Face 的高 FPS 特性让它在多路视频流中游刃有余,配合 NMS 后处理还能正确处理密集排队的人脸。
具体案例:某城市地铁站在每个进站口部署边端设备,运行 YOLOv5-Face 对 8 路 1080P 视频流实时分析,平均检测时延 25 毫秒、单设备并发支撑 200 人/分钟通行,并同步联动刷卡闸机与异常人员告警。
Python 演示
"""人脸检测算法横评模拟器在合成数据集上对比 MTCNN / RetinaFace / YOLOv5-Face 的精度(Precision/Recall/F1)与速度(FPS)。"""import randomimport time def make_scene(num_faces, width=320, height=240): """生成一张包含 num_faces 张人脸的模拟图像,返回 ground-truth 框列表""" faces = [] for _ in range(num_faces): w = random.randint(24, 56) h = random.randint(24, 60) x = random.randint(0, width - w) y = random.randint(0, height - h) faces.append((x, y, w, h)) return faces def iou(box_a, box_b): """计算两个边界框的交并比 IoU""" ax, ay, aw, ah = box_a bx, by, bw, bh = box_b ix = max(0, min(ax + aw, bx + bw) - max(ax, bx)) iy = max(0, min(ay + ah, by + bh) - max(ay, by)) intersection = ix * iy union = aw * ah + bw * bh - intersection return intersection / union if union > 0 else 0.0 class BenchmarkDetector: """模拟检测器:用 latency_ms 模拟推理耗时,用 miss_rate 模拟漏检率""" def __init__(self, name, latency_ms, miss_rate): self.name = name self.latency_ms = latency_ms self.miss_rate = miss_rate def predict(self, ground_truth): """模拟一次推理,返回带噪声的预测框和耗时""" start = time.perf_counter() time.sleep(self.latency_ms / 1000.0) preds = [] for x, y, w, h in ground_truth: if random.random() < self.miss_rate: continue jitter = random.uniform(-4, 4) preds.append((x + jitter, y + jitter, w - jitter, h - jitter)) return preds, time.perf_counter() - start def evaluate(detector, scenes): """在场景集合上评估精度与速度""" tp = fp = fn = 0 total_time = 0.0 for faces in scenes: preds, elapsed = detector.predict(faces) total_time += elapsed matched = [False] * len(faces) for p in preds: best = 0 best_idx = -1 for i, f in enumerate(faces): if matched[i]: continue score = iou(p, f) if score > best: best = score best_idx = i if best >= 0.5 and best_idx >= 0: tp += 1 matched[best_idx] = True else: fp += 1 fn += sum(1 for m in matched if not m) precision = tp / (tp + fp) if tp + fp else 0.0 recall = tp / (tp + fn) if tp + fn else 0.0 f1 = 2 * precision * recall / (precision + recall) if precision + recall else 0.0 fps = len(scenes) / total_time return precision, recall, f1, fps def main(): random.seed(42) scenarios = { "日常场景(单人)": [make_scene(1) for _ in range(20)], "密集场景(10人)": [make_scene(10) for _ in range(20)], } detectors = [ BenchmarkDetector("MTCNN", latency_ms=12, miss_rate=0.10), BenchmarkDetector("RetinaFace", latency_ms=40, miss_rate=0.02), BenchmarkDetector("YOLOv5-Face", latency_ms=15, miss_rate=0.06), ] print("算法横评结果:") for name, scenes in scenarios.items(): print(f"\n{name}:") for d in detectors: prec, rec, f1, fps = evaluate(d, scenes) print(f" {d.name:12s} F1={f1:.2f} Precision={prec:.2f} " f"Recall={rec:.2f} FPS={fps:.1f}") if __name__ == "__main__": main()
def make_scene(num_faces, width=320, height=240):生成模拟图像中的人脸真实标注框,相当于“标准答案”。def iou(box_a, box_b):计算两个边界框的交并比,是 NMS 和精度评估的核心工具。class BenchmarkDetector:用延迟和漏检率两个参数模拟一个检测算法,便于公平对比。self.miss_rate控制算法漏检真实人脸的概率,模拟不同精度的算法。time.sleep(self.latency_ms / 1000.0)用睡眠时间模拟模型推理耗时,进而统计 FPS。matched = [False] * len(faces)记录每张真实人脸是否已被某个预测框匹配,避免重复计数。if best >= 0.5 and best_idx >= 0:当预测框与真实框的 IoU 超过 0.5,判断为正确检测(TP)。precision = tp / (tp + fp) if tp + fp else 0.0精确率:预测为人脸的框中有多少是真脸。recall = tp / (tp + fn) if tp + fn else 0.0召回率:真实人脸中有多少被找了出来。f1 = 2 * precision * recall / (precision + recall)F1 分数,综合衡量精确率与召回率的调和平均。fps = len(scenes) / total_time用总场景数除以总耗时得到每秒处理帧数,即 FPS。
常见误区
误区很多初学者觉得“RetinaFace 精度最高,那我就无脑选它”。理由是精度是算法的第一指标,慢一点没关系,反正服务器可以堆配置。
正解精度只是维度之一。在演唱会安保中,指挥中心再全能,如果无人机需要 200 毫秒才能回传一帧,高速奔跑的目标早已消失在画面里。移动端 App 更极端:MTCNN 几十毫秒完成检测,RetinaFace 可能让手机发热卡顿。选型的本质是在精度、速度、算力、功耗之间找平衡点,而不是单点最高分。
为何常见:因为学术界论文都惯用“精度榜”排名,初学者容易把排行榜当作唯一标准,忽略了工业落地的多约束现实。
误区有些人一看 MTCNN 是 2016 年的论文,就断定它是“老古董”,新项目应该一律采用最新算法。
正解算法没有新旧,只有合不合适。MTCNN 的级联架构在移动端和嵌入式设备上至今仍有不可替代的优势:模型小、无需 GPU、延迟低。今天大量手机 App 的人脸检测前置模块跑的就是 MTCNN。就像三层安检岗虽然简单,但在小型场馆里比全能指挥中心更省钱、更实用。
为何常见:AI 领域迭代快,大家容易“追新弃旧”。但工程部署看的是性价比,不是论文发表时间。
误区认为小脸检测困难就把整张图放大几倍再送进模型,觉得这样小脸就变大了,检测自然更准。
正解图像金字塔确实是 MTCNN 的做法,但全图放大意味着计算量成倍增长,甚至可能超出设备内存。更聪明的做法是特征金字塔:网络浅层保留高分辨率细节、深层提炼语义,多层特征并行检测不同尺度的脸。这相当于给安检员配一台“全景+局部”联动监控系统,而不是让他把整个广场的监控录像都慢放三倍。
为何常见:直觉上“目标小就放大来看”非常自然,人们容易忽略计算代价,也没意识到特征金字塔这种更优雅的工程解法。
误区初学者通常把 NMS 当成“后处理小工具”——模型输出什么就是什么,NMS 顶多去去重,不影响检测能力。
正解在密集人脸场景中,NMS 几乎决定了最终检测质量。一群人脸紧挨着时,标准 NMS 可能误删相邻的真实人脸,而改进的 DIOU NMS 能更好区分不同人脸的框。可以理解为指挥中心的“信息合并机制”:多台摄像机照到同一人,合并成一条告警;但若合并策略太激进,两台摄像机照到两个紧挨的人,也可能被错误合并成一个人。
为何常见:因为离线评估时 NMS 看起来只影响“框的数量”,初学者容易忽视它对密集场景指标的巨大影响。
面试题
Q1. MTCNN 的三级级联结构按顺序是?
- A.O-Net 再到 R-Net 再到 P-Net
- B.P-Net 再到 R-Net 再到 O-Net← 正确答案
- C.R-Net 再到 O-Net 再到 P-Net
- D.P-Net 再到 O-Net 再到 R-Net
答案:B。MTCNN 遵循“由粗到精”的级联思想,P-Net(Proposal)先生成大量候选框,R-Net(Refine)负责精筛,O-Net(Output)输出最终结果和关键点。这就像三层安检岗:手持扫描仪初筛、安检员复核、资深专家确认。
Q2. 在三款人脸检测算法中,通常综合精度最高的是?
- A.MTCNN 单阶段精度最高
- B.YOLOv5-Face 精度最高
- C.RetinaFace 精度最高← 正确答案
- D.三种算法精度水平相当
答案:C。RetinaFace 通过多任务联合训练(分类、框回归、关键点、3D 网格),在 WIDER FACE 等基准上通常取得最高精度。MTCNN 轻量但受限于级联简单结构,YOLOv5-Face 在精度与速度间做平衡。
Q3. RetinaFace 相比 MTCNN 增加的核心能力是?
- A.图像金字塔多尺度输入
- B.像素级人脸解析和 3D 信息← 正确答案
- C.三级级联筛选候选框
- D.使用滑动窗口扫描图像
答案:B。MTCNN 和 RetinaFace 都用多尺度输入和多任务输出,但 RetinaFace 的差异化在于增加了像素级的 3D 人脸网格回归。这相当于指挥中心多了一块显示脸部 3D 模型的副屏,而 MTCNN 的安检岗只记录五官点位。
Q4. 小脸检测困难的根本原因是?
- A.小脸通常像素信息少导致特征弱← 正确答案
- B.小脸颜色浅与背景容易混淆
- C.小脸的表情变化幅度比较大
- D.小脸的位置偏向图像边缘附近
答案:A。检测依赖卷积特征,而小脸仅占十几个像素,经过多层下采样后特征几乎被“磨没”。颜色、表情、位置都是次要因素。就像百米外看一张脸,五官糊成一团,核心问题是分辨率不足。
Q5. 提升小脸检测效果的常用手段有哪些?
- A.图像金字塔放大输入← 正确答案
- B.特征金字塔融合多尺度← 正确答案
- C.将输入图片缩小后再推理
- D.增大分类置信度阈值
答案:AB。图像金字塔让原始小脸在放大图上变大,特征金字塔让浅层高分辨率特征直接参与检测。缩小输入会让小脸更小,抬高阈值只影响误报率,都不能从根本上提升小脸召回。
Q6. NMS(非极大值抑制)在检测流程中的作用是?
- A.增加输出的检测框总数
- B.合并重叠框去除重复检测← 正确答案
- C.显著提升模型的推理速度
- D.专门提升对小人脸的召回
答案:B。一张脸往往被算法输出多个重叠框,NMS 根据 IoU 判定哪些框指向同一目标,只保留得分最高的框。它不改变推理计算量,只对结果做“去重合并”,是密集场景的必需品。
Q7. FPS 指标衡量的是?
- A.检测精度的衡量指标
- B.每秒处理帧数的衡量指标← 正确答案
- C.模型参数量的衡量指标
- D.训练耗时的衡量指标
答案:B。FPS 是 Frames Per Second 的缩写,直接反映算法每秒能处理多少张图。它由端到端时延(前处理+推理+后处理)决定,是实时场景选型的核心指标。
Q8. 关于三款算法的定位,下列说法正确的?
- A.MTCNN 轻量级适合移动端部署← 正确答案
- B.RetinaFace 多任务精度最高← 正确答案
- C.YOLOv5-Face 完全无法检测小脸
- D.算法精度越高推理速度越快
答案:AB。MTCNN 模型小、延迟低,是移动端经典选择;RetinaFace 多任务联合训练带来最高精度。YOLOv5-Face 通过特征金字塔也能检测小脸,只是强度不如 RetinaFace;精度提升往往以计算量增加为代价,速度并不更快。
Q9. 图像金字塔策略的主要代价是?
- A.模型体积变大难以部署
- B.多次缩放推理计算量倍增← 正确答案
- C.检测精度显著下降
- D.模型完全不需要训练
答案:B。图像金字塔要对同一张图做多尺度缩放并分别推理,相当于一次检测跑好几个尺度,计算量成倍增加。这也是特征金字塔后来兴起的原因——它用网络自身的多层特征替代物理上的多次缩放。
Q10. 在演唱会安保场景中做算法选型,正确的思考是?
- A.移动端实时检测优先选 MTCNN← 正确答案
- B.安防视频流高并发可选 YOLOv5-Face← 正确答案
- C.高精度活体认证选 RetinaFace← 正确答案
- D.直接选择精度最高算法即可
答案:ABC。选型的本质是匹配场景约束:移动端算力有限选最轻的 MTCNN,视频流要高吞吐选最快的 YOLOv5-Face,需要活体防伪和关键点信息选最全的 RetinaFace。无视设备、时延、业务需求,只按精度榜选算法,是工程上的大忌。