Wie man eine vollständige Gesichtsanalyse-Pipeline in einem einzigen Python-Paket mit der UniFace-Bibliothek erstellt
Wenn Sie jemals ein Gesichtserkennungsprojekt aufbauen mussten, erinnern Sie sich wahrscheinlich an den Abhängigkeits-Albtraum.
Für die Erkennung greifen Sie zu einem PyTorch-Repository; für 3D-Gesichtsmaschen ziehen Sie das umständliche MediaPipe herein; für die Segmentierung graben Sie ein Archiv mit einem fünf Jahre alten Modell aus; und um die Blickrichtung zu schätzen, schreiben Sie Ihre eigenen Workarounds auf Basis von rohen Gewichten von Google Drive. Das Ergebnis ist eine virtuelle Umgebung, die auf Dutzende von Gigabytes anschwillt, Bibliotheksversionen, die sich widersprechen, und Docker-Image-Builds, die zu einem Glücksspiel werden.
Ich bin kürzlich auf eine neue Bibliothek namens UniFace gestoßen, deren Autor beschlossen hat, diesem Zoo Ordnung zu verleihen. Das Projekt konsolidiert praktisch alle wesentlichen Computer-Vision-Aufgaben im Zusammenhang mit dem menschlichen Gesicht unter einer einzigen, minimalistischen Schnittstelle.
Was steckt in der Box
UniFace funktioniert wie ein Baukasten. Die gesamte Inferenzlogik läuft auf ONNX Runtime, sodass Sie nicht mit dem Kompilieren benutzerdefinierter C++-Erweiterungen oder dem Zusammenstellen wählerischer Abhängigkeiten kämpfen müssen.
Die Installation erfolgt in zwei Varianten:
pip install "uniface[cpu]" # Для обычных процессоров и Apple Silicon
pip install "uniface[gpu]" # Для машин с NVIDIA CUDA
Beim ersten Start lädt die Bibliothek automatisch die erforderlichen vortrainierten Gewichte herunter und verifiziert ihre Prüfsummen via SHA-256. Keine beschädigten Dateien oder manuelles Platzieren von Checkpoints in Ordnern.
Der Einstiegspunkt in die Bibliothek ist die FaceAnalyzer-Klasse. Standardmäßig führt sie grundlegende Operationen wie Erkennung, Ausrichtung und Embedding-Generierung durch. Wenn Sie zusätzliche Attribute benötigen, übergeben Sie einfach die erforderlichen Module in die Predictors-Liste.
import cv2
from uniface import FaceAnalyzer, FairFace
# Подключаем предиктор демографии
analyzer = FaceAnalyzer(predictors=[FairFace()])
# Анализируем изображение
image = cv2.imread("photo.jpg")
for face in analyzer.analyze(image):
print(face.bbox, face.sex, face.age_group, face.embedding.shape)
Solange Sie ein Modul nicht explizit verbinden, bleiben die entsprechenden Felder (emotion, quality, age_group) None. Dies spart Rechenressourcen und verhindert, dass der Speicher mit unnötigen Modellen verstopft wird.
Die wichtigsten Funktionen im Detail
UniFace deckt fünfzehn angewandte Aufgaben ab. Schauen wir uns an, wie sie in der Praxis aussehen.
1. Erkennung, Keypoints und Qualitätsbewertung
Die Bibliothek umfasst sechs Erkennungsarchitekturen: RetinaFace, SCRFD, CenterFace, BlazeFace sowie YOLOv5-Face- und YOLOv8-Face-Anpassungen. Sie können mühelos zwischen leichten Modellen für mobile Chips und schweren Netzwerken für komplexe Winkel wechseln.

Für die Landmarken-Platzierung sind sowohl klassische 68- und 106-Punkt-Annotationen (via PIPNet und 2d106det) als auch dichte 3D Face Mesh-Grid mit 468 und 478 Punkten verfügbar.


