如何用 3 步上手 InsightFace:从人脸检测到自托管识别服务
【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface
InsightFace 是开源人脸分析工具箱,覆盖人脸检测、人脸识别、人脸对齐与换脸的完整链路,附带预训练模型包、分布式训练脚本和自托管识别服务。本文先用最小命令跑通效果,再给出三个可直接照做的实战场景。
一分钟看懂项目定位 🎯
InsightFace 把人脸方向的三段活儿放在同一个仓库里:推理侧用 Python 包直接加载预训练 ONNX 模型,训练侧提供 ArcFace 官方 PyTorch 实现和 PartialFC 大模型并行方案,部署侧则内置一个带 Web 界面和 REST API 的 Docker 服务。它的差异化在于"一条龙"——别人只给模型权重,这里从模型获取、训练代码到容器化服务都能自给自足。
| 核心能力 | 入口位置 | 输入 | 输出 |
|---|---|---|---|
| 检测、对齐、属性 | python-package/insightface/app/ | 一张图片 | 人脸框、5 点 landmarks、性别年龄 |
| 1:1 与 1:N 识别 | examples/face_recognition/、server/ | 两张或多张照片 | 特征向量、余弦相似度、搜索结果 |
| 人脸换脸 | examples/in_swapper/ | 源人脸 + 目标图 | 换脸结果图 |
| 训练新模型 | recognition/arcface_torch/ | .rec 数据集 | r50/r100 等模型与 ONNX 导出 |
快速上手:3 步跑通第一个结果 ⚡
准备环境:拿到仓库代码
先 clone 仓库,后续所有示例都基于本地目录运行:
git clone https://gitcode.com/GitHub_Trending/in/insightface安装依赖:一条命令装推理库
官方示例要求先安装 insightface 包,它从 0.2 版本起以 onnxruntime 为后端,GPU 推理需另装 onnxruntime-gpu:
pip install -U insightface运行最小命令:跑通内置演示
仓库自带的 demo_analysis.py 使用内置多人样本图,一次完成检测、对齐、特征提取和相似度计算:
python examples/demo_analysis.py运行后当前目录会生成 t1_output.jpg,图上画出 6 张人脸的检测框,终端同时打印 6 人脸的两两相似度矩阵。
三个核心能力实战 🛠️
场景一:核对两张照片是否同一人
你想做身份核验类判断时,功能是把两张照片各自压成 512 维特征再算余弦相似度;输入是两张单人照,输出是相似度分数和是否同一人的结论。示例脚本默认阈值 0.65,跑之前把图片路径换成你自己的:
python examples/face_recognition/insightface_app.py终端打印 Similarity Score 和 Same person? YES/NO 两行,直接得到结论。
场景二:把整张图的人脸批量替换
你想做换脸实验时,功能是加载 inswapper 模型,把目标图里每张脸都换成指定源人脸;输入是带脸图片,输出是 t1_swapped.jpg。注意该换脸模型需单独下载,许可条款以官方文档为准:
python examples/in_swapper/inswapper_main.py示例会把内置图中 6 张人脸全部替换为其中一人的脸,另存一张拼接图便于对比。
场景三:搭一个 1:N 人脸搜索服务
你想把人脸库服务化时,功能是自托管 Server 容器:上传照片即完成检测、入库和搜索;输入是照片和人物注册信息,输出是 Web 页面、snake_case REST 接口和 Python SDK。CPU 版三步启动:
docker compose -f server/deploy/compose.cpu.yml pull docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license docker compose -f server/deploy/compose.cpu.yml up -d打开 http://127.0.0.1:18097/ 即可进入 Dashboard,创建 Collection、注册 Person,再用一张陌生照片做 1:N 搜索。
参数与性能调优要点 📈
训练侧的推荐设置按数据规模和机器数量分档,配置文件都在 recognition/arcface_torch/configs/ 下:
| 使用场景 | 推荐配置 | 启动方式 | 关键点 |
|---|---|---|---|
| 单卡小数据集验证 | configs/ms1mv3_r50_onegpu | python train_v2.py 加该配置 | r50、batch 128、fp16 开启、lr 0.02 |
| 单机 8 卡 | configs/ms1mv3_r50 | torchrun --nproc_per_node=8 | MS1MV3 约 9.3 万身份 |
| 双机 16 卡大模型 | configs/wf42m_pfc02_16gpus_r100 | torchrun 加多机参数 | r100 + PartialFC |
类别中心显存是大数据集训练的主要瓶颈,官方在 Tesla V100 32GB x 8 上实测的吞吐(样本/秒)如下,摘自 recognition/arcface_torch/README.md:
| 身份数 | 数据并行 | 模型并行 | PartialFC 0.1 |
|---|---|---|---|
| 14 万 | 1672 | 3043 | 4738 |
| 550 万 | 显存不足 | 1389 | 3975 |
| 2900 万 | 显存不足 | 显存不足 | 1855 |
一句话划重点:身份数在几十万以内按普通数据并行练即可,跨过百万级就打开 PartialFC 采样,否则类别中心装不进显存。
避坑指南 ⚠️
GPU 装了却跑在 CPU 上
原因:默认安装的是 CPU 版 onnxruntime,不会自动启用 CUDA。解法:改装 onnxruntime-gpu,并在 FaceAnalysis 里传 providers=['CUDAExecutionProvider']。
模型下载失败或版本过旧
原因:0.3.3 之后 FaceAnalysis 初始化时才自动下载模型包,网络不稳就卡在启动。解法:手动下载 buffalo_l 包解压到 ~/.insightface/models/ 再运行。
大身份数训练直接 OOM
原因:全量 softmax 要把所有身份的类别中心放进显存。解法:配置文件里开启 fp16 并把 sample_rate 调成 PartialFC 模式。
误把公开模型用于商用
原因:公开预训练模型仅限非商业研究用途,商用需单独授权。解法:商用前查看仓库 README 的许可说明并联系官方。
训练数据格式不对
原因:训练脚本读 MXNet .rec 格式,直接喂图片目录会报错。解法:先用 recognition 目录下的 rec_builder 工具把数据打包成 .rec。
学习路径与资源 📚
- 想最快出结果:读 python-package/README.md,模型包对照表(buffalo_l、antelopev2 等)和自动下载说明都在这里。
- 想训练自己的模型:看 recognition/arcface_torch/README.md,训练命令、数据集准备和 ONNX 转换入口都有。
- 想部署服务:按 server/docs/user-guide.md 走首跑流程,接口细节查 server/docs/api.md。
- 想做检测方向:从 detection/scrfd/README.md 入手,含 NAS 搜索和 WIDER FACE 评测脚本。
InsightFace 把"拿模型、跑推理、训新模型、上服务"整条链路压进一个仓库,省去了在多个项目间拼凑的功夫。下一步建议先跑通 examples 里的三条命令,再照着场景三把 1:N 搜索服务在自己机器上搭起来。
【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考