Funktionen/Haustier-Identifikation

Haustier-Identifikation

Deine zwei Hunde sind nicht länger ein gemeinsamer „Hund“-Eintrag, sondern Cocoa und Biscuit — angetrieben von drei Modellen zur Wiedererkennung von Haustieren, die wir selbst trainiert und als offene Gewichte veröffentlicht haben.

KIHaustiereDINOv2offene GewichteDokumentation
Die Gallery-Personenseite gefiltert auf Haustiere, mit sechs benannten Tieren — Cocoa, Misha, Biscuit, Nanook, Domino und Mochi — jeweils mit Pfoten-Abzeichen

Die Erkennung fand das Tier. Welches, konnte sie nicht sagen.

Die Haustier-Erkennung konnte die Tiere in deinen Fotos schon immer finden. Was sie nicht konnte: sie auseinanderhalten. Jeder Hund landete in einem gemeinsamen „Hund“-Eintrag — ein Haushalt mit zweien bekam also einen einzigen Topf mit beiden darin und keine Möglichkeit, nach nur einem zu fragen.

Die Haustier-Identifikation ist die zweite Hälfte. Die Erkennung findet das Tier im Foto, die Identifikation entscheidet, welches Tier es ist, und gibt jedem eine eigene Identität.

Wir haben die Modelle selbst trainiert

Gallery leiht sich kein Modell zur Wiedererkennung von Haustieren. Es liefert drei aus, die wir selbst gebaut haben: pet-recognition-small, -base und -large, veröffentlicht als offene Gewichte unter Apache-2.0 auf Hugging Face, in derselben open-noodle-Organisation wie unsere übrigen Modelle.

Die gesamte Pipeline, die sie hervorgebracht hat — Daten-Manifest, Trainingsrunner, Auswertung, ONNX-Export, Attribution — liegt im Gallery-Repository. Lade sie herunter, überprüfe unsere Zahlen oder trainiere sie selbst neu.

Eingefrorenes Backbone, trainierte Projektion — und warum der naheliegende Ansatz verlor

Jedes Modell besteht aus einem eingefrorenen DINOv2-Backbone plus einer von uns trainierten linearen Projektion auf ein 512-dimensionales Embedding. Die L2-normalisierte Ausgabe der Projektion ist das Embedding, und zwei Detektionen zeigen dasselbe Tier, wenn diese Embeddings im Kosinusabstand nah genug beieinander liegen.

Das gesamte Backbone feinzutunen war unser erster Versuch — und es war schlechter. Bei jeder getesteten Lernrate wurden Hunde ungenauer: Das Modell merkte sich die Trainingsidentitäten und verlernte die allgemeinen visuellen Merkmale, die DINOv2 bereits hatte. Das Backbone einzufrieren und nur die Projektion zu trainieren schlug das Fine-Tuning deutlich — und schlug auch das unveränderte Backbone bei beiden Arten, was der Beleg dafür ist, dass das Training überhaupt etwas gebracht hat.

Diese Entscheidung zahlt sich doppelt aus. Weil sich das Backbone nie ändert, ändern sich auch seine Merkmale über die Trainingsbilder nie: Sie werden einmal extrahiert und zwischengespeichert, eine neue Projektion trainiert danach in Minuten statt Stunden. Alle drei Modelle wurden lokal auf einem Laptop trainiert, ohne Rechenkosten — und genau deshalb kann sie jede und jeder reproduzieren.

Trainiert mit offenen Daten, gemessen an Tieren, die es nie gesehen hat

Die Hunde stammen aus Dogs-World — 313.688 Fotos von 126.550 einzelnen Hunden, veröffentlicht unter CC0. Die Katzen kommen aus Cat Individual Images, 13.536 Fotos unter CC BY. DogFaceNet bleibt vollständig als reiner Auswertungsdatensatz zurück, mit dem nie trainiert wird. Die Attribution für alle drei liegt den Gewichten bei.

Die Aufteilung in Training und Test erfolgt nach Individuum, nicht nach Foto. Andere Bilder desselben Hundes zurückzuhalten würde schöne Zahlen liefern und nichts aussagen — jede Identität im Testset ist deshalb eine, die das Modell nie gesehen hat. Diese Testmengen sind groß — 16.469 Hunde- und 102 Katzenidentitäten — und jedes Modell wird über alle davon bewertet, nicht über eine bequeme Stichprobe.

  • smallopen-noodle/pet-recognition-small — DINOv2-S, ~89 MB Download. Top-1-Genauigkeit 0,535 bei unbekannten Hunden, 0,913 bei unbekannten Katzen.
  • baseopen-noodle/pet-recognition-base — DINOv2-B, ~348 MB. 0,612 bei Hunden, 0,916 bei Katzen. Die Voreinstellung in Gallery.
  • largeopen-noodle/pet-recognition-large — DINOv2-L, ~1,2 GB. 0,672 bei Hunden, 0,915 bei Katzen.

