Grafik von Etienne Boulanger – https://unsplash.com/de/@etienneblg

Eine Einführung in die Thematik des Image Captionings mit BLIP

Bildunterschriften sind wichtig, weil sie den Inhalt und den Kontext eines Bildes in Textform darstellen und damit den Zugang und das Verständnis für alle Nutzer, insbesondere für Menschen mit Sehbehinderungen, verbessern. In diesem Beitrag stellen wir BLIP für diesen Anwendungsfall vor.

Henrik Bartsch

Henrik Bartsch

Die Texte in diesem Artikel wurden teilweise mit Hilfe künstlicher Intelligenz erarbeitet und von uns korrigiert und überarbeitet. Für die Generierung wurden folgende Dienste verwendet:

Einführung

Image Captioning ist eine Funktionalität, die vor allem durch die Entwicklung von Algorithmen aus dem Bereich des Deep Learning an Bedeutung gewonnen hat. Unter Image Captioning verstehen wir die Möglichkeit, mit Hilfe computergestützter Methoden eine Kurzbeschreibung bzw. Überschrift zu vorhandenen Bildern generieren zu lassen.

Image Captioning ist deshalb interessant, weil einige Bereiche unseres digitalen Lebens davon profitieren können, wie z.B. E-Commerce, Bildung, Gesundheit, Interaktion in sozialen Netzwerken und vieles mehr. Ein besonderer Schwerpunkt liegt auf der Barrierefreiheit, da Image Captioning verwendet werden kann, um automatisch Beschreibungen von Bildern auf Webseiten für Menschen mit Sehbehinderungen hinzuzufügen.

Im Folgenden soll ein für diese Aufgabe Pretrained Transformator vorgestellt werden: BLIP.

BLIP steht für Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation und beschreibt einen Pretrained Transformer, der auf möglichst viele Bilder anwendbar sein soll.

Image Captioning: Ein Beispiel

Im Folgenden soll anhand eines Beispiels näher erläutert werden, wie Image Captioning genau funktioniert und welche Ergebnisse zu erwarten sind.

Beim Image Captioning wird versucht, die Bereiche Computer Vision und Natural Language Processing zu kombinieren, um Merkmale und Objekte in Bildern zu erkennen, zu kontextualisieren und anschließend durch ein neuronales Netz in natürlicher Sprache beschreiben zu lassen. 1 2 3 Häufig wird versucht, die Beschreibung möglichst kurz zu halten und auf einen Satz zu beschränken - dies ist jedoch nicht bei allen Modellen und Bildern der Fall.

In diesem Zusammenhang kann Image Captioning als eine Erweiterung der Aufgabe der Bildklassifikation angesehen werden, bei der es lediglich darum geht, Bilder einer Reihe von vordefinierten Klassen zuzuordnen.

Im Folgenden soll dies anhand eines ausgewählten Bildes veranschaulicht werden:

Grafik von NEOM - https://unsplash.com/de/@neom

Eine mögliche Überschrift oder Kurzbeschreibung für dieses Bild könnte wie folgt lauten:

Ein Bild, auf welchem eine Person auf einer Düne durch die Wüste geht

Bei diesem Bild handelt es sich um ein sehr einfaches Motiv. Eine Interpretation ist hier relativ eindeutig, muss aber nicht für alle Bilder gleich sein. Bildinterpretationen können von Person zu Person variieren, dementsprechend kann das neuronale Netz z.B. auch Interpretationen liefern, die (nicht direkt) sinnvoll erscheinen.

Implementierung

Um BLIP verwenden zu können, verwenden wir sowohl PIL für das Laden der Bilder als auch transformers zum Laden des neuronalen Netzes mit den entsprechenden Parametern:

blip_test.py
from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration

Anschließend können wir die Klassen BlipProcessor und BlipForConditionalGeneration verwenden, um die Parameter für den Preprocessor und das neuronale Netz herunterzuladen.

blip_test.py
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-large")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-large")

Im nächsten Schritt können wir die Decodierung als Funktion kapseln, damit wir den darin enthaltenen Code nicht ständig wiederholen müssen. Die Funktion könnte folgendermaßen aussehen:

blip_test.py
def decode_image(image):
    inputs = processor(image, "a photography of", return_tensors="pt")
    outputs = model.generate(**inputs, max_new_tokens=100)
    print(processor.decode(outputs[0], skip_special_tokens=True))

Für einen Aufruf ist es dann nur noch notwendig, das Bild zu laden, es in das RBG-Format zu konvertieren (falls es nicht bereits in diesem Format vorliegt) und es dann der Funktion als Parameter zu übergeben.

