← 返回教程
InsightFace ServerDocker人脸识别CUDA自托管

使用 Docker 部署 InsightFace Server

在 CPU 或 CUDA 上自托管 InsightFace Server,安装并验证授权模型,完成首次精确 1:N 搜索,并配置认证与持久化数据保护。

阅读约 8 分钟
显示服务、模型、数据库和运行时状态的 InsightFace Server 仪表盘
注册数据前,请在仪表盘和系统页确认所有依赖均已就绪。

你将完成什么

直接使用仓库提供的 Compose 配置部署 CPU 或 CUDA 12:拉取镜像、安装模型,然后启动服务。活体检测为可选功能,默认关闭。

开始之前

  • 安装 Docker Engine、Docker Compose 和 Git 的 Linux x86_64 主机。仓库自带 server/config/server.toml,请保留该配置文件。
  • CUDA 12 还需要受支持的 NVIDIA GPU、NVIDIA Driver 和 NVIDIA Container Toolkit;主机无需安装 CUDA Toolkit、cuDNN、ONNX Runtime、Python 或 OpenCV。
  • 拉取镜像和安装模型时需要联网;模型包就绪后,Server 的正常启动可保持离线。

使用 CPU 或 CUDA 12 启动

选择一组命令,在仓库根目录执行。直接使用仓库提供的 Compose 文件,拉取的镜像由该文件指定。已有最新 checkout 时,跳过 git clone 并进入仓库根目录。

启动后,CPU 访问 http://SERVER:18097/,CUDA 12 访问 http://SERVER:18098/。安装命令使用 --accept-license 接受模型条款,执行前请先阅读并确认接受。

CPU
git clone https://github.com/deepinsight/insightface.git
cd insightface
docker compose -f server/deploy/compose.cpu.yml pull server models
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 --wait --wait-timeout 180
CUDA 12
git clone https://github.com/deepinsight/insightface.git
cd insightface
docker compose -f server/deploy/compose.cuda12.yml pull server models
docker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cuda12.yml up -d --wait --wait-timeout 180

完成第一次 Collection → Person → Search

用于创建和管理可搜索人脸库的 InsightFace Server Collections 页面
注册 Person 和 FaceSample 前,先创建与模型绑定的 Collection。

在 Collections 中创建 employees 之类的稳定 ID。选择系统页实际提供的 search profile,按内存预算设置 capacity,并从默认 raw cosine threshold 0.4 开始。Collection 会固定绑定模型身份、digest、特征维度、预处理版本和检测配置契约。

在 People 中选择该 Collection,用一张或多张清晰的 JPEG、PNG、WebP 或 BMP 注册 Person。standard review 很适合作为起点:它要求恰好一张可用脸,并检查尺寸、检测置信度、清晰度、亮度和姿态。批量注册允许部分成功,请逐张查看拒绝原因,不要盲目重传整批。

在 Search 中选择同一 Collection,上传该 Person 的另一张照片。结果按 raw cosine similarity 降序排列;一个 Person 的分数取其所有 FaceSample 的最高分。similarity 不是概率。没有匹配时返回空列表,仍然是成功响应。

  • 默认不保留原始上传。可选的人脸存储仅保存缩放为 112×112 的 bounding-box JPEG crop,不是原图,也不是识别模型使用的对齐输入。
  • 接受的样本会先提交到 SQLite,再在成功响应前加入内存中的精确索引;重启后索引从 SQLite 重建。
  • Detect 没有检测到人脸是合法的空结果;Compare 任一侧没有可用脸时返回 422 face_not_found。

可选:启用 RGB 活体检测

全新部署只需在上方模型安装命令末尾加上 --enable-liveness。安装器会校验所需模型,并在首次启动前保存启用设置。

已有部署使用下方对应命令安装,然后重启服务。普通模型安装及 models addons install liveness 仅安装模型,不会自动启用活体。

安装成功后重启正在运行的服务。仅执行 up -d 不会让已有容器重新加载保存的设置。活体默认关闭,注册流程另有 liveness_on_registration 开关。

CPU
docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license --enable-liveness &&
docker compose -f server/deploy/compose.cpu.yml restart server
CUDA 12
docker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license --enable-liveness &&
docker compose -f server/deploy/compose.cuda12.yml restart server

明确模型许可边界

Server 源代码和 Python SDK 采用 MIT 许可,但模型文件与权重不在该 MIT 许可范围内。包括 buffalo_l 在内的 InsightFace 公开模型包,除非 InsightFace 另行授予商业许可,通常仅限非商业学术研究;自托管 Server 并不自动获得模型的商业使用权。

安装会把 manifest.json 和签名 MODEL.LICENSE 写入 server/.models。verify 会校验包身份、许可签名、有效期和当前授权。许可用于标识模型和允许的用途,是合规凭据,不是 DRM,也不是模型文件校验和。

安装器支持 buffalo_l、buffalo_m、buffalo_s、buffalo_sc、antelopev2、raccoon_s 和 raccoon_l。Server 仅使用 Raccoon 的检测与识别模型,不加载 PrivateFrame verifier。切换模型需要匹配的 Collection,并重新注册或单独迁移数据。

  • 不传 --accept-license 时,工具只展示条款并退出,不会下载模型。
  • 将模型文件、manifest 和签名授权文件一起保存在持久化模型目录中。
  • 商业使用,或部署范围未被公开模型条款明确覆盖时,请在使用前联系 InsightFace。

对外联网前先做好安全配置

