tomas-gajarsky/facetorch

Python library for analysing faces using PyTorch

解决的问题

Facetorch 提供了一个统一且可扩展的面部检测与分析工具包。它通过收集社区模型、将其打包为便携格式,并提供标准化的读取、检测和分析面部特征的流水线,解决了开源面部分析模型碎片化的问题。

工作原理

该库使用一个名为 FaceAnalyzer 的中心协调器来管理一个顺序流水线:

  1. Reader:从各种来源加载图像(本地路径、张量、NumPy 数组、PIL 图像或字节)。
  2. Detector:使用神经网络(例如 RetinaFace)在图像中定位人脸。
  3. Unifier:将检测到的人脸标准化并调整为一致的格式。
  4. Predictors:一系列专门的神经网络,用于分析特定面部属性,如面部表情识别(FER)、人脸验证和嵌入生成。
  5. Utilizers:处理输出的组件,例如绘制边界框或保存结果。

模型使用 torch.export.pt2 格式)进行序列化,使得在推理时无需原始源代码,并支持 torch.compile 以实现性能优化。

适用人群

专为需要灵活、高性能面部分析系统且可通过 Python 或 Docker 轻松部署,并支持 CPU 和 GPU 环境的开发者和研究人员设计。

主要亮点

  • 便携模型:使用 .pt2 序列化,推理时无需模型源代码。
  • 灵活输入:通过单一流水线支持多种输入类型,包括张量、NumPy 数组和 PIL 图像。
  • 模型遴选与治理:通过严格的清单(manifest)对社区模型进行遴选,确保验证、来源和权利批准。
  • 可自定义配置:与 Hydra 和 OmegaConf 集成,便于设置覆盖。
  • 开箱即用的部署:提供官方 Docker 镜像,并通过 uvconda-lock 支持快速包管理。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目