blip_test.py
current_image = Image.open("demo.jpg").convert("RGB")

decode_image(current_image)

Anwendungsbeispiele

Im Folgenden werden verschiedene Bildtypen mit unterschiedlichem Komplexitätsgrad vorgestellt. Da BLIP nur auf einem englischen Korpus trainiert wurde, werden hier alle Ausgaben nur in englischer Sprache dargestellt. Dies dient der Nachvollziehbarkeit und Reproduzierbarkeit der vorgestellten Ergebnisse.

Textuelle Bilder

In diesem Abschnitt werden wir BLIP Bilder beschreiben lassen, die Arten von geschriebenen Wörtern oder Zahlen enthalten.


Grafik von Hayley Murray - https://unsplash.com/de/@hayleymurrayphoto

a photography of a bathroom stall with a sign that says small steps are still progress

Obwohl der Text hier korrekt ist, enthält diese Ausgabe eine örtliche Beschränkung auf eine Toilettenkabine. Dies ist aus unserer Sicht schwer nachvollziehbar.


Grafik von Katrina Wright - https://unsplash.com/de/@littleforestowl

a photography of a child standing in front of a yellow wall

Bei diesem Bild interpretiert das Modell leider nur ein Kind vor einer Wand, kann aber anscheinend den Text “Believe in yourself” nicht erkennen. Dies liegt wahrscheinlich an der Kombination von Perspektive und Schriftart des Textes. Daher sollten möglichst einfache Schriftarten verwendet werden.


Grafik von Antoine Dautry - https://unsplash.com/de/@antoine1003

a photography of a piece of paper with a picture of a math textbook

Obwohl das Modell in dieser Beschreibung theoretisch keine wesentlichen Informationen ausgelassen hat, kann ein mathematisch geschulter Mensch hier erkennen, dass es sich nicht nur um Mathematik handelt. Es handelt sich um ein lineares Gleichungssystem. Für eine grobe Einordnung spielt dies jedoch weniger eine Rolle und ist eher eine Frage des erforderlichen Detaillierungsgrades.

Naturaufnahmen

In diesem Teil wollen wir uns speziell mit Bildern aus der Natur beschäftigen. In einigen Beispielen können wir eine hohe Komplexität durch eine große Anzahl von Pflanzen und/oder Tieren erkennen. Dies soll die Aufgabe des Modells etwas erschweren und uns ein besseres Verständnis der Fähigkeiten des neuronalen Netzes vermitteln.


Grafik von Joshua Kettle - https://unsplash.com/de/@joshuakettle

a photography of a lake surrounded by mountains with the sun setting


Grafik von Medhi MeSSrro - https://unsplash.com/de/@messrro

a photography of a tree in the fog by a lake


Grafik von NASA Hubble Space Telescope - https://unsplash.com/de/@hubblespacetelescope

a photography of a blue and green galaxy with stars


Grafik von NEOM - https://unsplash.com/de/@neom

a photography of a person swimming in the ocean with a lot of fish


Grafik von USGS - https://unsplash.com/de/@usgs

a photography of a map of europe with a plane flying over it

Viele der hier gezeigten Bilder zeigen eine wirklich gute Qualität der Ausgaben - bis auf das letzte Bild. Hier haben wir eine Anomalie, da ein Flugzeug in das Bild hineininterpretiert wird, welches eindeutig nicht zu sehen ist. Unserer Meinung nach könnte es sich auch um ein Satellitenbild handeln, das so bearbeitet wurde, dass keine Wolken zu sehen sind.

Komplexere Bilder

In diesem Abschnitt wollen wir den Schwierigkeitsgrad noch etwas erhöhen. Ziel ist es, Bilder zu verwenden, die einen großen Interpretationsspielraum zulassen (evtl. sogar für das Verständnis notwendig sind) oder die nicht unbedingt eindeutig zu definieren sind - hier sollen die Grenzen des Modells nach dem letzten Abschnitt weiter getestet werden.


Grafik von Bernardo Santos - https://unsplash.com/de/@bsideatlas

a photography of a neon tiger statue in a dark room


Grafik von Jr Korpa - https://unsplash.com/de/@jrkorpa

a photography of a person standing in front of a red light


Grafik von Ozzie Stern - https://unsplash.com/de/@ozziestern

a photography of a fire truck spraying water on a fire


Grafik von Alexandre Debiève - https://unsplash.com/de/@alexkixa

a photography of a computer motherboard with many electronic components