随附 Compose 为隔离评估场景默认关闭身份验证。在任何其他用户或网络能访问服务之前,启用身份验证,在部署的 secret 环境中设置足够长的随机 API Key,并用这些变量重新启动所选 Compose。Web UI 可仅在当前浏览器标签页的内存中保存 Key。

在可信反向代理终止 HTTPS;不要开放宽泛 CORS,只允许所需 origin;在入口设置速率、请求体和超时限制;严格控制 Docker、/data、/models 和备份的访问。绝不要记录图像、特征、RTSP 凭据或 API Key,所有人脸材料都应按生物识别数据保护。

  • 第一阶段只有一个不分角色的 API Key,不是多租户授权系统,也没有内置用户账户或 RBAC。
  • 之后使用不同 INSIGHTFACE_API_KEY 启动同一数据卷,会有意轮换当前有效 Key。
  • Server 不内置 TLS 或法律合规层;合法处理和部署控制仍由运营方负责。
CPU:启动前启用身份验证
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cpu.yml up -d --wait --wait-timeout 180
CUDA 12:启动前启用身份验证
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cuda12.yml up -d --wait --wait-timeout 180

持久化、备份并安全停止

持久化保存 /data、模型和 server/config。停止写入后一起备份 SQLite 与已配置的人脸裁剪图,或使用 SQLite 安全快照。目录与备份均按生物特征数据保护;对外开放前启用 API key 认证和 HTTPS。

使用与你所启动环境一致的完整 down 命令。普通 down 会移除容器和网络,但保留具名数据库卷。绝不要追加 -v:docker compose down -v 会永久删除这个具名数据卷。

默认容器以 root(0:0)运行,使用单个可写 /models 挂载和可写配置目录。Compose 自动创建模型根目录,安装插件时按需创建 addons/,无需传入宿主机 UID/GID 或手动设置权限。容器根文件系统仍为只读。

  • 升级前创建安全快照,保留 /models 及许可文件,并先用数据副本测试新镜像。
  • 重启或升级后检查 migration、/v1/health、模型契约以及一条已知搜索。
  • 删除 FaceSample 会移除其特征和可选 crop;删除非空 Collection 需要明确 force 确认。
停止 CPU,但不删除数据卷
docker compose -f server/deploy/compose.cpu.yml down
停止 CUDA,但不删除数据卷
docker compose -f server/deploy/compose.cuda12.yml down

升级部署

先停止写入并备份数据库及已保存的裁剪图。更新仓库部署文件、合并自定义设置,同时保留 server/config/server.toml、模型、原项目名及数据卷名、端口和 API key。下方使用对应的原始 Compose 文件;自定义部署需带上原有覆盖文件和项目名。

拉取两个服务的镜像并重新创建 Server。仅 restart 不会应用新镜像或挂载变更。检查健康状态、执行提供程序、已有 Collection 和 Person,并执行一次已知图片搜索。保持识别模型与 embedding 契约不变即可保留样本;切换模型需单独迁移。Python SDK 也从同一份最新 checkout 更新。

CPU
docker compose -f server/deploy/compose.cpu.yml pull server models
docker compose -f server/deploy/compose.cpu.yml up -d --no-build --force-recreate --wait --wait-timeout 180 server
curl -fsS http://127.0.0.1:18097/v1/health
CUDA 12
docker compose -f server/deploy/compose.cuda12.yml pull server models
docker compose -f server/deploy/compose.cuda12.yml up -d --no-build --force-recreate --wait --wait-timeout 180 server
curl -fsS http://127.0.0.1:18098/v1/health

定位启动与请求故障

先检查 health,再查看系统页、所选 Compose 的容器状态和日志。CUDA 在 Driver、GPU、模型 Session、CUDAExecutionProvider、Provider 审计或 warm-up 失败时会主动终止启动;不会静默回退到 CPU。

每个响应都带 x-request-id,错误正文也包含 request_id。报告问题时请连同相关时间段的日志保留该标识。401 unauthorized 通常表示当前标签页没有 Key 或 Key 已轮换;409 collection_model_mismatch 表示 Collection 属于其他模型契约;422 face_not_found 表示未选出可用脸。

CUDA 部署必须显示 CUDAExecutionProvider。启动时会检查 GPU、Driver、CUDA/cuDNN/ONNX Runtime、真实检测与识别 Session、Provider 放置和 warm-up 推理;任何一项失败都会终止,而不会静默回退到 CPU。

  • 确认系统页显示的 CPUExecutionProvider 或 CUDAExecutionProvider 与所选 Compose 文件一致。
  • 确认 server/.models 中有已验证的模型包及签名授权,且 server/config/server.toml 存在。模型下载和配置保存需要目录可写挂载。
  • CUDA 故障应修复主机 Driver、GPU 可见性或 NVIDIA Container Toolkit,而不是等待 CPU 回退。
CPU health、状态与近期日志
curl -fsS http://127.0.0.1:18097/v1/health
docker compose -f server/deploy/compose.cpu.yml ps
docker compose -f server/deploy/compose.cpu.yml logs --tail=200 server
CUDA 12 health、状态与近期日志
curl -fsS http://127.0.0.1:18098/v1/health
docker compose -f server/deploy/compose.cuda12.yml ps
docker compose -f server/deploy/compose.cuda12.yml logs --tail=200 server

需要生产部署支持?

联系 InsightFace,获取模型授权、运行时优化和目标硬件部署支持。

提交企业询盘