本节摘要:原理讲完,回到现实:市面上能直接搜到、能跑起来的主流入脸模型有哪些,各擅胜场还是各有软肋?本节把检测器(MTCNN、RetinaFace)与识别器(InsightFace 的 ArcFace 系列、FaceNet 等)的分工和取舍讲清楚,给出一个从"场景"到"选型"的判断路径,让你面对真实项目时不用从零扫盲。
仓库里宣传的"人脸识别方案",实际是一台检测+一台识别+阈值装配的流水线。你要是跳过选型、直接抄别人工程里的 YAML,风险全在后面:检测器或识别器挑错,整条链的精度、速度、算力全走样。选型不是挑一个"最强"的模型,而是挑一套"和你的场景对表"的组合。先立个结论:主流做法是"检测用 RetinaFace 类、识别用 InsightFace 的 ArcFace 类",后面再谈它为什么、何时例外。
一个容易踩的误区:把"检测器"和"识别器"混为一谈。前者只负责把脸抠出来、给关键点,后者才把标准脸编码成向量。两者是两套分工不同的网络,各自有独立的选型维度,别指望一个模型面面俱到。
检测器只管出框和关键点,识不识别、识谁它都不管。开源里两个常客:
选检测器看两件事:一是你的主流画面里脸有多小、有没有遮挡;二是你愿意为检测扔多少算力。门禁这种正脸大脸、硬件局促,MTCNN 够用;监控这种小脸乱窜,RetinaFace 更稳。
识别器把标准脸编码成向量。开源里 InsightFace 系列几乎成了实际标准:它把 ArcFace 损失和一批训练好的主干(ResNet、MobileFaceNet 等)打包成可直接加载的权重,覆盖高精度到低算力多种体量。FaceNet 同样是里程碑,但开源权重与配套不如 InsightFace 顺手。手机、门禁这些低算力场景,则有 MobileFaceNet 这类轻量主干——它的取舍很直接:牺牲一点精度换回来的算力和内存,恰好满足嵌入式。
一个常见的问法:"检测用 MTCNN、识别用 ResNet,能直接拼吗?"答案是可以,但你要自己做对齐口径统一——检测器出的关键点坐标、识别器期望的标准网格必须对得上,否则等于检测很好、识别白搭。InsightFace 这类把"检测+对齐+识别"打包的生态,就是为了少踩这一类接口对接的雷。

这张矩阵把三类典型场景摊开:闸机门禁要"快而稳"、视频监控要"抗小脸与遮挡"、手机嵌入式要"极致轻量化"。同一行纵览,你会发现检测器与识别器常常是一对搭档——选型时别拆开追热度,要按场景一起下决定。
| 环节 | 组件 | 特点 | 适合场景 |
|---|---|---|---|
| 检测 | MTCNN | 轻快、关键点齐全 | 手机/嵌入式 |
| 检测 | RetinaFace | 准、抗小脸 | 监控/门禁 |
| 识别 | MobileFaceNet | 极致轻量 | 嵌入式/解锁 |
| 识别 | ResNet-50 等 | 深主干、准 | 数据足的安防 |
| 引擎 | InsightFace | 常用训练/推理框架 | 多数新项目的基线 |
一句话直觉:检测器和识别器是"分工的搭档",选型是配对的学问,而不是单挑某个明星模型的玄学。
选模型前,先学会读它贴出来的成绩单,否则很容易被"刷榜数字"带走。几个判断要点:一看它报的是什么库、什么口径——LFW 已经被刷到 99% 以上、几乎筛不出差距,要看 MegaFace、IJB、以及它是否配了"在什么对齐、什么阈值下测"的说明;二看它是否给了 FRR/FAR 曲线,而只给一个准确率的,多半在藏;三看它是在理想库还是贴近真实场景的库上测的,贴近生产条件的数字更值得参考。记住:公开榜好看最多说明"客观上不差",你的数据分布和它的数据分布是两码事,最终一定要上你自己的验收集。
选型最容易被忽略的,是检测器和识别器这对搭档要一起挑、看它们的接口能不能咬合。常见三对组合:手机/嵌入式——轻量检测(MTCNN)配轻量识别(MobileFaceNet),把算力和内存压到最小;门禁/闸机——需求快而稳,RetinaFace 检测配 ResNet 一档的 ArcFace 编码;监控/布警——要抗小脸和遮挡,检测换更重的 RetinaFace、识别保留高精度主干,必要时再叠一个行人重识别做补位。配对的核心是把"检测输出的人脸框+关键点"直接喂给识别期望的对齐模板,接口对不上,精度再好的两顶帽子也拼不成一句话。
当你对基线不满意、想换识别主干或检测器时,先按顺序排掉更廉价的问题,避免白换:第一步看数据——光照、姿态、遮挡有没有在训练里铺匀;第二步看对齐口径——训练与线上模板是否一致;第三步看损失与度量——是否按同一口径(余弦)训练和比对;第四步看阈值——是否对着自己的 FRR/FAR 代价定过。前三步通常都比换模型更影响最终分数。只有把这些都排除干净,才轮到"换个更强的主干"这种升级动作——否则你可能在数据的坑上反复换件,却始终差那么几个百分点。
到这里,原理和模型都交代完了。可一只模型要真跑起来服务业务,后面还有硬件、框架、数据、训练、部署一字排开——第 4 章见。