Hoe machinelearning-indexering van Immich privéfoto’s doorzoekbaar maakt

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

Immich maakt foto’s doorzoekbaar door verwerkte afbeeldingen om te zetten in opgeslagen representaties die met zoekopdrachten kunnen worden vergeleken en op toegangsrechten kunnen worden gefilterd.

Een ouder herinnert zich een rode fiets op een vakantiefoto, maar niet de bestandsnaam of datum, en doorzoekt de thuismediaserver in gewone taal. Een bruikbaar resultaat vereist meer dan de afbeelding op schijf bewaren. De visuele representatie, databasezoekopdracht en machtigingsscope moeten samenwerken, terwijl het gekozen model bepaalt welke overeenkomsten de zoekopdracht kan herkennen.

Een afbeelding voorbereiden is niet hetzelfde als een model trainen

Bij het importeren van een bibliotheek wordt doorgaans inferentie uitgevoerd met een bestaand model; er wordt geen nieuw model voor algemene doeleinden getraind op de familieverzameling. De server bereidt bruikbare afbeeldingsinvoer voor, vraagt analyse aan en koppelt de geretourneerde informatie aan een item. Dit onderscheid verklaart waarom een grote eerste import rekenkracht verbruikt zonder dat er een trainingsproject voor het huishouden nodig is.

Lokale visuele indexering stelt een gehoste fotoapplicatie in staat om zoekrepresentaties op te bouwen voordat een gebruiker een zoekopdracht invoert. De eerste verwerking kost tijd, omdat elke geschikte afbeelding nog steeds moet worden verwerkt. Zodra de representaties bestaan, kan een latere zoekopdracht deze hergebruiken in plaats van de volledige afbeeldingsanalyse opnieuw op elke foto uit te voeren.

De grens voor gereedheid ligt dus na het uploaden. Er kan al een leesbaar origineel bestaan voordat de visuele representatie beschikbaar is. Behandel de eerste indexering als een afzonderlijke fase en interpreteer een geslaagde overdracht of een snel weergegeven cachevoorbeeld niet als bewijs dat de semantische analyse voor dat item is voltooid.

Embeddings verbinden afbeeldingen met woorden

Een embedding is een numerieke representatie die wordt gebruikt om betekenis of visuele inhoud te vergelijken. Een afbeeldingsencoder en een compatibele tekstencoder zetten verschillende invoer om in vergelijkbare representaties. De zoekterm wordt niet simpelweg gecontroleerd tegen een heimelijk gegenereerde bestandsnaam, en een geslaagd resultaat betekent niet dat het systeem voor elke afbeelding een nauwkeurige beschrijving heeft geschreven.

Contrastief leren met afbeeldingen en tekst brengt gerelateerde afbeeldingen en beschrijvingen bij elkaar en houdt minder gerelateerde paren tijdens het trainen uit elkaar. Tijdens het zoeken maakt de getrainde representatie vergelijkingen mogelijk tussen een zin en opgeslagen afbeeldingsvectoren. Dit is het mechanisme achter het zoeken naar visuele concepten zonder eerst aan elke relevante foto hetzelfde letterlijke trefwoord toe te kennen.

Zo kan een fiets op het strand hoog scoren voor een beschrijvende zoekterm, zelfs als geen van beide woorden in de metadata voorkomt. Dat is een relevantiebeoordeling, geen bewijs dat de afbeelding elk gevraagd detail bevat. Formulering, uitsnede, kleine objecten en concurrerende visuele kenmerken kunnen de rangschikking veranderen, ook als het oorspronkelijke bestand ongewijzigd blijft.

De database maakt resultaten beschikbaar

Het berekenen van een vector voltooit de ophaalroute niet: de applicatie moet deze opslaan en samen met informatie over het item doorzoeken. De database retourneert identificatiegegevens van kandidaatresultaten, waarna de applicatie de bijbehorende media kan aanbieden. Verwerkingssnelheid en vertraging bij het ophalen uit de database zijn gerelateerde maar afzonderlijk meetbare onderdelen van de ervaring.

De zoekbackend is versiegevoelig. Immich heeft de ondersteuning voor pgvecto.rs verwijderd in v3 en beveelt VectorChord aan als opvolger. Een ouder architectuurartikel waarin pgvecto.rs wordt genoemd, mag daarom niet als actueel implementatieadvies worden gebruikt. Het blijvende principe is de combinatie van opgeslagen vectoren en relationele applicatiestatus, niet de naam van één historische extensie.

