InsightFace-REST 项目介绍
项目概述
InsightFace-REST 是一个提供面部检测和识别能力的 REST API。其主要目的是通过使用 FastAPI 提供服务,并利用 NVIDIA TensorRT 实现高效推理,使得面部识别技术更加易于部署和扩展。此项目的代码基于 DeepInsight InsightFace 官方库,并通过 Docker 构建,支持将模型转换为 ONNX 和 TensorRT 格式。
主要特性
- 易于部署:项目可以在支持 NVIDIA GPU 的系统上通过 Docker 和 nvidia-docker2 快速部署。
- 自动模型下载:启动时自动从 Google Drive 下载模型。
- 性能提升:相比传统 MXNet 推理,利用 TensorRT、FP16 推理和批量推理,性能提升最多可达3倍。
- 支持多种模型:兼容各类检测器和识别模型,包括旧版本的 Retinaface 和 MXNet ArcFace 模型,以及更现代化的 SCRFD 检测器和基于 PyTorch 的识别模型。
- 批量推理支持:目前 SCRFD 家族的检测和识别模型都支持批量推理。
- CPU 推理:通过 ONNX-Runtime 支持在 CPU 上进行推理。
支持的模型列表
检测模型
项目支持多种检测模型,如 retinaface 系列和 scrfd 系列,不同型号的模型在检测速度和准确率上有所不同。所有支持的模型在启动时均可自动下载。
识别模型
项目支持使用多种不同的识别模型进行推理,包括 arcface 系列及部分最新的基于 WebFace600k 的模型。某些模型需要在 Google Drive 上下载。
其他模型
项目还集成了性别和年龄识别模型以及口罩检测模型,以满足不同的应用场景。
项目要求
运行 InsightFace-REST 需要具备以下条件:
- Docker
- Nvidia-container-toolkit
- Nvidia GPU 驱动(版本需为470.x.x及以上)
使用 Docker 运行
要使用 Docker 部署 InsightFace-REST,用户可以克隆项目仓库并执行 deploy_trt.sh
文件,该文件允许用户根据需求进行一些配置更改。之后,可以通过访问 http://localhost:18081
来查看 API 文档并进行测试。对于多 GPU 系统,可以通过编辑 n_gpu 和 n_workers 参数 来实现多容器的并行运行。
如果您不具备 GPU 环境,可以使用 deploy_cpu.sh
脚本在 CPU 上测试 API。此时,将使用 ONNX-Runtime 作为推理后端。
API 使用
InsightFace-REST 提供多个易于使用的 API 接口,用户可以通过这些接口进行面部特征提取等操作。项目提供了示例客户端代码,便于用户参考和使用。
正在进行的工作
当前项目仍在不断优化和扩展,包括添加面部索引和搜索示例(由 Milvus 提供支持),并计划引入 Triton 推理服务器作为执行后端,以增强系统性能和扩展性。
已知问题
在使用某些模型时,可能会出现性别和年龄预测不准确的问题。用户在使用过程中,应根据具体情况进行调整和优化。项目团队也在寻找解决方案以提高模型的准确性。
近期更新
InsightFace-REST 项目在最近的更新中对模型的检测和识别性能进行了显著提升,通过优化代码和使用最新的模型训练技巧,使得推理速度和准确性有了极大的改善。用户可以在项目的 changelog 中查看历次版本更新的详细信息。