Jak indeksowanie zdjęć przez uczenie maszynowe w Immich umożliwia wyszukiwanie prywatnych zdjęć

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Immich umożliwia wyszukiwanie zdjęć, konwertując przygotowane obrazy na zapisane reprezentacje, które można porównywać z zapytaniami i filtrować według uprawnień dostępu.

Rodzic pamięta czerwony rower na wakacyjnym zdjęciu, ale nie zna nazwy pliku ani daty, więc wyszukuje je na domowym serwerze zdjęć, używając zwykłego języka. Uzyskanie przydatnego wyniku wymaga czegoś więcej niż przechowywania obrazu na dysku. Reprezentacja wizualna, wyszukiwanie w bazie danych i zakres uprawnień muszą współdziałać, a wybrany model decyduje o tym, jakie podobieństwa wyszukiwarka potrafi rozpoznać.

Przygotowanie obrazu to nie trenowanie modelu

Importowanie biblioteki zazwyczaj uruchamia wnioskowanie z użyciem istniejącego modelu; nie trenuje nowego modelu ogólnego przeznaczenia na rodzinnej kolekcji. Serwer przygotowuje dane wejściowe obrazu, zleca analizę i przypisuje zwrócone informacje do zasobu. To rozróżnienie wyjaśnia, dlaczego początkowy import wymaga mocy obliczeniowej, ale nie wymaga tworzenia domowego projektu trenowania modelu.

Lokalne indeksowanie wizualne pozwala aplikacji do hostowania zdjęć tworzyć reprezentacje wyszukiwania, zanim użytkownik wprowadzi zapytanie. Początkowy etap zajmuje czas, ponieważ każde kwalifikujące się zdjęcie nadal wymaga przetworzenia. Gdy reprezentacje już istnieją, późniejsze wyszukiwanie może je ponownie wykorzystać, zamiast ponownie uruchamiać cały proces analizy obrazu dla każdego zdjęcia.

Granica gotowości znajduje się więc na dalszym etapie niż samo przesłanie pliku. Czytelny oryginał może istnieć, zanim jego reprezentacja wizualna będzie dostępna. Traktuj początkowe indeksowanie jako odrębny etap i nie uznawaj pomyślnego przesłania ani szybko wyświetlonego buforowanego podglądu za dowód, że analiza semantyczna tego zasobu została zakończona.

Osadzenia łączą obrazy ze słowami

Osadzenie to reprezentacja liczbowa używana do porównywania znaczenia lub treści wizualnej. Koder obrazu i zgodny z nim koder tekstu mapują różne dane wejściowe na porównywalne reprezentacje. Fraza wyszukiwania nie jest po prostu porównywana z ukrytą, wygenerowaną nazwą pliku, a pomyślny wynik nie oznacza, że system utworzył dokładny opis każdego obrazu.

Kontrastywne uczenie obrazu i tekstu dopasowuje powiązane obrazy i opisy, jednocześnie rozdzielając mniej powiązane pary podczas trenowania. W czasie wyszukiwania wytrenowana reprezentacja umożliwia porównywanie frazy z zapisanymi wektorami obrazów. To mechanizm stojący za wyszukiwaniem pojęć wizualnych bez konieczności przypisywania tego samego dosłownego słowa kluczowego każdemu odpowiedniemu zdjęciu.

Na przykład zdjęcie roweru na plaży może uzyskać wysoką pozycję dla opisowej frazy, nawet jeśli żadne z tych słów nie występuje w jego metadanych. Jest to ocena trafności, a nie dowód, że obraz zawiera każdy żądany szczegół. Sformułowanie, kadrowanie, małe obiekty i konkurencyjne cechy wizualne mogą zmienić kolejność wyników mimo niezmienionego oryginalnego pliku.

Baza danych sprawia, że wyniki można pobrać

Obliczenie wektora nie kończy procesu pobierania: aplikacja musi go zapisać i wyszukiwać go wraz z informacjami o zasobie. Baza danych zwraca identyfikatory potencjalnych wyników, po czym aplikacja może udostępnić odpowiadające im multimedia. Przepustowość obliczeń i opóźnienie pobierania z bazy danych są powiązanymi, lecz niezależnie mierzalnymi elementami tego doświadczenia.

Backend wyszukiwania zależy od wersji. W Immich usunięto obsługę pgvecto.rs w wersji 3 i zaleca się VectorChord jako następcę, dlatego starszy artykuł architektoniczny wymieniający pgvecto.rs nie powinien stać się podstawą aktualnych zaleceń dotyczących wdrożenia. Trwała zasada polega na połączeniu zapisanych wektorów ze stanem aplikacji relacyjnej, a nie na użyciu jednej historycznej nazwy rozszerzenia.

