Strona główna / Artykuły

Hybrydowe wyszukiwanie obrazów w skali przemysłowej: SigLIP, SPLADE, YOLOv8 i Gemini Captions

Projekt systemu wyszukiwania miliona obrazów, który łączy gęste i rzadkie embeddingi z wykrywaniem obiektów, rozpoznawaniem entytetów, bezpiecznym wyszukiwaniem oraz opisami napisanymi przez LLM.

Wydawca: REACTAPP.TOP6 min czytania1358 słów

Źródła: Building Image Search System Leveraging Modern AI Services

Porównywanie słów kluczowych z tagami jest niewystarczające w przypadku obrazów. Zespoły tworzące katalogi e-commerce, narzędzia do zarządzania treścią lub biblioteki zasobów cyfrowych potrzebują funkcji wyszukiwania, która potrafi zrozumieć to, co pokazuje obraz, jego styl i ton emocjonalny, a nie tylko słowa wpisane przez kogoś do pola tagów. Poniższy projekt opisuje hybrydowy system wyszukiwania obrazów, który przeszukuje repozytorium liczące około miliona obrazów, wykorzystując zarówno treść wizualną, jak i zapytania tekstowe, budowany głównie z istniejących usług sztucznej inteligencji, dzięki czemu nakłady na rozwój pozostają niewielkie.

Architektura łączy kilka specjalistycznych komponentów. Są one opisane poniżej w kolejności, w jakiej przepływają przez nie dane: embeddingi, analiza obrazów, generowanie opisów, obsługa zapytań oraz operacje.

Dwa modele embeddingów

System opiera się na dwóch oddzielnych pipeline’ach embeddingowych, z których każdy reprezentuje inny aspekt treści.

Zdjęcia wykorzystują SigLIP. Po ocenie również CLIP i ImageBind, zwyciężył SigLIP. Jest to model kontrastywny do obrazów i tekstu, trenowany przy użyciu straty sigmoidalnej. Podane wyniki wskazują, że jego dokładność w zadaniach typu zero-shot na ImageNet wynosi około 76%, co o kilka punktów przewyższa podobne modele CLIP. Jest również mniej wymagający pod względem zasobów obliczeniowych – o około 40% mniej w przytoczonym tu porównaniu – i potrafi generalizować na nowe dziedziny bez konieczności dokładnej kalibracji. Każde zdjęcie staje się gęstym wektorem w przestrzeni, gdzie blisko położone punkty wyglądają podobnie.

