Application de démonstration de l'espace face à l'étreinte?
Demo Google Colab Notebook
Guide de l'utilisateur, documentation, guide Chatgpt Facetorch
Docker Hub (GPU)
Facetorch est une bibliothèque Python conçue pour la détection et l'analyse faciales, tirant parti de la puissance des réseaux de neurones profonds. Son objectif principal est de gérer des modèles d'analyse de visage open source de la communauté, de les optimiser pour des performances élevées à l'aide de TORCHScript et de les intégrer dans une boîte à outils d'analyse du visage polyvalent. La bibliothèque propose les caractéristiques clés suivantes:
Configuration personnalisable: configurez facilement votre configuration à l'aide de Hydra et de ses puissantes capacités d'Omegaconf.
Environnements reproductibles: assurer la reproductibilité avec des outils tels que Conda-Lock pour la gestion des dépendances et Docker pour la conteneurisation.
Performances accélérées: profitez des performances améliorées sur CPU et GPU avec l'optimisation TorchScript.
Extensibilité simple: étendez la bibliothèque en téléchargeant votre fichier de modèle sur Google Drive et en ajoutant un fichier YAML de configuration correspondant au référentiel.
Facetorch fournit une solution efficace, évolutive et conviviale pour les tâches d'analyse faciale, s'adressant aux développeurs et aux chercheurs à la recherche de flexibilité et de performances.
Veuillez utiliser cette bibliothèque de manière responsable et avec prudence. Adhérer aux directives éthiques de la Commission européenne pour une IA digne de confiance pour assurer une utilisation éthique et équitable. Gardez à l'esprit que les modèles peuvent avoir des limites et des biais potentiels, il est donc crucial d'évaluer leurs résultats de manière critique et de considérer leur impact.
PYPI
pip install facetorchConda
conda install -c conda-forge facetorchDocker Compose fournit un moyen facile de construire un environnement Facetorch fonctionnant avec une seule commande.
docker compose run facetorch python ./scripts/example.pydocker compose run facetorch-gpu python ./scripts/example.py analyzer.device=cudaCochez les données / sorties pour les images résultant avec des boîtes de délimitation et des repères 3D.
(Apple Mac M1) Utilisez l'émulateur Rosetta 2 dans Docker Desktop pour exécuter la version CPU.
Le projet est configuré par des fichiers situés dans Conf avec le fichier principal: conf / config.yaml . On peut facilement ajouter ou supprimer les modules de la configuration.
Faceanalyzer est la classe principale de Facetorch car c'est l'orchestrateur responsable de l'initialisation et de l'exécution des composants suivants:
analyzer
├── reader
├── detector
├── unifier
└── predictor
├── embed
├── verify
├── fer
├── au
├── va
├── deepfake
└── align
└── utilizer
├── align
├── draw
└── save
| model | source | params | license | version |
| ------------- | --------- | --------- | ----------- | ------- |
| RetinaFace | biubug6 | 27.3M | MIT license | 1 |
| model | source | params | license | version |
| ----------------- | ---------- | ------- | ----------- | ------- |
| ResNet-50 VGG 1M | 1adrianb | 28.4M | MIT license | 1 |
include_tensors doit être vrai pour inclure la prédiction du modèle dans la prédiction.logits | model | source | params | license | version |
| ---------------- | ----------- | -------- | ------------------ | ------- |
| MagFace+UNPG | Jung-Jun-Uk | 65.2M | Apache License 2.0 | 1 |
| AdaFaceR100W12M | mk-minchul | - | MIT License | 2 |
include_tensors doit être vrai pour inclure la prédiction du modèle dans la prédiction.logitsinclude_tensors doit être vrai pour inclure la prédiction du modèle dans la prédiction.logits | model | source | params | license | version |
| ----------------- | -------------- | -------- | ------------------ | ------- |
| EfficientNet B0 7 | HSE-asavchenko | 4M | Apache License 2.0 | 1 |
| EfficientNet B2 8 | HSE-asavchenko | 7.7M | Apache License 2.0 | 2 |
| model | source | params | license | version |
| ------------------- | --------- | ------- | ------------------ | ------- |
| OpenGraph Swin Base | CVI-SZU | 94M | MIT License | 1 |
| model | source | params | license | version |
| ----------------- | ---------- | ------- | ----------- | ------- |
| ELIM AL AlexNet | kdhht2334 | 2.3M | MIT license | 1 |
| model | source | params | license | version |
| -------------------- | ---------------- | -------- | ----------- | ------- |
| EfficientNet B7 | selimsef | 66.4M | MIT license | 1 |
| model | source | params | license | version |
| ----------------- | ---------------- | -------- | ----------- | ------- |
| MobileNet v2 | choyingw | 4.1M | MIT license | 1 |
include_tensors doit être vrai pour inclure la prédiction du modèle dans la prédiction.logitsLes modèles sont téléchargés pendant l'exécution automatiquement dans le répertoire des modèles . Vous pouvez également télécharger les modèles manuellement à partir d'un dossier public Google Drive.
Test d'image.jpg (4 faces) est analysé (y compris les boîtes de dessin et les points de repère, mais ne pas enregistrer) dans environ 486 ms et le test3.jpg (25 faces) dans environ 1845 ms (Batch_size = 8) sur Nvidia Tesla T4 GPU une fois la configuration par défaut ( Conf / Config.YAML ). On peut surveiller les temps d'exécution dans les journaux à l'aide du niveau de débogage.
Test détaillé des temps d'exécution:
analyzer
├── reader: 27 ms
├── detector: 193 ms
├── unifier: 1 ms
└── predictor
├── embed: 8 ms
├── verify: 58 ms
├── fer: 28 ms
├── au: 57 ms
├── va: 1 ms
├── deepfake: 117 ms
└── align: 5 ms
└── utilizer
├── align: 8 ms
├── draw_boxes: 22 ms
├── draw_landmarks: 7 ms
└── save: 298 ms
Exécutez le conteneur Docker:
docker compose -f docker-compose.dev.yml run facetorch-devdocker compose -f docker-compose.dev.yml run facetorch-dev-gpuFacetorch fonctionne avec des modèles exportés de Pytorch à TorchScript. Vous pouvez appliquer la fonction torch.jit.trace pour compiler un modèle Pytorch en tant que module TorchScript. Veuillez vérifier que la sortie du modèle tracé est égale à la sortie du modèle d'origine.
Les premiers modèles sont hébergés sur mon dossier public Google Drive. Vous pouvez soit envoyer le nouveau modèle pour me télécharger, héberger le modèle sur votre Google Drive ou l'héberger ailleurs et ajouter votre propre objet de téléchargeur à la base de code.
/conf/analyzer/predictor/ suivant l'exemple FER dans /conf/analyzer/predictor/fer//conf/analyzer/predictor/fer/efficientnet_b2_8.yaml dans le nouveau dossier /conf/analyzer/predictor/<predictor_name>//conf/analyzer/predictor/<predictor_name>/<model_name>.yaml /tests/conftest.py ./tests/test_<predictor_name>.py black facetorchCPU:
environment.ymlconda lock -p linux-64 -f environment.yml --lockfile conda-lock.ymldocker compose -f docker-compose.dev.yml run facetorch-lockconda-lock install --name env conda-lock.ymlGPU:
gpu.environment.ymlconda lock -p linux-64 -f gpu.environment.yml --lockfile gpu.conda-lock.ymldocker compose -f docker-compose.dev.yml run facetorch-lock-gpuconda-lock install --name env gpu.conda-lock.ymlpytest tests --verbose --cov-report html:coverage --cov facetorchpdoc --html facetorch --output-dir docs --force --template-dir pdoc/templates/python -m cProfile -o profiling/example.prof scripts/example.pysnakeviz profiling/example.prof Sharma, Paritosh, Camille Challant et Michael Filhol. "Expressions faciales pour la synthèse du langage des signes à l'aide de FaceShuman et Azee." Actes du 11e atelier LREC-COLING 2024 sur la représentation et le traitement des langues des signes , pp. 354–360, 2024.
Liang, Cong, Jiahe Wang, Haofan Zhang, Bing Tang, Junshan Huang, Shangfei Wang et Xiaoping Chen. "UniFarn: transformateur unifié pour la génération de réaction faciale." Actes de la 31e Conférence internationale de l'ACM sur le multimédia , pp. 9506–9510, 2023.
Gue, Jia Xuan, Chun Yong Chong et Mei Kuan Lim. "La reconnaissance de l'expression faciale comme marqueurs de la dépression." 2023 Asie Pacific Signal and Information Processing Association Summit and Conference (APSIPA ASC) , pp. 674–680, 2023.
Je tiens à remercier la communauté open source et les chercheurs qui ont partagé leur travail et publié des modèles. Ce projet n'aurait pas été possible sans leurs contributions.
Si vous utilisez Facetorch dans votre travail, assurez-vous de créditer de manière appropriée les auteurs originaux des modèles qu'il utilise. De plus, vous pouvez envisager de citer la bibliothèque Facetorch elle-même. Vous trouverez ci-dessous un exemple de citation pour Facetorch:
@misc{facetorch,
author = {Gajarsky, Tomas},
title = {Facetorch: A Python Library for Analyzing Faces Using PyTorch},
year = {2024},
publisher = {GitHub},
journal = {GitHub Repository},
howpublished = {url{https://github.com/tomas-gajarsky/facetorch}}
}