Obwohl die Kurzbeschreibung auf den ersten Blick logisch erscheint, ist nicht klar, inwieweit es sich hier tatsächlich um ein Motherboard handelt. Der Rest des Titels scheint den Kern des Bildes jedoch gut zu treffen.


Grafik von rc.xyz NFT gallery - https://unsplash.com/de/@moneyphotos

a photography of a computer screen showing a stock chart

Grundsätzlich hat das Modell hier den Kern des Bildes gut getroffen. Allerdings hätten wir uns an dieser Stelle gewünscht zu lesen, dass das Diagramm mit Fortschreiten auf der x-Achse höhere Werte auf der y-Achse erreicht. Dies ist jedoch wiederum eine Frage des Detaillierungsgrades.


Grafik von Susan Wilkinson - https://unsplash.com/de/@susan_wilkinson

a photography of a group of colorful corals on a white surface

Bei diesem Bild müssen wir zugeben, dass wir nicht gewusst hätten, was genau in diesem Bild zu sehen ist. Nach der Ausgabe des Titels und der anschließenden Recherche scheint diese Kurzbeschreibung jedoch völlig korrekt zu sein.

Anwendungsfelder

Wie wir im vorherigen Teil dieses Beitrags gesehen haben, erzielen wir mittels BLIP gute Ergebnisse im Bereich des Image Captionings. Daher können wir BLIP in den folgenden Bereichen einsetzen, die bereits als hervorragende Anwendungsfelder für Image Captioning Systeme identifiziert wurden:

  1. Verbesserte Verfügbarkeit: Durch den Einsatz von Image Captioning für eigene Inhalte ist es möglich, im Sinne der Barrierefreiheit Daten für Menschen mit Sehbehinderungen automatisch generieren zu lassen. Das spart Arbeitszeit und Kosten. 3 4

  2. Filterung und Suche von Inhalten: Bei der Anwendung von Image Captioning auf eine große Anzahl von Bildern kann eine automatische Grobklassifikation auf der Grundlage der ausgegebenen Zusammenfassungen durchgeführt werden, ohne dass eine Überwachung durch eine Person oder die Erstellung eines Testdatensatzes erforderlich ist.

Abhängig von der geforderten Qualität und Genauigkeit der Bildklassifikation kann eine weitere Feinklassifikation durch einen Menschen erforderlich sein. Die automatische Klassifizierung durch BLIP sollte jedoch für die meisten Anwendungsfälle eine ausreichende Genauigkeit aufweisen.

  1. Social Media: Durch die Änderung der Beschreibung, die die Informationen in einem Bild darstellt, kann die Interaktion in sozialen Medien erhöht werden. Dies ist vor allem für Werbekampagnen interessant, kann aber auch für geschäftliche oder private Accounts genutzt werden. 4

  2. Autonome Mobilität: Um ein besseres Verständnis von autonomen Mobilitätssystemen zu ermöglichen, kann es notwendig sein, die Daten mit zusätzlichen Details zu versehen, die durch “Image Captioning”-Systeme automatisch erkannt und dem Datensatz hinzugefügt werden können. Dies kann potenziell die Entwicklungszeit von autonomen Mobilitätssystemen verkürzen und deren Genauigkeit verbessern. 5

Die genannten Bereiche sind nur eine Auswahl von Beispielen, die sich gut darstellen lassen. Weitere Beispiele konzentrieren sich auf die Bereiche Mensch-Maschine-Interaktion, industrielle Anwendungen und Verkehrsdatenanalyse. 4

TL;DR

In diesem Beitrag haben wir den Pretrained Transformer BLIP vorgestellt. BLIP ist ein neuronales Netz, das darauf trainiert wurde, automatisch Kurzbeschreibungen oder Überschriften für Bilder zu generieren. Anwendungsfelder finden sich in Bereichen wie Barrierefreiheit, Inhaltsfilterung und -suche, autonome Mobilität und vielen anderen. Unserer Meinung nach sind die Ergebnisse, die mit BLIP generiert werden, sehr gut. Ein Problem, das wir bei den automatischen Ausgaben identifiziert haben, ist, dass in seltenen Fällen Informationen hinzugefügt werden, die realistisch sein könnten, aber nicht direkt überprüfbar erscheinen. Ebenso können komplexe Schriftarten und Perspektiven bei Textproblemen nicht immer perfekt durch das Modell gelöst werden.

Quellen

Footnotes

  1. openaccess.thecvf.com

  2. mediaup.de

  3. arxiv.org 2

  4. arxiv.org 2 3

  5. arxiv.org