Gesichtserkennung
Überblick
Immich erkennt Gesichter in Ihren Fotos und Videos und gruppiert sie zu Personen. Sie können diesen Personen dann Namen zuweisen und sie durchsuchen.
Die Liste der Personen wird auf der Entdecken-Seite angezeigt.

Beim Klick auf eine Person wird eine Liste der Assets angezeigt, die deren Gesicht enthalten.

Auch die Detailansicht eines Assets zeigt die erkannten Gesichter im Asset.

Aktionen
Zusätzliche Aktionen, die Sie durchführen können, umfassen:
- Ändern des Titelbilds der Person
- Festlegen des Geburtsdatums einer Person
- Zusammenführen von zwei oder mehr erkannten Gesichtern zu einer Person
- Ausblenden der Gesichter einer Person auf der Entdecken-Seite und in der Detailansicht
- Zuweisen eines nicht erkannten Gesichts zu einer Person
Dies kann über die Navigationsleiste abgerufen werden, wenn Sie die Detailansicht einer Person öffnen.

Wie die Gesichtserkennung funktioniert
Die Gesichtserkennung sendet das generierte Vorschaubild zum maschinellen Lernservice zur Verarbeitung. Der Service überprüft, ob das relevante Modell heruntergeladen wurde, und lädt es herunter, falls nicht. Das Bild wird dekodiert, vorverarbeitet und an das Gesichtserkennungsmodell weitergeleitet (mit Hardware-Beschleunigung, falls konfiguriert). Die Begrenzungsrahmen und Bewertungen, die aus diesem Modell stammen, werden verwendet, um das Bild erneut zuzuschneiden und vorzuverarbeiten, um es einem Gesichtserkennungsmodell zu übergeben (ebenfalls beschleunigt, falls konfiguriert). Die Einbettungen des Erkennungsmodells zusammen mit den Begrenzungsrahmen und Bewertungen aus dem Gesichtserkennungsmodell werden dann zurück an den Server geschickt, um in die Datenbank aufgenommen zu werden. Insbesondere die Einbettungen werden indexiert, damit sie bei der Gesichtserkennung schnell durchsucht werden können.
Funktionsweise der Gesichtserkennung
Der von uns verwendete Gesichtserkennungsalgorithmus basiert auf DBSCAN, einem beliebten Clustering-Algorithmus. Im Wesentlichen behandelt er jedes erkannte Gesicht als Punkt in einem Graphen und gruppiert Punkte, die nahe beieinander liegen.
Ein wichtiges Konzept ist, ob etwas ein Kernpunkt ist. Ein Kernpunkt hat eine Mindestanzahl von Punkten um sich herum innerhalb einer bestimmten Entfernung. Ein Nicht-Kernpunkt kann nur einem Cluster zugewiesen werden, wenn er einen Kernpunkt erreichen kann; ein Nicht-Kernpunkt kann den Cluster nicht erweitern, selbst wenn er Teil davon ist. In Immich steuert die Einstellung Mindestanzahl erkannter Gesichter die Schwelle, die als Kernpunkt betrachtet wird.
Für jedes Gesicht schaut der Algorithmus, ob sich in einer bestimmten Entfernung andere Gesichter befinden. Gesichter innerhalb dieser Entfernung gelten als ähnlich, sodass dann überprüft wird, ob eines dieser Gesichter mit einer Person assoziiert ist.
Wenn es eine bestehende Person gibt, ordnet er dem zu verarbeitenden Gesicht die Person des ähnlichsten Gesichts zu.
Gibt es keine, muss der Algorithmus aus dem DBSCAN-Algorithmus ableiten: ob das Gesicht ein Kernpunkt ist. Wenn es eine bestimmte Anzahl ähnlicher Gesichter gibt (standardmäßig 3, einschließlich des betreffenden Gesichts), ist dieses Gesicht ein Kernpunkt. Für dieses Gesicht wird eine neue Person erstellt und das Gesicht wird ihr zugewiesen. Wenn andere Gesichter verarbeitet werden und sie diesem Gesicht ähnlich sind, erkennen sie, dass es mit einer Person assoziiert ist, und können dieser Person zugeordnet werden.
Wenn es jedoch nicht genügend ähnliche Gesichter gibt, wird keine neue Person erstellt. Stattdessen wartet das Gesicht darauf, dass alle anderen Gesichter verarbeitet werden, um herauszufinden, ob zuvor nicht zugeordnete Gesichter jetzt zugeordnet sind. Wenn ja, wird das Gesicht dieser Person zugewiesen. Ist dies nicht der Fall, wird dieses Gesicht als Ausreißer betrachtet, z. B. als fremde Person im Hintergrund eines Bildes.
Der Algorithmus unterscheidet sich in einigen Details gegenüber DBSCAN:
- DBSCAN kennt kein Konzept inkrementeller Clustering: Es gruppiert alle Punkte auf einmal. Im Gegensatz dazu muss die Gesichtserkennung sich weiterentwickeln, wenn mehr Assets hinzugefügt werden, ohne jedes Mal alles neu zu gruppieren.
- Der oben beschriebene Algorithmus funktioniert innerhalb einer Gruppe von wartenden Assets. Sobald diese Gesichter verarbeitet sind und neue Gesichter erkannt werden, unterscheidet sich das Verhalten von traditionellem DBSCAN, da die aus dem vorherigen Durchgang generierten Cluster (Personen) beibehalten werden.
- Die Gesichtserkennung wartet aus diesem Grund nach Möglichkeit darauf, dass die Gesichtsdetektion und Vorschaubilder vollständig generiert wurden: Je größer die Menge der Gesichter in der Warteschlange, desto besser die Ergebnisse.
- Eine erneute Ausführung der Gesichtserkennung für alle Assets im Nachhinein funktioniert jedoch wie DBSCAN.
- Der oben beschriebene Algorithmus funktioniert innerhalb einer Gruppe von wartenden Assets. Sobald diese Gesichter verarbeitet sind und neue Gesichter erkannt werden, unterscheidet sich das Verhalten von traditionellem DBSCAN, da die aus dem vorherigen Durchgang generierten Cluster (Personen) beibehalten werden.
- DBSCAN ist für rangebasierte Suchen ausgelegt (d. h. Punkte innerhalb einer Entfernung), aber hochdimensionale Vektorindizes sind normalerweise für die Suche nach den nächsten K Ergebnissen optimiert. Der Erkennungsalgorithmus versucht aus Leistungsgründen nicht, alle ähnlichen Gesichter innerhalb einer Entfernung zu finden. Stattdessen sucht er nach einer kleinen Anzahl von Treffern für jedes Gesicht. Das Endergebnis sollte sehr ähnlich, wenn nicht identisch sein, jedoch möglicherweise mit unterschiedlichen Leistungseigenschaften.
- Aus diesem Grund wird ein Teil des Erkennungsprozesses während eines nächtlichen Jobs durchgeführt, um sicherzustellen, dass unzugeordnete Gesichter mit möglichen Treffern erkannt werden können.
Wenn Sie Ihre Assets nicht auf einmal importiert haben oder wenn der Server Jobs schneller verarbeiten konnte, als Sie diese hochgeladen haben, ist eine suboptimale Clusterbildung möglich. Wenn Sie noch keine große Anpassung an die aktuellen Ergebnisse vorgenommen haben, könnte es sich lohnen, die Gesichtserkennung für alle Assets erneut auszuführen, um den besten Ausgangspunkt zu erhalten. Wenn es dafür zu spät ist, können Sie auch eine Auswahl nicht zugeordneter Gesichter manuell zuweisen und Fehlende zur Gesichtserkennung in die Warteschlange stellen, um das Lernen zu unterstützen und automatisch weitere Gesichter zuzuweisen.
Konfiguration
Durch Navigation zu Administration > Einstellungen > Machine Learning Einstellungen > Gesichtserkennung werden die verfügbaren Optionen angezeigt.
Es ist besser, die Parameter hier nur anzupassen statt sie auf etwas sehr Unterschiedliches zu setzen, es sei denn, Sie sind bereit, verschiedene Optionen zu testen. Wenn ein Parameter streng eingestellt werden muss, kann das Entspannen anderer Einstellungen eine gute Kompensationsoption sein und umgekehrt.
In diesem Leitfaden erfahren Sie, wie Sie die Ergebnisse optimieren können.
Gesichtserkennungsmodell
Es stehen einige unterschiedliche Modelle zur Verfügung; das Standardmodell gilt normalerweise als das beste. Auf stärker eingeschränkten Systemen, bei denen das Standardmodell zu intensiv ist, können Sie stattdessen ein kleineres Modell wählen.
Mindestüberprüfungswert
Diese Einstellung beeinflusst, ob ein Ergebnis des Gesichtserkennungsmodells als falsch positiv herausgefiltert wird. Es mag verlockend sein, dies niedrig einzustellen, um mehr Gesichter zu erkennen, aber es kann zu falsch positiven Ergebnissen führen, die schwer zu handhaben sind und die Gesichtserkennung beeinträchtigen können. Es wird dringend empfohlen, diesen Wert nicht unter 0,5 zu setzen. Ein sehr hoher Wert wie 0,9 wird ebenfalls nicht empfohlen: Die Standardeinstellung ist bereits auf Präzision ausgelegt, sodass eine so hohe Schwelle viele unerkannte Gesichter zur Folge hat.
Nach dem Ändern dieser Einstellung wird sie nur auf neue Jobs zur Gesichtserkennung angewendet. Um die neue Einstellung auf alle Assets anzuwenden, müssen Sie die Gesichtserkennung für alle Assets erneut ausführen.
Maximale Erkennungsentfernung
Die im Abschnitt „Funktionsweise der Gesichtserkennung“ beschriebene Entfernungsschwelle. Die Standardeinstellung funktioniert für die meisten Menschen gut, aber es könnte sich lohnen, sie zu verringern, wenn die Bibliothek Zwillinge oder anderweitig sehr ähnlich aussehende Personen enthält. Eine zu niedrige Schwelle bedeutet lediglich, dass nach der Gesichtserkennung Duplikate von Personen zusammengeführt werden müssen, während eine zu hohe Schwelle zu nicht rettbaren Ergebnissen führen kann. Es wird dringend empfohlen, diesen Wert nicht unter 0,3 oder über 0,7 zu setzen.
Mindestanzahl erkannter Gesichter
Die im Abschnitt „Funktionsweise der Gesichtserkennung“ beschriebene Kernpunktschwelle. Diese Einstellung hat einige Auswirkungen. Erstens wirkt sie sich sofort so aus, dass Personen mit weniger Gesichtern als dieser Schwelle von der Ansicht ausgeblendet werden. Zweitens macht sie das Clustering robuster, da sie verhindert, dass lose verbundene Gesichter miteinander verknüpft werden, indem eine gewisse Dichte erforderlich ist.
Das Erhöhen dieser Einstellung ist sinnvoll, wenn Sie die Erkennungsentfernung erhöhen oder den Mindestüberprüfungswert senken. Eine Einstellung von 1 deaktiviert das Konzept der Kernpunkte effektiv, kann jedoch eine Option sein, wenn Sie einen eher handlungsorientierten Ansatz bevorzugen.