项目介绍:Facetorch
Facetorch 是一个使用深度神经网络进行面部检测和分析的 Python 库。通过开源的社区合作贡献面部分析模型,facetch 旨在优化并将它们整合到一个高性能的面部分析工具集中,便于开发者和研究人员使用。以下是 Facetorch 的主要特性:
主要特点
-
可定制的配置:通过灵活的 Hydra 和 OmegaConf 配置工具,用户可以轻松地定制分析环境。
-
可重复的环境:通过使用 conda-lock 和 Docker 容器化技术,保证在不同环境中结果的一致性。
-
加速的性能:利用 TorchScript 在 CPU 和 GPU 上实现性能优化。
-
简单的可扩展性:用户可以通过 Google Drive 上传模型文件,并添加配置文件到代码库,实现库的扩展。
Facetorch 为寻求灵活性和高性能的面部分析任务的开发者和研究人员提供了一种高效且易用的解决方案。使用此库时应遵守欧盟委员会的《可信人工智能伦理指南》,确保使用过程的伦理和公正。请注意,模型可能存在局限性和潜在偏见,因此评估其输出和影响至关重要。
安装指南
Facetorch 可以通过以下两种方式安装:
- 使用 PyPI 安装
pip install facetorch
- 使用 Conda 安装
conda install -c conda-forge facetorch
使用方法
先决条件
- Docker 和 Docker Compose:通过一个简单的命令可以方便地搭建一个可用的 Facetorch 环境。
Docker 示例
- CPU 示例
docker compose run facetorch python ./scripts/example.py
- GPU 示例
docker compose run facetorch-gpu python ./scripts/example.py analyzer.device=cuda
系统配置
项目的配置文件位于 conf
目录下,主配置文件为 conf/config.yaml
。用户可以轻松地从配置中添加或删除模块。
主要组件
Facetorch 的核心类为 FaceAnalyzer,负责初始化和运行以下组件:
- Reader - 读取图像并返回包含图像张量的 ImageData 对象。
- Detector - 包装一个神经网络以检测面部。
- Unifier - 处理器,用于统一和标准化人脸大小。
- Predictor dict - 包装神经网络,分析面部特征。
- Utilizer dict - 包括任何需要神经网络输出的功能,如绘制边界框或面部标志。
项目结构
analyzer
├── reader
├── detector
├── unifier
└── predictor
├── embed
├── verify
├── fer
├── au
├── va
├── deepfake
└── align
└── utilizer
├── align
├── draw
└── save
模型库
Facetorch 集成了多种用于不同面部分析任务的模型,每种模型会在运行时自动下载到 models
目录。用户还可以从一个公共的 Google Drive 文件夹手动下载这些模型。
开发与贡献
开发者可以通过 Docker 容器快速启动开发环境。为了贡献新的预测器,用户需准备 TorchScript 模型文件和相关配置,还需确保新模块通过测试。
Facetorch 项目非常感谢开源社区和提供模型的研究人员给予的支持和贡献。如果您在工作中使用了 Facetorch,请适当引用模型的原始作者,并考虑引用 Facetorch 本身。
@misc{facetorch,
author = {Gajarsky, Tomas},
title = {Facetorch: A Python Library for Analyzing Faces Using PyTorch},
year = {2024},
publisher = {GitHub},
journal = {GitHub Repository},
}