Florence-2 zielt primär darauf ab, mehrere „Vision-Tasks“, also Aufgabenstellungen gleichzeitig zu beherrschen. Eine „Vision-Task“ wäre zum Beispiel, Bilder zu klassifizieren oder eine Object-Detection durchzuführen, also herauszufinden, wo auf einem Bild sich Objekte befinden. Auch Objekte zu zählen oder auch Objekte auf Bildern zu segmentieren gehören dazu. Hat man bislang für jede dieser Aufgaben eigene Neuronale Netze oder allgemein gesagt KI-Modelle trainiert, so kann Florence-2 gleich mehrere dieser Aufgaben erledigen. Florence-2 ist ein multimodales KI-Modell, da man mit ihm Bilder, Texte und auch Label-Informationen miteinander verschmelzen kann.
Lidar-Informationen
Lidar-Informationen werden zum Beispiel in selbstfahrenden Autos verwendet, um die Entfernung von Objekten zum Auto zu bestimmen. Nun kann Lidar mit normalen Bildern der Straßenlage, die unter anderem zeigen, ob sich Fußgänger auf der Straße befinden, zu neuen Informationen verbunden werden. Auch in RAG-Modelle (RAG steht für Retrieval Augmented Generation), also Modellen, die es erlauben, eigene Dateien mithilfe von Large Language Modellen zu besprechen, werden Texte mit Tabellen und Bildern gemeinsam verfügbar gemacht.
Multimodale KI-Modelle
Zurzeit sind vor allem multimodale Modelle in aller Munde. Eine Modalität kann zum Beispiel die gesprochene Sprache, Bilder, Videos oder auch Lidar-Informationen sein. Modalität in multimodaler KI bezeichnet also die unterschiedlichen Arten von Daten oder Eingaben, die ein KI-System verarbeiten kann. Multimodale KI-Modelle integrieren und analysieren diese verschiedenen Modalitäten gleichzeitig, um umfassendere und genauere Ergebnisse zu erzielen.
Bei Aufgaben, die Florence-2 bearbeitet, kann man zwei Dimensionen gegeneinander abtragen: die semantische Granularität gegenüber der räumlichen Hierarchie. Stellt man sich ein Bild mit einer normalen Straßenszene vor und legt diese quasi in den Nullpunkt, so läßt sich auf der y-Achse nach oben die semantische Granularität verfeinern. Vom Bild über ein Label zu einer Caption, also einer Kurzbeschreibung, bis hin zu einer ausführlichen Beschreibung, in der die einzelnen Textpassagen zu einzelnen Szenen im Bild passen. Auf der x-Achse wird die räumliche Hierarchie abgetragen. Von der Bildebene zu den einzelnen Szenen oder Regionen auf dem Bild hin zur Pixelebene auf der man Segmentierungen vornehmen kann, also für jeden Bildpunkt bestimmen kann, ob er zu einer bestimmten Klasse gehört.
Microsoft hat neben dem Modell auch gleich einen eigenen, großen Trainings-Datensatz FLD-5B erzeugt.
Abbildung 1: Auf der y-Achse ist die semantische Granularität vom einfachen Bild nach oben hin zur feingranularen, textuellen Darstellung der einzelnen Bildinhalte dargestellt. Auf der x-Achse ist die räumliche Hierarchie oder die Ebene der Bilder vom einfachen Bild bis hin zur Segmentierung abgetragen.
Aus „Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks” Seite 1. https://arxiv.org/pdf/2311.06242
Florence-2 ist also ein Multitasking-Modell mit einer „unified Architecture“, die es dem Benutzer erlaubt, die jeweilige Aufgabe, die gerade vom Modell erledigt werden soll, einfach im Coding also sogenanntes „Task_prompt“ mitzugeben.
Das Modell ist im Vergleich zu anderen aktuellen Modellen sehr klein und läßt sich auch auf dem Handy verwenden. Genau genommen stehen zwei Modelle zur Verfügung: “microsoft/Florence-2-base” und “microsoft/Florence-2-large”. Beide laufen sowohl auf einer CPU als auch auf einer GPU. Den Datensatz, mit dem Microsoft das Modell trainiert hat, wurde auch gleich veröffentlicht. Der Datensatz beinhaltet 126 Millionen Bilder. Das klingt viel, ist aber im Vergleich zu den großen Modellen eher bescheiden.
Das Modell lässt sich bei Huggingface testen oder auch einfach als Python-Source-Code in ein Jupyternotebook verwandelt und lokal ausführen. Beide Varianten lassen sich sehr einfach testen.
- Huggingface: https://huggingface.co/microsoft/Florence-2-large
- Huggingface-Demo: https://huggingface.co/spaces/gokaygokay/Florence-2
- Github: https://github.com/retkowsky/florence-2/blob/main/Florence-2%20-%20Advancing%20a%20Unified%20Representation%20for%20a%20Variety%20of%20Vision%20Tasks.ipynb
Eine der Besonderheiten ist, dass Florence-2 automatisches Datenlabeling ermöglicht. Was soll das heißen? Wenn man zum Beispiel eine Klassifikationsaufgabe hat und mit der KI Hunde und Katzen auseinander halten möchte – oder Werkstücke mit und ohne Fehler – , dann benötigt man dafür möglichst viele Beispielbilder samt Label. Das Label beschreibt, was auf dem Bild zu sehen ist. So kann die KI, die anfangs nicht weiß, durch den Vergleich von passenden Beispielen zu lernen. Soll heißen, wenn das Bild einen Hund zeigt und das dazugehörige Label „Hund“ ist, dann passt alles. Wenn das Label „Katze“ besagt, dann heißt das falsch und es muss gelernt werden.
Nicht zuletzt bringt Florence-2 sehr gute Zero-Shot Learning Qualitäten mit. Zero-Shot Learning beschreibt die Fähigkeit eines KI-Modells, Aufgaben zu bewältigen, ohne explizit mit Beispielen dafür trainiert worden zu sein. Das Modell generalisiert dabei Wissen aus anderen, bekannten Kategorien.
Hier ein paar Illustrationen, die veranschaulichen, wie das Modell funktioniert. Man kann im Coding einfach die gewünschte Aufgabe in einem „Task_promt“ mit angeben (task_prompt = ‘<CAPTION>’) oder wie hier bei dem Huggingface-Modell eine Auswahl treffen.
Die gewünschte Aufgabe kann im Dropdown einfach ausgewählt werden.
Wählt man die Option „CAPTION“, so bekommt man eine einfache Beschreibung des Bildes.
Wählt man eine andere Option, wie „MORE_DETAILED_CAPTION“, so bekommt man auch eine ausführliche Beschreibung des Bildes.
Hier wurde die Aufgabe „MORE_DETAILED_CAPTION“ gewählt. Ein Bild mit einem kranken Blatt wurde hochgeladen. Das Modell hat die Caption automatisch ergänzt.
“The image shows a close-up of a green leaf with multiple small brown spots scattered across its surface. The spots appear to be of different sizes and shapes, and they are clustered together in a circular pattern. The leaf appears to be healthy and well-maintained, with no visible signs of wear or damage. The background is blurred, but it seems to be a garden or a natural setting with other plants and foliage visible.”
Im nächsten Beispiel wurde „OD“ für Object Detection, also Objekterkennung, gewählt.
Hier wurde die Aufgabe „OD“ gewählt. Die Objekte im Bild sollen gefunden, eingerahmt und benannt werden. Sehr schön ist, dass man auch die Koordinaten einfach dazu bekommt:
{‘bboxes’: [[560.6400146484375, 344.5760192871094, 916.9920654296875, 878.0800170898438], [279.0400085449219, 140.8000030517578, 665.0880126953125,
843.2640380859375]], ‘labels’: [‘bear’, ‘lion’]}
Als weiteres Beispiel sei hier „CAPTION_TO_PHRASE_GROUNDING“ genannt, das es erlaubt, einen Text mitzugeben, der das Objekt beschreibt, das im Bild gefunden werden soll. In diesem Fall ein Löwe.
In diesem Kontext bedeutet “grounding” die Fähigkeit eines KI-Modells, Textinformationen mit visuellen Inhalten in Bildern zu verknüpfen. Es geht darum, Text (z.B. Beschreibungen oder Begriffe) mit spezifischen Bereichen oder Objekten in einem Bild zu verbinden, sodass das Modell versteht, welcher Text auf welchen Bildinhalt verweist.
Bei der Aufgabe „CAPTION_TO_PHRASE_GROUNDING“ kann man textuell angeben, nach welchem Objekt im Bild Ausschau gehalten werden soll. In diesem Fall sollte nach „a lion“ gesucht werden.
Wie funktioniert das Ganze?
Schauten wir uns kurz die Skizze an, um zu verstehen, wie Microsoft Florence-2 realisiert wurde.
Microsoft hat Encodings und Embeddings für Bilder und Texte generiert, genauer gesagt für die Multi-Task-Prompts. Diese Visual Embeddings wurden gemeinsam mit den Text- und Lokation-Embeddings in einen Transformer gegeben. Lokation-Embeddings repräsentieren zum Beispiel die Bounding-Boxen für die Objekterkennung. Aus dem Transformer kommen dann Text- und Lokation-Tokens, mit deren Hilfe dann die Assoziationen zwischen Bildelementen und Textelementen hergestellt wurden. Wie oben beschrieben können dabei verschiedene Granularitäten genutzt werden.
Architektur von Florence-2 wie in dem Aufsatz „Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks“ vorgestellt. Seite 3.
Florence-2 und AGI
AGI steht für “Artificial General Intelligence”. Dies bezieht sich auf eine Form von künstlicher Intelligenz, die in der Lage ist, eine breite Palette von Aufgaben zu bewältigen, die menschliches Verständnis und Intelligenz erfordern. Im Gegensatz zu spezialisierten KI-Systemen, die nur in engen Anwendungsbereichen gut funktionieren, würde eine AGI in der Lage sein, intellektuelle Aufgaben in verschiedenen Bereichen so gut wie oder sogar besser als ein Mensch zu bewältigen.
Man kann hier mindestens drei Varianten unterscheiden.
- Bei spezialisierten KI-Systemen geht man davon aus, dass die KI sogenannte Inselbegabungen bereits hat und darüber wird in der Regel kaum noch gesprochen. Natürlich kann eine KI extrem gut Schach oder GO spielen, stundenlang automatisierte Qualitätskontrollen mit Hilfe von Bildanalysen vornehmen oder der Microsoft Translator kann einen Satz in über hundert Sprachen übersetzen. Aber er kann auch vieles nicht so gut wie der Mensch.
- In der zweiten Variante kann eine KI alles, was ein Mensch kann und das mindestens genauso gut. Wie viele Jahre es noch dauern wird, bis wir dort angelangt sind, steht in den Sternen. Aktuell hat der Mensch die Nase noch weit vorne.
- In der dritten Variante kann die KI sehr viel, was der Mensch kann, aber darüber hinaus vieles mehr, wie zum Beispiel Ultraschall, Infrarot oder weitere Informationen verarbeiten, die uns nicht direkt zugänglich sind.
In allen drei Varianten jedoch spielt auch die Frage eine Rolle, ob eine einzelne KI mehrere Aufgaben gleichzeitig erledigen kann, so wie wir parallele Aufgaben verarbeiten können. Florence-2 ist auf jeden Fall ein sehr interessanter Ansatz für eine solche Fähigkeit.