Ter illustratie van de schaal: 100.000 vectoren met 512 waarden van vier bytes nemen als ruwe getallen ongeveer 205 MB in beslag. Dit is geen schatting van een Immich-database: werkelijke dimensies, typen, indexen, rijen en write-ahead logging veranderen het totaal. De berekening laat alleen zien waarom een representatie iets anders is dan nog een afbeelding in volledige resolutie opslaan.

-15% OFF
Single board computer zimaboard2

Personen, metadata en visueel zoeken zijn verschillende routes

Visueel zoeken, filteren op metadata en zoeken naar benoemde personen beantwoorden verschillende vragen. Een datumfilter gebruikt vastgelegde informatie; visueel zoeken rangschikt een beschrijving van een scène; functies rond gezichten detecteren en groeperen gezichten die een gebruiker vervolgens een naam kan geven. Als je verwacht dat alle drie zich gedragen als exacte bestandsnaamzoekopdrachten, wordt onduidelijk waarom de ene route werkt en de andere teleurstelt.

Het organiseren van familiefoto’s heeft baat bij het combineren van deze routes, in plaats van één model te vragen elk feit te achterhalen. Een persoonsnaam, een geschatte maand en een visuele beschrijving beperken verschillende aspecten van de verzameling. Hun bruikbaarheid hangt af van beschikbare metadata, voltooide verwerking en tot welke foto’s het huidige account toegang heeft.

Het onderscheid voorkomt ook een nauwkeurigheidsfout: het herkennen van een visueel vergelijkbaar gezicht is geen onafhankelijk bewijs van identiteit. Controleer groepen voordat je op een naam vertrouwt, vooral wanneer leeftijd, belichting of afscherming het uiterlijk verandert. Houd nauwkeurige administratieve of gevoelige beslissingen buiten een gelijkenisrangschikking die is ontworpen om door een fotobibliotheek te bladeren.

Privacy en nauwkeurigheid hebben afzonderlijke grenzen

Een lokaal model kan afbeeldingsanalyse binnen de thuismediaserver houden, maar de vertrouwensgrens volgt het geconfigureerde eindpunt. Als je analyse naar een andere machine stuurt, verwerkt die machine de aangeleverde invoer. Een externe versneller op een privénetwerk en een onbekend gehost eindpunt hebben verschillende privacygevolgen, ook al worden beide aangeduid als externe machine learning.

Beperkingen van het model staan los van privacy bij implementatie. Het oorspronkelijke CLIP-onderzoek beschrijft zwakke punten bij taken zoals tellen en fijnmazige onderscheidingen, en waarschuwt dat resultaten afhangen van de aangeleverde categorieën of prompts. Inferentie lokaal uitvoeren neemt die beperkingen niet weg en verandert een gelijkenisscore niet in een feitelijke beschrijving van een familiegebeurtenis.

De claim van privé zoeken gaat niet op als je ervan uitgaat dat self-hosting automatisch elk eindpunt, elke back-up, elk account en elk gedeeld album beveiligt. De claim van nauwkeurig zoeken gaat niet op als je uitputtende volledigheid bij willekeurige formuleringen belooft. Benoem beide grenzen: wie de invoer verwerkt en wat de representatie redelijkerwijs kan onderscheiden in de geselecteerde verzameling.

Controleer de pijplijn met bekende foto’s

Stel een kleine geautoriseerde referentieset samen met duidelijke objecten, dubbelzinnige scènes, kleine details en verschillende bekende personen. Vergelijk na voltooiing van de verwerking exacte metadatafilters met visuele zoekopdrachten en het zoeken naar benoemde personen. Noteer het gekozen model en de serverversie, zodat een latere wijziging aan dezelfde voorbeelden kan worden getoetst in plaats van aan je geheugen.

Een persoonlijk experiment met een modelwijziging meldde een aanzienlijk andere zoekkwaliteit met een ander geconfigureerd model. Die observatie ondersteunt het controleren van relevantie aan de hand van persoonlijke voorbeelden, niet de aanname dat elk groter model elke zoekopdracht verbetert. Hardwarekosten, taalondersteuning en vereisten voor herverwerking moeten los blijven staan van één enthousiast verslag over betere resultaten.

Accepteer de pijplijn wanneer representatieve items de vereiste verwerking hebben voltooid, bevoegde gebruikers de verwachte voorbeelden kunnen ophalen en zwakke punten zijn gedocumenteerd in plaats van verborgen. Als metadata een item vindt maar visuele formulering niet, controleer dan de relevantie voordat je concludeert dat gegevens verloren zijn gegaan. Als de analyse is omgeleid, controleer de ontvangende host als een afzonderlijke privacybeslissing.

Tech & AI HUB

Meer om te lezen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.