Dla zobrazowania skali 100 000 wektorów zawierających 512 wartości czterobajtowych zajmuje około 205 MB jako surowe liczby. Nie jest to szacunek rozmiaru bazy danych Immich: rzeczywiste wymiary, typy, indeksy, wiersze i rejestrowanie z wyprzedzeniem zmieniają całkowitą wartość. Obliczenie pokazuje jedynie, dlaczego reprezentacja różni się od przechowywania kolejnego obrazu w pełnej rozdzielczości.

-15% OFF

Osoby, metadane i wyszukiwanie wizualne to różne ścieżki

Wyszukiwanie wizualne, filtrowanie metadanych i wyszukiwanie nazwanych osób odpowiadają na różne pytania. Filtr daty korzysta z zapisanych informacji; wyszukiwanie wizualne szereguje wyniki według opisu sceny; funkcje związane z twarzami wykrywają i grupują twarze, którym użytkownik może następnie nadać nazwę. Oczekiwanie, że wszystkie trzy mechanizmy będą działać jak dokładne dopasowanie nazwy pliku, zaciemnia powody, dla których jedna ścieżka działa, a inna rozczarowuje.

Organizowanie rodzinnych zdjęć zyskuje na łączeniu tych ścieżek zamiast oczekiwania, że jeden model odzyska każdą informację. Nazwa osoby, przybliżony miesiąc i opis wizualny ograniczają różne aspekty kolekcji. Ich użyteczność zależy od dostępnych metadanych, zakończonego przetwarzania oraz tego, do których zdjęć bieżące konto ma dostęp.

To rozróżnienie zapobiega również błędowi dotyczącymi dokładności: rozpoznanie wizualnie podobnej twarzy nie jest niezależnym dowodem tożsamości. Przejrzyj grupy przed poleganiem na nazwie, szczególnie gdy wiek, oświetlenie lub zasłonięcie twarzy zmieniają wygląd. Precyzyjne decyzje administracyjne lub wrażliwe pozostaw poza rankingiem podobieństwa zaprojektowanym do ułatwiania przeglądania biblioteki zdjęć.

Prywatność i dokładność mają odrębne granice

Lokalny model może utrzymywać analizę obrazów w obrębie domowego serwera, ale granica zaufania przebiega zgodnie ze skonfigurowanym punktem końcowym. Wysłanie analizy do innego komputera oznacza, że ten komputer przetwarza dostarczone dane wejściowe. Zdalny akcelerator w prywatnej sieci i nieznany hostowany punkt końcowy mają różne konsekwencje dla prywatności, nawet jeśli oba są określane jako zdalne uczenie maszynowe.

Ograniczenia modelu są niezależne od prywatności wdrożenia. Oryginalne badania nad CLIP opisują słabości w zadaniach takich jak liczenie i rozróżnienia wymagające dużej szczegółowości oraz ostrzegają, że wyniki zależą od dostarczonych kategorii lub promptów. Lokalizacja wnioskowania nie eliminuje tych ograniczeń ani nie zmienia wyniku podobieństwa w faktyczny opis rodzinnego wydarzenia.

Twierdzenie o prywatnym wyszukiwaniu jest błędne, jeśli zakłada, że self-hosting automatycznie zabezpiecza każdy punkt końcowy, backup, konto i album udostępniony innym osobom. Twierdzenie o dokładnym wyszukiwaniu jest błędne, jeśli obiecuje pełne odnajdywanie wyników na podstawie dowolnego sformułowania. Określ obie granice: kto przetwarza dane wejściowe oraz jakie elementy reprezentacja może rozsądnie rozróżnić w wybranej kolekcji.

Sprawdź potok za pomocą znanych zdjęć

Utwórz niewielki, autoryzowany zestaw referencyjny zawierający oczywiste obiekty, niejednoznaczne sceny, drobne szczegóły i kilka znanych osób. Po zakończeniu przetwarzania porównaj dokładne filtrowanie metadanych z zapytaniami wizualnymi i wyszukiwaniem nazwanych osób. Zapisz wybrany model i wersję serwera, aby późniejszą zmianę można było ocenić na podstawie tych samych przykładów, a nie wspomnień.

Opisany z pierwszej ręki eksperyment ze zmianą modelu wykazał znacznie różną jakość wyszukiwania przy użyciu innego skonfigurowanego modelu. Obserwacja ta uzasadnia sprawdzanie trafności na własnych przykładach, a nie zakładanie, że każdy większy model poprawi każde zapytanie. Koszt sprzętu, obsługa języków i wymagania dotyczące ponownego przetwarzania należy traktować oddzielnie od jednego entuzjastycznego opisu lepszych wyników.

Uznaj potok za gotowy, gdy reprezentatywne zasoby zakończą wymagane przetwarzanie, uprawnieni użytkownicy będą mogli pobrać oczekiwane przykłady, a słabości zostaną udokumentowane, zamiast ukryte. Jeśli metadane znajdują zasób, ale wyszukiwanie za pomocą opisu wizualnego nie, sprawdź trafność, zanim uznasz dane za utracone. Jeśli analiza została przekierowana, zweryfikuj komputer odbierający jako odrębną decyzję dotyczącą prywatności.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

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.