Startseite / Artikel

Hybride Bildsuche in großem Maßstab: SigLIP, SPLADE, YOLOv8 und Gemini Captions

Entwurf eines Suchsystems für eine Million Bilder, das dichte und spärliche Embeddings mit Objekterkennung, Entitätserkennung, sicheren Suchfunktionen sowie von LLMs verfassten Beschreibungen kombiniert.

Verlag: REACTAPP.TOP6 Min. Lesezeit1358 Wörter

Quellen: Building Image Search System Leveraging Modern AI Services

Das Schlüsselwortabgleich auf Tags reicht bei Bildern nur bis zu einem gewissen Grad aus. Teams, die E-Commerce-Kataloge, Content-Management-Tools oder digitale Asset-Bibliotheken entwickeln, benötigen eine Suchfunktion, die nicht nur die Wörter erfasst, die jemand in ein Tags-Feld eingegeben hat, sondern auch, was das Bild zeigt, seinen Stil sowie seinen emotionalen Ton. Das unten dargestellte Design beschreibt ein hybrides Bildsuchsystem, das aus einem Repository mit etwa einer Million Bildern mithilfe sowohl visueller Inhalte als auch textbasierter Abfragen Informationen abruft und hauptsächlich aus bestehenden KI-Diensten besteht, damit die Entwicklungsaufwände gering bleiben.

Die Architektur kombiniert mehrere spezialisierte Komponenten. Diese werden im Folgenden in der Reihenfolge des Datenflusses dargestellt: Embeddings, Bildanalyse, Beschreibungsgenerierung, Abfragenverarbeitung und -operationen.

Zwei Embedding-Modelle

Das System basiert auf zwei separaten Embedding-Pipelines, wobei jeder Pipeline einen unterschiedlichen Aspekt des Inhalts erfassen soll.

Bilder verwenden SigLIP. Nach der Bewertung von CLIP und ImageBind setzte sich SigLIP durch. Es handelt sich um ein kontrastives Bild-Text-Modell, das mit einem Sigmoid-Verlust trainiert wird. Laut veröffentlichten Ergebnissen liegt seine Zero-Shot-Accurateit auf ImageNet bei etwa 76 %, was einige Punkte über vergleichbaren CLIP-Modellen liegt. Zudem ist es rechenintensiver geringer – in dem hier zitierten Vergleich etwa um 40 % – und generalisiert ohne Feinabstimmung auf neue Domänen. Jedes Bild wird zu einem dichten Vektor in einem Raum, in dem nahegelegene Punkte ähnlich aussehen.