Tekst wykorzystuje SPLADE v2. SPLADE generuje wektory rzadkie, bezpośrednio powiązane z słownikiem, co przynosi trzy korzyści:

  • Rzadki wynik pozostaje zrozumiały, ponieważ każda wymiarowość odpowiada rzeczywistemu terminowi.
  • Samodzielnie rozszerza zapytania pod względem leksykalnym, co łagodzi problemy z niespójnością słownictwa, które utrudniają wyszukiwanie („sofa” w porównaniu z „couch”).
  • Ponieważ wymiary są terminami, można prześledzić zgodność do dokładnych słów, które ją spowodowały, co ułatwia wyjaśnienie wyników.
  • Rozumienie każdego obrazu

    Surowe piksele są przekształcane w warstwy informacji nadających się do wyszukiwania w wieloetapowym procesie.

    Rozpoznawanie obiektów za pomocą YOLOv8. YOLO analizuje cały obraz w jednej transmisji sieci, dzięki czemu jest znacznie szybsze od detektorów dwuetapowych, takich jak Faster R-CNN. W tym ustawieniu duża wersja zajmuje około 50 ms na obraz, co wystarcza do efektywnego grupowania. Osiąga 53,9% mAP na danych COCO obejmujących 80 powszechnych klas, a model łatwo działa w klastrze GPU.

    Od klas ogólnych do nazwanych entytetów. Proces rozpoznawania dostarcza etykiet takich jak osoba, samochód i budynek. Zintegrowane wyszukiwanie wymaga konkretnych identyfikatorów, dlatego usługa entytetów internetowych je konwertuje:

    Example Transformation:
    
    YOLO: "person" (coordinates: [120, 45, 220, 320])
    Web Extraction: "Elon Musk" (confidence: 0.96)
    
    YOLO: "building" (coordinates: [50, 100, 400, 600])
    Web Extraction: "Eiffel Tower" (confidence: 0.92)
    

    To rozwiązanie identyfikuje ponad pięć milionów obiektów w kategoriach takich jak osoby publiczne, zabytki, produkty i marki oraz wydarzenia. Ten krok łączy detekcję wizualną z rozumieniem znaczenia. Dzięki temu możliwe jest wyszukiwanie konkretnego piosenkarza zamiast ogólnego wzoru dotyczącego osoby.

    Etykiety z API do analizy obrazu. Ogólne koncepcje, działania i tematy pochodzą z detekcji etykiet, która podczas testów rozpoznała ponad 10 000 różnych koncepcji w całym repozytorium. Pomaga ona w trzech aspektach: działaniach takich jak wędrówki czy gotowanie, scenach takich jak plaża czy las oraz obiektach zbyt specyficznych dla klas YOLO, jak cappuccino, który w przypadku YOLO jest klasyfikowany jedynie jako kubek.

    Szukanie bezpieczne. Treści są oznaczane według pięciu kryteriów: treści dla dorosłych, przemoc, tematy medyczne, fałszerstwa (memy i edytowane obrazy) oraz treści eksponujące. Każde kryterium ma przypisany wynik pewności, dzięki czemu filtrowanie można dostosować zgodnie z polityką organizacji. Automatyzacja tego procesu zastąpiła dużą ilość ręcznej oceny.

    Gemini do metadanych i opisów

    Gemini generuje ustrukturyzowane metadane. Dzięki starannemu projektowaniu zapytań powstał szablon, który niezawodnie wydobywa 25 atrybutów, z których każdy ma wynik pewności w zakresie od 0 do 1 – na przykład poziom wrażliwości i emocje:

    System: You are an expert image analyzer. Extract the following attributes from the image, with a confidence score (0-1):
    
    1. sensitivity (none, low, medium, high)
    2. emotion (neutral, joy, sadness, surprise, etc.)
    3. emotion_triggered (yes/no)
    4. text_overlay (yes/no)
    5. has_frames (yes/no)
    6. has_religious_symbols (yes/no)
    7. has_scattered_objects (yes/no)
    8. style (photographic, illustrated, cartoon, abstract, etc.)
    9. has_crowd (yes/no)
    ...
    [full list of 25 attributes]
    
    Response format: JSON object with attributes as keys and values as described above.
    

    Łączne wyniki detekcji, entytetów, atrybutów oraz metadanych są następnie podawane do drugiego promptu Gemini, który tworzy pełny opis. Projekt promptu ma tu duże znaczenie, ponieważ opisy muszą być:

    1. Bogate w słowa kluczowe, co ułatwia wyszukiwanie tekstów.
    2. Jednolite pod względem struktury, aby można je było pewnie analizować.
    3. Znaczące w kontekście, pokazujące, dlaczego wykryte entytety są ważne.
    4. Biorące pod uwagę atrybuty takie jak emocje i styl.
    5. Napisane z myślą o prawdopodobnych terminach wyszukiwania.

    Ścieżka szablonu wygląda tak:

    Generate a comprehensive, search-optimized description for this image based on the following data:
    
    [Entity data from object detection and recognition]
    [Label data from Vision API]
    [Structured metadata from previous Gemini analysis]
    
    Your description should:
    1. Begin with the most significant entities and their actions/relationships
    2. Include key visual attributes (colors, style, composition)
    3. Mention emotional tone and aesthetic qualities
    4. Incorporate likely search terms
    5. Be 3-5 sentences in length
    

    Najpierw weź surowe dane z wykrywania:

    Objects: person (0.98), guitar (0.95), microphone (0.92)
    Entities: Taylor Swift (0.97)
    Labels: concert, performance, stage, entertainment
    Metadata: emotion=joy, has_crowd=yes, style=photographic, dominant_color=purple
    

    Po wzbogaceniu staje się to zdaniem poddawanym wyszukiwaniu:

    Taylor Swift performs energetically on stage with an acoustic guitar during a concert, singing into a microphone with passionate expression. The image captures the excitement of a live performance with purple stage lighting creating a vibrant atmosphere. This high-quality photograph conveys feelings of joy and excitement, with Swift's iconic performance style clearly visible. The composition includes partial views of an enthusiastic crowd in the foreground, making this suitable for music, entertainment, and celebrity content.
    

    Tego typu opisy zawierają dużo treści nadających się do wyszukiwania, zachowują sens w kontekście, obejmują atrybuty wizualne i emocjonalne oraz odzwierciedlają to, co użytkownicy prawdopodobnie wpiszą.

    Odpowiadanie na zapytanie

    Zapytania przechodzą przez sześć kroków:

    1. Analiza. Klasyfikacja intencji decyduje, czy użytkownik szuka określonych entytetów, stylów, emocji lub innych atrybutów.
    2. Ekstrakcja entytetów. Nazwane entytety w zapytaniu są porównywane z bazą danych entytetów, aby otrzymać odpowiedni wagę.
    3. Wbudowanie. Zapytanie jest wbudowywane za pomocą SPLADE v2 i SigLIP, zgodnie z sposobem reprezentacji obrazów.
    4. Wyszukiwanie wektorowe. Wbudowanie zapytania pozyskuje najbliższe wbudowania obrazów z indeksu.
  • Filtrowanie zasad. Stosowane są reguły specyficzne dla regionu oraz na poziomie organizacji: progi bezpieczeństwa dostosowane do regionu użytkownika, ochrona marki, filtrowanie odpowiednie dla wieku oraz prawa licencyjne.
  • Ponowna klasyfikacja. Kilka czynników modyfikuje kolejność pierwszej próby:
    • Różnorodność, przy użyciu algorytmu chciwca, który zapewnia minimalną odległość kosinową pomiędzy wybranymi obrazami.
    • Nowszość, wyróżnianie nowszych elementów poprzez spadek wartości z upływem czasu: score_boost = base_score * (1 + alpha * exp(-beta * days_old)).
    • Popularność, z wykorzystaniem logarytmicznego tłumienia, aby elementy intensywnie używane nie dominowały.
    • Zasady biznesowe służące do dostosowań specyficznych dla danej dziedziny.

    Dwa trudne problemy

    Latencja. Łączenie kilku warstw usług powoduje opóźnienia, a pierwsze pomiary wykazały cztery sekundy czasu przetwarzania obrazu od początku do końca. Rozwiązania obejmowały asynchroniczne, równoległe wywołania, grupowanie zadań w przypadku niinteraktywnych procesów, umieszczanie usług blisko siebie w celu skrócenia czasu transmisji przez sieć oraz dzielenie pracy według stopnia złożoności obrazu. Średni czas przetwarzania spadł do 850 ms na obraz, przy czym 95% z nich zostało przetworzonych w mniej niż 1,2 sekundy.

    Złożoność integracji. Każda usługa ma własną API, zachowanie w przypadku błędów oraz profil wydajności. Pomogła jednolita warstwa abstrakcji z spójnym obsługą błędów, mechanizmami ochronnymi i alternatywami dla poszczególnych usług, metrykami stanu każdej zależności oraz stopniowym obniżaniem wydajności, dzięki czemu system nadal funkcjonuje mimo częściowych awarii.

    Wyniki i kolejne kroki

    Inwestycja w usługi AI zarządzane przyniosła pozytywne rezultaty. Rozwoj trwał cztery miesiące, podczas gdy szacowano go na ponad dwanaście miesięcy w przypadku rozwiązania dostosowanego pod konkretne potrzeby; zadowolenie z wyników wyszukiwania wzrosło o 40%, a ręczne tagowanie i kategoryzacja zmniejszyły się o 80%.

    Pozostaje kilka kierunków dalszych badań: personalizacja na podstawie zachowań użytkowników, interaktywne udoskonalanie wyników, zapytania łączące tekst i obrazy, pętle zwrotne uczące się na podstawie kliknięć oraz dopasowywanie modeli embeddingowych do konkretnych branż.