In realen Erkennungs-Pipelines müssen Sie oft unscharfe oder zu dunkle Frames herausfiltern. Um dies zu adressieren, hat UniFace die eDifFIQA-Qualitätsmetrik in vier Größen (T, S, M, L) hinzugefügt.

2. Porträt-Segmentierung und Matting
Wenn Sie eine Person vom Hintergrund trennen oder bestimmte Gesichtsregionen (Lippen, Augen, Haare, Haut) isolieren müssen, kommen Parsing-Modelle zum Einsatz:
- BiSeNet segmentiert das Gesicht in 19 Klassen.
- XSeg erstellt Masken sogar bei teilweiser Verdeckung des Gesichts durch fremde Objekte.
- MODNet führt nahtloses Porträt-Matting ohne Trimaps durch.



Das Matting-Ergebnis bleibt selbst bei komplexen Konturen wie losen Haaren sauber:


3. Kopfpose und Blickrichtung
Die Schätzung des Kopfdrehwinkels (Head Pose) verwendet eine sechsdimensionale Vektordarstellung der Rotation und gibt Pitch-, Yaw- und Roll-Winkel zurück.

Für die Benutzeraufmerksamkeitsverfolgung ist MobileGaze basierend auf ResNet und MobileNetV2 eingebaut. Es sagt den Blickvektor im Raum vorher, was für Fahreraufmerksamkeits-Überwachungsinterfaces oder Bildschirminteraktionsanalysen praktisch ist.

4. Attribute, Emotionen und Lebendigkeitserkennung
Attributmodule bestimmen Geschlecht, Altersgruppe und ethnische Zugehörigkeit über FairFace, erkennen Emotionen auf den AffectNet-7- und AffectNet-8-Skalen und erkennen das Vorhandensein von Brillen, Sonnenbrillen oder medizinischen Masken.




Für biometrische Systeme ist Spoofing-Schutz entscheidend. UniFace enthält MiniFASNet, das die Lebendigkeit bestimmt und Versuche blockiert, ein gedrucktes Foto oder eine Video-Wiedergabe von einem Smartphone-Bildschirm vorzulegen.

5. Vergleich, Suche und Anonymisierung
Für den Gesichtsabgleich bietet die Bibliothek moderne Feature-Extraktoren: ArcFace, AdaFace, EdgeFace, MobileFace und SphereFace. Um Gesichter in einer großen Datenbank zu suchen, ist ein Vektorindex basierend auf FAISS integriert.

Wenn die Aufgabe umgekehrt ist – persönliche Daten in Videos oder Fotos für die Veröffentlichung verbergen – gibt es ein Anonymisierungsmodul mit fünf Unschärfe-Algorithmen.

Worauf Sie vor der Produktion achten sollten
Obwohl der UniFace-Repository-Quellcode selbst unter einer sauberen MIT-Lizenz vertrieben wird, haben die vortrainierten Gewichte einiger Modelle (wie FairFace oder AffectNet) nicht-kommerzielle Einschränkungen ihrer ursprünglichen Autoren. Wenn Sie eine kommerzielle Veröffentlichung planen, lesen Sie unbedingt den Lizenzierungs-Dokumentationsbereich des Projekts und überprüfen Sie die ausgewählten Checkpoints.
Wer dieses Projekt nützlich finden wird
UniFace ist ideal für alle, die es leid sind, disparate CV-Bibliotheken zu einer einzigen Pipeline zusammenzukleben. Es ist ein fertiges Schweizer Taschenmesser für die schnelle Prototypisierung biometrischer Systeme, Videoanalysen, interaktiver Anwendungen und Content-Moderation-Dienste.
Der einfachste Weg zu beginnen ist die offizielle Dokumentation und interaktive Notebooks auf Kaggle, wo Sie jedes Modell in wenigen Minuten mit Ihren eigenen Bildern testen können.
Ähnliche Projekte