Texte verwenden SPLADE v2. SPLADE erzeugt spärliche Vektoren, die direkt mit einem Wortschatz verknüpft sind, was drei Vorteile bringt:

  • Durch die spärliche Ausgabe bleibt sie interpretierbar, da jede Dimension auf einen echten Begriff abgebildet wird.
  • Es erweitert die Abfragen selbstständig lexikalisch, wodurch Probleme durch Wortschatzunterschiede bei der Suche – wie „sofa“ gegenüber „couch“ – vermieden werden.
  • Weil Dimensionen Begriffe sind, kann ein Treffer auf die genauen Wörter zurückverfolgt werden, die ihn verursacht haben, was die Erklärung der Ergebnisse erleichtert.
  • Jedes Bild verstehen

    Rohpixel werden in einem mehrstufigen Prozess in Schichten abfragbarer Informationen umgewandelt.

    Objekterkennung mit YOLOv8. YOLO betrachtet das gesamte Bild in einem einzigen Netzwerklauf, wodurch es viel schneller ist als zweistufige Detektoren wie Faster R-CNN. In dieser Konfiguration liegt die Laufzeit der größeren Variante bei etwa 50 ms pro Bild, was eine effiziente Gruppierung ermöglicht. Es erreicht 53,9 % mAP auf COCO bei 80 gängigen Klassen, und das Modell lässt sich leicht über einen GPU-Cluster verteilen.

    Von allgemeinen Klassen zu benannten Entitäten. Die Erkennung liefert Labels wie Person, Auto und Gebäude. Eine detaillierte Suche benötigt spezifische Identitäten, weshalb ein Web-Entitätsdienst diese umwandelt:

    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)
    

    Diese Dienstleistung erkennt mehr als fünf Millionen Entitäten in Kategorien wie Persönlichkeiten, Wahrzeichen, Produkte und Marken sowie Ereignisse. Dieser Schritt verbindet die visuelle Erkennung mit der Bedeutungsinterpretation. Anstatt einer allgemeinen Abfrage nach einer Person funktioniert somit eine spezifische Abfrage nach einem bestimmten Sänger.

    Etiketten aus einer Vision-API. Allgemeine Konzepte, Aktivitäten und Themen stammen aus der Etikettenerkennung, die in Tests mehr als 10.000 unterschiedliche Konzepte im gesamten Repository erkannt hat. Sie hilft bei drei Dingen: Aktivitäten wie Wandern oder Kochen, Szenen wie Strand oder Wald sowie Objekte, die für YOLOs Klassen zu spezifisch sind – wie zum Beispiel ein Cappuccino, bei dem YOLO nur „Tasse“ anzeigt.

    Sichere Suche. Der Inhalt wird anhand von fünf Kriterien markiert: Erwachseneninhalte, Gewalt, medizinische Themen, Fälschungen (Memes und bearbeitete Bilder) sowie anzüglicher Inhalt. Jedes Kriterium weist einen Zuverlässigkeitswert auf, sodass das Filtern an die Richtlinien der Organisation angepasst werden kann. Die Automatisierung dieser Schicht ersetzte einen großen Teil der manuellen Überprüfungen.

    Gemini für Metadaten und Beschreibungen

    Gemini erzeugt strukturierte Metadaten. Durch sorgfältige Prompt-Entwicklung entstand ein Template, das zuverlässig 25 Attribute extrahiert, wobei jedes ein Zuverlässigkeitsniveau zwischen 0 und 1 aufweist – beispielsweise das Sensitivitätsniveau oder die Emotion:

    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.
    

    Die kombinierten Ausgaben aus Erkennung, Entitäten, Attributen und Metadaten werden anschließend an einen zweiten Gemini-Prompt übergeben, der eine vollständige Beschreibung erstellt. Die Gestaltung des Prompts ist hier von großer Bedeutung, denn die Beschreibungen müssen folgende Eigenschaften aufweisen:

    1. reich an Schlüsselwörtern, um die Textsuche zu erleichtern.
    2. in der Struktur konsistent, damit sie zuverlässig verarbeitet werden können.
    3. im Kontext sinnvoll, um zu verdeutlichen, warum die erkannten Entitäten wichtig sind.
    4. Auf Attribute wie Emotion und Stil Rücksicht nehmend.
    5. unter Berücksichtigung wahrscheinlicher Suchbegriffe verfasst.

    Das Muster sieht wie folgt aus:

    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
    

    Nehmen Sie zuerst die rohen Erkennungsdaten:

    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
    

    Nach der Verfeinerung wird daraus ein suchbarer Satz:

    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.
    

    Solche Beschreibungen enthalten viele suchbare Inhalte, bleiben im Kontext sinnvoll, beinhalten visuelle und emotionale Eigenschaften und spiegeln wider, was Nutzer wahrscheinlich eingeben würden.

    Antworten auf eine Anfrage

    Anfragen durchlaufen sechs Schritte:

    1. Analyse. Die Absichtsklassifizierung bestimmt, ob der Nutzer spezifische Entitäten, Stile, Emotionen oder andere Eigenschaften wünscht.
    2. Entitätenextraktion. Benannte Entitäten in der Anfrage werden mit der Entitätendatenbank abgeglichen, damit ihnen die richtige Gewichtung zukommt.
    3. Embedding. Die Anfrage wird mit SPLADE v2 und SigLIP eingebettet, ähnlich wie Bilder dargestellt werden.
    4. Vektorsuche. Das Embedding der Anfrage holt die nächstgelegenen Bild-Embeddings aus dem Index ab.
  • Richtlinienfilterung. Es gelten regionsbezogene sowie organisationsweite Regeln: Sicherheitsschwellenwerte, die der Region des Benutzers entsprechen, Markensicherheit, altersgerechte Filterung sowie Lizenzrechte.
  • Neuordnung. Mehrere Faktoren beeinflussen die Reihenfolge in der ersten Durchgangsphase:
    • Diversität – mithilfe eines gierigen Algorithmus, der einen minimalen Kosinusabstand zwischen den ausgewählten Bildern gewährleistet.
    • Jüngste Einträge – neuere Elemente werden durch eine zeitabhängige Gewichtung bevorzugt: score_boost = base_score * (1 + alpha * exp(-beta * days_old)).
    • Beliebtheit – durch logarithmische Dämpfung, damit stark genutzte Elemente nicht dominieren.
    • Betriebsregeln für anwendungsspezifische Anpassungen.

    Zwei schwierige Probleme

    Verzögerung. Das Verknüpfen mehrerer Service-Stacks verursacht Verzögerungen, und die ersten Messungen zeigten eine Gesamtverzögerung von über vier Sekunden pro Bild. Zu den Lösungen gehörten asynchrone parallele Aufrufe, Batching für nicht-interaktive Pipelines, das Zusammenlegen der Services, um die Netzwerkzeit zu verringern, sowie eine Aufteilung der Arbeit nach Komplexität des Bildes. Die durchschnittliche Zeit sank auf 850 ms pro Bild, wobei 95 % der Bilder in weniger als 1,2 Sekunden verarbeitet wurden.

    Komplexität der Integration. Jeder Service verfügt über seine eigene API, Fehlerverhalten und Leistungsprofil. Hilfreich war eine einheitliche Abstraktionsschicht mit konsistentem Fehlerbehandlungssystem, Circuit Breakern und Fallback-Mechanismen pro Service, Gesundheitsmetriken für jede Abhängigkeit sowie schrittweise Reduzierung der Leistung, damit das System auch bei teilweisen Ausfällen weiterhin funktioniert.

    Ergebnisse und nächste Schritte

    Die Nutzung von verwalteten KI-Diensten hat sich ausgezahlt. Die Entwicklung dauerte vier Monate, während eine Schätzung für eine maßgeschneiderte Lösung zwölf Monate betrug. Die Zufriedenheit mit den Suchergebnissen stieg um 40 %, während manuelles Taggen und Kategorisieren um 80 % zurückging.

    Mehrere Entwicklungsschritte bleiben offen: Personalisierung anhand des Benutzerverhaltens, interaktive Verbesserung der Ergebnisse, Abfragen, die Text und Bilder kombinieren, Feedbackschleifen, die aus Klicks lernen, sowie Feinabstimmung von Embedding-Modellen für bestimmte Branchen.