Alle drei erzeugen dasselbe 512-dimensionale Embedding, das Modell ist also eine Einstellung und keine Festlegung. Katzen schneiden bei jeder Größe etwa gleich ab, eine überwiegend katzenlastige Bibliothek gewinnt durch die 1,2-GB-Datei also fast nichts; bei Hunden verdienen sich die größeren Backbones ihr Gewicht.

Eine Zahl hat sich bewusst in die falsche Richtung bewegt. Eine frühe Auswertung bewertete eine Stichprobe von ~600 Identitäten und fiel rund 1,5-mal zu optimistisch aus; die vollständige Neubewertung verschob die Equal-Error-Rate des base-Modells von 0,039 auf 0,047. Veröffentlicht ist der schlechtere Wert.

Haustiere werden zu Personen

Identifizierte Tiere erscheinen mit einem Pfoten-Abzeichen auf der Personenseite, und alles, was du mit einer Person machst, funktioniert auch mit ihnen. Gib einem unbenannten Tier einen Namen. Führe zwei Einträge zusammen, wenn dieselbe Katze zweimal geclustert wurde. Blende eines aus, das du lieber nicht sehen willst. Öffne ein Tier und durchstöbere jedes Foto, auf dem es vorkommt.

Sie wandern auch genauso wie Menschen: Ein Tier auf einem Foto, das du zu einem gemeinsamen Space beigesteuert hast, taucht auf der Personenseite dieses Space auf — nach denselben Berechtigungsregeln wie alle anderen. Und weil sich die Personenseite jetzt auf Alle, Personen oder Haustiere filtern lässt, bleibt eine Bibliothek mit viel von beidem lesbar.

Haustiere sind außerdem von der Mindestfoto-Schwelle ausgenommen, die verrauschte Gesichtscluster von der Personenseite fernhält. Diese Schranke verlangt drei Fotos, bevor ein Gesicht gezeigt wird; ein einmal fotografiertes Tier ist aber unverkennbar dieses Tier und bekommt daher ab dem ersten Foto einen eigenen Eintrag.

Hunde und Katzen — und warum nicht der Rest

Nur Hunde und Katzen werden als Individuen identifiziert — und seit diesem Release sind sie die einzigen beiden Arten, die die Erkennung überhaupt festhält. Vögel, Pferde, Schafe und Kühe landeten früher in einem gemeinsamen Arteintrag, den die Personenseite nie auflistete; das waren reine Schreibzeilen, also schreibt Gallery sie nicht mehr.

Die Grenze liegt bei den Daten, nicht am Willen. Für Pferde, Schafe oder Vögel gibt es keinen Datensatz mit individuellen Identitäten zum Trainieren — nichts, woran sich ein Vogel von einem anderen unterscheiden ließe. Rinder sind die einzige Ausnahme mit sauberen CC-BY-Daten und blieben nur deshalb außen vor, weil eine Kuh nicht das ist, was irgendwer mit „Haustier“ meint.

Ehrlich zum Einschalten

Die Haustier-Identifikation ist standardmäßig aus, und die Haustier-Erkennung ebenfalls — ohne laufende Erkennung hat die Identifikation nichts, womit sie arbeiten könnte. Beide schaltest du in den Einstellungen für maschinelles Lernen ein.

Das Einschalten gilt für neu hochgeladene Fotos. Deine bestehende Bibliothek holst du nur herein, indem du den Job „Haustier-Identifikation“ zurücksetzt — und das ist wirklich destruktiv: Es löscht jede Tieridentität und jeden vergebenen Namen und baut alles neu auf. Besser einmal früh als nachdem du zwanzig Tiere benannt hast. Ein Wechsel zwischen den drei Modellen macht dasselbe, aus demselben Grund: Jedes Modell hat seinen eigenen Embedding-Raum, und Embeddings des einen sind für das andere bedeutungslos.

Dieses Release hat außerdem den Detektor darunter durch RF-DETR ersetzt, was den Art-Recall von 84,8 % auf 98,1 % gehoben und dem gelegentlichen „Hund als Bär“ ein Ende gesetzt hat — die Identifikation arbeitet also mit deutlich saubereren Detektionen als noch eine Version zuvor.

Die vollständige Dokumentation auf GitHub lesen

Bereit, Gallery auf deinem eigenen Server zu betreiben? In wenigen Minuten installiert, Demo bleibt zum kurzen Testen.