Gesichtserkennung ist das Eingangstor der meisten Computer-Vision-Pipelines. Jeder Videoanruf, jede Fotogalerie und jeder Sicherheitsfeed hängt davon ab, menschliche Gesichter zu erkennen, bevor etwas anderes passieren kann. Doch die Wahl des Modells erzwingt meist einen unbefriedigenden Kompromiss. Schwere Netzwerke bieten Genauigkeit, erfordern aber teure GPUs und Rack-montierte Kühlung. Kleinere Modelle laufen auf bescheidener Hardware, scheitern aber oft an kleinen Gesichtern oder hochauflösenden Feeds. Das YuNet-Modell aus dem OpenCV Zoo durchbricht dieses Muster. Ich habe Zeit damit verbracht, es über verschiedene Skalierungen hinweg zu benchmarken, um zu sehen, ob es einen Platz in echten Projekten verdient oder nur auf dem Papier gut aussieht.
Warum YuNet einen genaueren Blick verdient
YuNet ist keine Forschungskuriosität. Es ist Teil des OpenCV Zoo, einer Sammlung vorab trainierter Modelle, die für das OpenCV DNN-Modul optimiert sind. Die spezifische Variante, die ich getestet habe, nutzt die INT8-Quantisierung. Das bedeutet, dass seine Gewichte und Aktivierungen auf 8-Bit-Ganzzahlen statt der üblichen 32-Bit-Fließkommazahlen komprimiert werden. Das ist keine unbedeutende technische Randnotiz. INT8 reduziert die Speicherbandbreite, verringert den Cache-Druck und ermöglicht es modernen CPUs, die Inferenz mühelos zu bewältigen. Für jeden, der auf einem Laptop, einem Edge-Gerät oder einem Server ohne dedizierte Grafikkarte arbeitet, ist diese Effizienz der Unterschied zwischen einer flüssigen Pipeline und einer Diashow.
Die Architektur selbst ist von Grund auf leichtgewichtig konzipiert. Sie verzichtet auf den Ballast riesiger Backbones und konzentriert sich auf die einzige Aufgabe, Gesichter zu lokalisieren. Diese Disziplin zahlt sich aus, wenn man die Erkennung in eine größere Anwendung integrieren muss, bei der CPU- und Akku-Ressourcen mit Tracking, Erkennung oder Videokodierung geteilt werden.
Das Setup
Alle Tests wurden auf einem Mac Studio mit einem Apple M4 Max Chip durchgeführt. Die Modelldatei war der INT8-quantisierte YuNet-ONNX-Build aus dem OpenCV-Zoo-Repository. Ich habe die Inferenzgeschwindigkeit zuerst an einem 1280x720-Bild gemessen und dann die Anzahl der erkannten Gesichter über vier verschiedene Eingangsauflösungen verglichen, um zu verstehen, wie sich die Skalierung auf die Ergebnisse auswirkt.
Wenn Sie diese Zahlen auf Ihrem eigenen Rechner überprüfen möchten, ist der Prozess vollständig reproduzierbar. Führen Sie die folgenden Befehle aus, um das Sparse-Repository abzurufen und den Benchmark auszuführen:
git clone --depth 1 --filter=blob:none --sparse https://github.com/kiarina/labs.git
cd labs
git sparse-checkout set .gitignore .mise/tasks Makefile mise.toml 2026/07/08/yunet-face-detection
mise -C 2026/07/08/yunet-face-detection run
Der Sparse-Checkout hält den Download klein, und der mise-Task-Runner verwaltet die Abhängigkeiten im Hintergrund. Sie müssen sich nicht mit Python-Umgebungen oder manuellen Paketinstallationen herumschlagen.
Geschwindigkeit, die konstant bleibt
Bei einem 1280x720-Bild lag die durchschnittliche Inferenzzeit des INT8-YuNet-Modells bei 9,21 Millisekunden. Der schnellste Durchlauf lag bei 8,03 ms, während der langsamste 10,47 ms erreichte. Das ist ein bemerkenswert enger Bereich. Weniger als zweieinhalb Millisekunden trennen die beste und die schlechteste Zeit.
In der Praxis ist diese Konsistenz wichtiger als bloßes Angeben. Echtzeitanwendungen benötigen nicht nur eine niedrige durchschnittliche Latenz, sondern eine vorhersagbare Latenz. Ein Modell, das manchmal 50 ms benötigt, verursacht sichtbares Ruckeln im Webcam-Feed. YuNet bleibt konstant. Man kann sich darauf verlassen, dass ein Frame abgeschlossen ist, bevor der nächste eintrifft, was die Planung des restlichen Pipelines erheblich vereinfacht.
Skalierungsabweichungen enthüllen die wahre Geschichte
Reine Geschwindigkeit bedeutet wenig, wenn das Modell die Hälfte der Gesichter in einer Szene übersieht. Um dies zu testen, habe ich dasselbe Quellmaterial mit YuNet in vier verschiedenen Auflösungen verarbeitet. Die Ergebnisse erzählen eine klare Geschichte:
- 320 x 180: 6 Gesichter erkannt
- 640 x 360: 26 Gesichter erkannt
- 1280 x 720: 38 Gesichter erkannt
- 2560 x 1440: 52 Gesichter erkannt
Der Sprung ist dramatisch. Bei 320 x 180 werden nur die größten, am nächsten befindlichen Gesichter registriert. Erhöht man die Auflösung auf 640 x 360, vervierfacht sich die Anzahl. Bei vollen 1440p findet YuNet mehr als achtmal so viele Gesichter wie bei der niedrigsten Auflösung.
Dies geschieht, weil Downsampling Details schneller zerstört, als man intuitiv vermuten würde. Ein Gesicht, das in einem 1440p-Frame eine moderate Fläche einnimmt, kann bei 360p zu einem Fleck von nur fünf mal fünf Pixeln schrumpfen. Sobald die Gesichtsmerkmale unter das receptive Feld des Modells fallen, werden sie zu unsichtbarem Rauschen. Augen verschmelzen mit den Augenbrauen. Nasen verschwinden. YuNet hat nichts mehr, woran es sich festhalten kann.
Das praktische Ergebnis ist wichtig zu beachten. Wenn Ihre Kamera eine Weitwinkelansicht eines Klassenzimmers, eines Konferenzraums oder einer Straßenecke aufnimmt, werden entfernte Gesichter nicht erscheinen, es sei denn, Sie geben dem Modell genügend Pixel. Bei der Auflösung geht es hier nicht nur um die Bildqualität. Sie ist ein direkter Hebel für den Recall.
Die Resize-Strategie, die Sie tatsächlich benötigen
YuNet ist schnell genug, dass Sie Ihre Eingabe nicht aus Gewohnheit auf 320 x 240 herunterschrauben müssen. Auf dem M4 Max läuft sogar 2560 x 1440 ohne dedizierte GPU. Das verändert die Art und Weise, wie Sie eine Pipeline entwerfen sollten.
Anstatt jeden Frame durch eine winzige, feste Größe zu pressen, wählen Sie Ihre Eingangsauflösung basierend darauf, wonach Sie suchen. Wenn es Ihnen nur um die Person direkt vor der Kamera geht, reichen 720p oder sogar 640p völlig aus. Wenn Sie jeden Teilnehmer in einer großen Halle erfassen müssen, füttern Sie das Modell mit einem hochauflösenden Ausschnitt oder dem vollständigen nativen Frame. Da YuNet leichtgewichtig ist, haben Sie den Spielraum, diese Entscheidung zu treffen. Sie sind nicht auf ein einziges Preset festgelegt, nur um eine Verzögerung von 200 ms zu vermeiden.
Eine Einschränkung bleibt jedoch bestehen. Das Modell hängt nach wie vor von der Größe des Gesichts im Verhältnis zum Eingabetensor ab. Es gibt hier keine magische Skaleninvarianz. Kleine Gesichter bleiben unsichtbar, sofern sie nicht genügend Pixel einnehmen. Die Lösung ist mechanisch: Vergrößern Sie Ihr Quellbild vor der Inferenz, wenn Sie nach entfernten Objekten suchen, und mappen Sie die resultierenden Bounding Boxes anschließend zurück auf die ursprünglichen Koordinaten. YuNet gibt Ihnen das Geschwindigkeitsbudget, um diesen Schritt zu ermöglichen.
Wo dies in Ihren Stack passt
YuNet ist keine Lösung für jede erdenkliche Gesichtserkennungsaufgabe. Starke Verdeckungen, extreme Profilansichten oder die Extraktion von 3D-Meshes liegen außerhalb seines Bereichs. Aber für die Standardaufgaben – das Lokalisieren von Gesichtern in Fotos und Videostreams – besetzt es einen Sweet Spot. Echtzeit-Webcam-Apps, automatisierte Tools zur Fotoselektion und bescheidene Embedded-Systeme profitieren alle von einem Detektor, der auf Standard-CPUs schnell läuft.
Das INT8-ONNX-Format macht die Bereitstellung zudem mühelos. Sie müssen PyTorch oder TensorFlow nicht auf dem Zielgerät installieren. Das DNN-Modul von OpenCV lädt das Modell direkt, was Ihre Binärdatei klein und Ihren Abhängigkeitsbaum flach hält.
Das Fazit
YuNet beweist, dass Gesichtserkennung keine Industrie-Hardware oder überladene Frameworks erfordert. Die Zahlen sprechen eine klare Sprache: weniger als zehn Millisekunden für einen 720p-Frame und ein direkter, vorhersehbarer Anstieg der Erkennungsrate mit steigender Auflösung. Sie können wählen, ob Sie maximale Geschwindigkeit bei moderater Auflösung oder eine breitere Abdeckung bei höherer Skalierung wünschen, und das Modell wird Sie für diese Entscheidung nicht bestrafen.
Wenn Sie etwas entwickeln, das mit realen Bildern arbeitet, führen Sie die oben genannten Reproduktionsschritte auf Ihrer eigenen Hardware aus. Testen Sie es mit Ihrem Videomaterial. Passen Sie dann Ihre Resize-Logik so an, dass sie auf die Gesichter abgestimmt ist, die Sie tatsächlich finden müssen. Geschwindigkeit ist nur dann nützlich, wenn man sie gezielt einsetzen kann. YuNet gibt Ihnen sowohl die Geschwindigkeit als auch die Kontrolle.
