Je twee honden zijn niet langer één gedeelde „hond”-vermelding maar Cocoa en Biscuit — draaiend op drie modellen voor her-identificatie van huisdieren die we zelf hebben getraind en als open gewichten hebben gepubliceerd.
De detectie vond het dier. Wélk dier kon ze niet zeggen.
Huisdierherkenning kon de dieren in je foto's altijd al vinden. Wat ze niet kon, was ze uit elkaar houden: elke hond in de bibliotheek belandde in één gedeelde „hond”-vermelding, dus een huishouden met twee honden kreeg één bak met allebei erin en geen manier om alleen om de ene te vragen.
Huisdieridentificatie is de tweede helft. De detectie vindt het dier op de foto; de identificatie bepaalt welk dier het is en geeft elk dier een eigen identiteit.
We hebben de modellen zelf getraind
Gallery leent geen model voor her-identificatie van huisdieren. Het levert er drie die we zelf hebben gebouwd: pet-recognition-small, -base en -large, gepubliceerd als open gewichten onder Apache-2.0 op Hugging Face, in dezelfde open-noodle-organisatie als onze andere modellen.
De hele pijplijn die ze heeft voortgebracht — datamanifest, trainingsrunner, evaluatie, ONNX-export, attributie — staat in de Gallery-repository. Download ze, controleer onze cijfers, of train ze zelf opnieuw.
Een bevroren backbone en een getrainde projectie — en waarom de voor de hand liggende aanpak verloor
Elk model is een bevroren DINOv2-backbone plus een door ons getrainde lineaire projectie naar een embedding van 512 dimensies. De L2-genormaliseerde uitvoer van de projectie is de embedding, en twee detecties zijn hetzelfde dier wanneer die embeddings dicht genoeg bij elkaar liggen in cosinusafstand.
De hele backbone fijnafstemmen was het eerste wat we probeerden, en het pakte slechter uit. Bij elke geteste leersnelheid werden honden minder nauwkeurig: het model onthield de trainingsidentiteiten en vergat de algemene visuele kenmerken die DINOv2 al had. De backbone bevriezen en alleen de projectie trainen versloeg de fijnafstemming ruimschoots — en versloeg ook de onaangeroerde backbone bij beide soorten, en dat is het cijfer dat bewijst dat het trainen überhaupt iets deed.
Die keuze betaalt zich twee keer terug. Omdat de backbone nooit verandert, veranderen zijn kenmerken over de trainingsbeelden ook nooit: ze worden één keer uitgelezen en gecachet, waarna een nieuwe projectie in minuten traint in plaats van uren. Alle drie de modellen zijn lokaal op een laptop getraind, zonder rekenkosten — en juist daarom kan iedereen ze reproduceren.
Getraind op open data, gemeten op dieren die het nooit zag
De honden komen uit Dogs-World — 313.688 foto's van 126.550 individuele honden, uitgebracht onder CC0. De katten komen uit Cat Individual Images, 13.536 foto's onder CC BY. DogFaceNet wordt volledig achtergehouden als evaluatieset waarop nooit wordt getraind. De attributie voor alle drie gaat met de gewichten mee.
De scheiding tussen trainen en testen gaat per individu, niet per foto. Andere plaatjes van dezelfde hond achterhouden levert mooie cijfers op en zegt niets, dus elke identiteit in de testset is er één die het model nooit heeft gezien. Die sets zijn groot — 16.469 hondenidentiteiten en 102 kattenidentiteiten — en elk model wordt over het geheel ervan gescoord, niet over een handige steekproef.
smallopen-noodle/pet-recognition-small — DINOv2-S, ~89 MB download. Top-1-nauwkeurigheid 0,535 op onbekende honden, 0,913 op onbekende katten.
baseopen-noodle/pet-recognition-base — DINOv2-B, ~348 MB. 0,612 op honden, 0,916 op katten. De standaard van Gallery.
largeopen-noodle/pet-recognition-large — DINOv2-L, ~1,2 GB. 0,672 op honden, 0,915 op katten.
Alle drie leveren dezelfde embedding van 512 dimensies, dus het model is een instelling en geen verbintenis. Katten scoren bij elke maat ongeveer gelijk, dus een overwegend kattenrijke bibliotheek wint vrijwel niets met de download van 1,2 GB; bij honden verdienen de grotere backbones hun gewicht.
Eén cijfer bewoog bewust de verkeerde kant op. Een vroege evaluatie scoorde een steekproef van ~600 identiteiten en bleek ruwweg 1,5 keer te optimistisch; herbeoordeling op de volledige set bracht de equal-error rate van het base-model van 0,039 naar 0,047. Het cijfer dat we publiceren is het slechtere.
Huisdieren worden personen
Geïdentificeerde huisdieren verschijnen met een pootbadge op de Personen-pagina, en alles wat je al met een persoon doet, werkt ook op hen. Geef een naamloos dier een naam. Voeg twee vermeldingen samen wanneer dezelfde kat twee keer is geclusterd. Verberg er een die je liever niet ziet. Open een dier om elke foto te doorbladeren waarop het staat.
Ze reizen ook net als personen: een dier op een foto die je hebt bijgedragen aan een Shared Space verschijnt op de Personen-pagina van die space, onder dezelfde rechtenregels als iedereen. En omdat de Personen-pagina nu te filteren is op Alles, Personen of Huisdieren, blijft een bibliotheek met veel van beide leesbaar.
Huisdieren zijn bovendien vrijgesteld van de minimumdrempel voor foto's die rommelige gezichtsclusters van de Personen-pagina weghoudt. Die drempel vraagt om drie foto's voordat een gezicht het tonen waard is; een dier dat één keer is gefotografeerd is nog altijd onmiskenbaar dát dier, dus het krijgt vanaf de eerste foto een eigen vermelding.
Honden en katten, en waarom de rest niet
Alleen honden en katten worden als individuen herkend — en sinds deze release zijn zij de enige twee soorten die de detectie überhaupt vastlegt. Vogels, paarden, schapen en koeien belandden vroeger in een gedeelde vermelding per soort die de Personen-pagina nooit toonde; dat waren regels die alleen werden geschreven, dus Gallery schrijft ze niet meer.
De grens ligt bij de data, niet bij de wil. Er bestaat geen dataset met individuele identiteiten voor paarden, schapen of vogels om op te trainen — niets waarmee je de ene vogel van de andere kunt onderscheiden. Runderen zijn de ene uitzondering, met schone CC-BY-data beschikbaar, en bleven alleen buiten beeld omdat een koe niet is wat iemand met „huisdier” bedoelt.
Aanzetten, eerlijk gezegd
Huisdieridentificatie staat standaard uit, en huisdierherkenning ook — zonder draaiende detectie heeft de identificatie niets om mee te werken. Beide zet je aan bij de instellingen voor machine learning.
Inschakelen geldt voor nieuw geüploade foto's. Je bestaande bibliotheek meenemen betekent de taak Huisdieridentificatie resetten, en dat is werkelijk destructief: het verwijdert elke dieridentiteit en elke naam die je hebt gegeven en bouwt alles opnieuw op. Doe het liever één keer vroeg dan nadat je twintig dieren een naam hebt gegeven. Wisselen tussen de drie modellen doet hetzelfde, om dezelfde reden: elk model heeft zijn eigen embeddingruimte, en embeddings van het ene zijn betekenisloos voor het andere.
Deze release heeft ook de detector eronder vervangen door RF-DETR, wat de recall per soort van 84,8 % naar 98,1 % tilde en een einde maakte aan honden die af en toe als beren werden gemeld — de identificatie werkt dus met veel schonere detecties dan een versie geleden.