KI mal andersrum

Mit KI schnell Bildinhalte analysieren.

KI mal andersrum
Photo by Steve Johnson / Unsplash

Anfangs hatte ich viel Vergnügen damit, Bilder von einer KI generieren zu lassen. Es war immer interessant zu sehen, wie sich eine Maschine eine Situation vorstellt, verglichen mit den Bildern, die ich selbst dazu im Kopf hatte.

Aber irgendwann verfliegt der Reiz des Neuen und ich habe mich gefragt, wofür ich das eigentlich gebrauchen könnte. Sicherlich hatte ich bereits eine Anwendung: Die Erkennung von Personen auf unserem Gelände.

Nachdem ich gefragt wurde, auf welchen Fotos meine Kinder einen epischen Luftsprung vor der untergehenden Abendsonne machten, hatte ich zunächst keine Idee, wie ich diese schnell finden könnte. Nextcloud taggt zwar meine Fotos, beschreibt aber nicht Zusammenhänge...

Eine neue Herausforderung

Wie kann ich in die Metadaten eines JPG-Files eine Beschreibung der zu sehenden Situation schreiben? Oder vielleicht auch gleich die Datei entsprechend umbenennen?

Zunächst braucht es eine KI, die Bilder analysieren kann. Und da bin ich schnell auf das Projekt llamafile gestoßen. Also gleich mal das Main-File heruntergeladen und ausprobiert:

$ wget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4-main.llamafile
$ chmod +x llava-v1.5-7b-q4-main.llamafile

$ ./llava-v1.5-7b-q4-main.llamafile --version
llamafile v0.4.1 main

Cool. Das scheint sehr leicht zu funktionieren, da es sich quasi um eine PortableApp handelt, die auch unter Windows läuft. Mit 4GB bringt sie auch schon eine Menge Trainigsdaten mit.

Auf dem folgenden Bild sind ein Arbeitskollege von mir, Jess Garcia und ich zu sehen:

Gegen dieses Bild lasse ich mal llamafile antreten:

$ ./llava-v1.5-7b-q4-main.llamafile \
    --image lars_jess_and_me.jpg --temp 0 -ngl 35 \
    -e -p '### User: Was kannst Du auf diesem Foto erkennen?\n### Assistant:' \
    --silent-prompt 2>/dev/null

In dem Bild sind drei Männer, alle mit Jacken bekleidet und mit Daumen
hoch. Sie scheinen für eine Foto zu posieren und sind in einem
Konferenzraum oder einem ähnlichen Ort. Die Männer sind fröhlich und
scheinen es zu genießen, zusammen zu sein.
Alle Männer tragen Uhren, die auf ihren Armen sichtbar sind.

Für diese Antwort hat mein Laptop (ohne besondere GPU) etwa eine Minute benötigt. Mir fallen auch kleine Fehler auf: "... für eine Foto ...". Diese Informationen könnte ich bereits in die Metadaten des JPG-Files schreiben.

Wenn ich aber künftig meine Dateinamen ändern möchte, muss der Text deutlich kürzer sein, nur Kleinbuchstaben enthalten, und keine Leerzeichen:

$ ./llava-v1.5-7b-q4-main.llamafile \
    --image lars_jess_and_me.jpg --temp 0 -ngl 35 \
    --grammar 'root ::= [a-z]+ (" " [a-z]+)+' -n 16 \
    -e -p '### User: Was kannst Du auf diesem Foto erkennen?\n### Assistant:' \
    --silent-prompt 2>/dev/null | sed -e 's/ /_/g;s/$/.jpg/'


drei_maenner_mit_jacken_und_daumen_hoch.jpg

Jetzt hätten wir einen Dateinamen für unser JPG-File. Damit die Reihenfolge auf dem Datenträger nicht verändert wird, stelle ich dem Dateinamen noch ein Datum mittels $(date-r $PIC +%Y%m%d_%H%M%S ) voran. Dann sieht das ganze ungefähr so aus:

20160715_112457_drei_maenner_mit_jacken_und_daumen_hoch.jpg

Fazit

Es ist wirklich erstaunlich, wie schnell man mit ein wenig KI Probleme lösen kann. Als ich mit meinen ersten Schritten in die Welt der künstlichen Intelligenz startete, habe ich versucht alles selbst zu programmieren. Ich habe schnell erkannt, wie wenig ich auf diesem Gebiet geeignet bin. Es gibt jedoch inzwischen so viele fertige Lösungen, die man integrieren kann, so dass es fast ein Kinderspiel ist, KI zu nutzen.