Alles, was Sie über OpenAI CLIP wissen müssen

Alles, was Sie über OpenAI CLIP wissen müssen

OpenAIs CLIP (Contrastive Language-Image Pre-training) ist ein Modell, das lernt, Bilder und ihre Textbeschreibungen zu verknüpfen. Durch die Analyse seiner Funktionsweise und Implementierung erhalten Sie ein umfassendes Verständnis von OpenAI CLIP.

Einführung

Im Januar 2021 stellte OpenAI CLIP (Contrastive Language-Image Pre-Training) vor – einen Zero-Shot-Klassifikator, der mithilfe seines Verständnisses der englischen Sprache Bilder klassifizieren kann, ohne auf einem bestimmten Datensatz trainiert worden zu sein. Das Modell wendet aktuelle Fortschritte bei großen Transformatoren (ähnlich wie GPT-3) auf den Bereich der Bildverarbeitung an.

Die Ergebnisse sind bemerkenswert beeindruckend. Wir haben ein CLIP-Tutorial und ein CLIP-Colab-Notebook vorbereitet, mit denen Sie das Modell an Ihren eigenen Bildern ausprobieren können.

Was ist OpenAI CLIP?

CLIP steht für Contrastive Language-Image Pre-training und ist eine effiziente Methode zum Lernen aus natürlicher Sprachüberwachung. CLIP wurde 2021 im Paper „Learning Transferable Visual Models From Natural Language Supervision“ vorgestellt und ist ein gemeinsames Einbettungsmodell für Bilder und Texte.

CLIP wird mit 400 Millionen Bild-Text-Paaren in einer selbstüberwachten Weise trainiert und bildet sowohl Texte als auch Bilder in denselben Einbettungsraum ab. Beispielsweise hätten ein Bild eines Hundes und der Satz „ein Bild eines Hundes“ sehr ähnliche Einbettungen und wären im Vektorraum nahe beieinander. Diese Fähigkeit ist bedeutend, da sie die Erstellung verschiedener Anwendungen ermöglicht, z. B. die Suche in einer Bilddatenbank mit einer Beschreibung oder umgekehrt.

CLIPs Leistung

Trainingseffizienz: CLIP ist eines der effizientesten Modelle und erreicht eine Genauigkeit von 41 % bei 400 Millionen Bildern. Es übertrifft andere Modelle wie Bag of Words Prediction (27 %) und Transformer Language Model (16 %) bei der gleichen Anzahl von Bildern. Das zeigt, dass CLIP deutlich schneller trainiert als andere Modelle in seinem Bereich.

Generalisierung: CLIP wurde auf eine Vielzahl von Bildstilen trainiert und ist daher weitaus flexibler als Modelle wie ImageNet. Es ist wichtig zu beachten, dass CLIP bei Bildern, mit denen es trainiert wurde, gut generalisiert, aber bei Bildern außerhalb seines Trainingsbereichs möglicherweise weniger effektiv ist. Nachfolgend finden Sie Beispiele für einige der verschiedenen Bildstile:

Wie CLIP funktioniert

Architektur

Das CLIP-Modell besteht aus zwei Hauptkomponenten: einem Text-Encoder und einem Bild-Encoder. Der Text-Encoder verwendet einen Transformer – eine Architektur, die die NLP seit 2017 revolutioniert hat, sodass seine Verwendung nicht überrascht. Eine hervorragende visuelle Erklärung finden Sie im folgenden Blog.

Für den Bild-Encoder experimentierten die Autoren mit zwei verschiedenen Modellen: ResNet-50 und Vision Transformer (ViT). ResNet-50 basiert auf Convolutional Neural Networks (CNNs) und war die ursprüngliche State-of-the-Art-Architektur für die Bildklassifizierung. ViT ist eine neuere Adaption des Transformers für Bilder, die jedes Bild in eine Sequenz von Patches aufteilt und diese wie eine Sequenz von Tokens behandelt. Die Autoren fanden heraus, dass der ViT schneller trainierte.

Das größte ResNet-Modell, RN50x64, benötigte 18 Tage Trainingszeit auf 592 V100-GPUs, während der größte Vision Transformer 12 Tage auf 256 V100-GPUs benötigte.

Sowohl der Text- als auch der Bild-Encoder wurden von Grund auf neu trainiert.

Wir trainieren CLIP von Grund auf neu, ohne den Bild-Encoder mit ImageNet-Gewichten oder den Text-Encoder mit vortrainierten Gewichten zu initialisieren.

Training

Die Autoren versuchten zunächst, ein Bildbeschreibungsmodell zu trainieren, das die genaue Bildunterschrift oder Beschreibung für ein gegebenes Bild vorhersagt.

Unser anfänglicher Ansatz, ähnlich wie VirTex, trainierte gemeinsam ein Bild-CNN und einen Text-Transformer von Grund auf, um die Bildunterschrift eines Bildes vorherzusagen. Wir stießen jedoch auf Schwierigkeiten, diese Methode effizient zu skalieren.

Sie stellten jedoch fest, dass das Training eines Bildbeschreibungsmodells auf den 400 Millionen (Bild, Text)-Paaren nicht skalierbar war. Stattdessen entschieden sie sich für einen kontrastiven Repräsentationslernansatz. Ziel dieses Ansatzes ist es, einen Einbettungsraum zu lernen, in dem ähnliche Stichprobenpaare nahe beieinander liegen, während unähnliche weit voneinander entfernt sind.

In einem typischen kontrastiven Lernsetup erhält das Model Beispiele in der Form (Anker, Positiv, Negativ). Hierbei ist der Anker ein Bild aus einer Klasse, z. B. ein Hund, das Positive ein weiteres Bild derselben Klasse (ein anderer Hund) und das Negative ein Bild aus einer anderen Klasse, z. B. ein Vogel. Die Bilder werden eingebettet, und das Modell wird trainiert, den Abstand zwischen Einbettungen derselben Klasse zu minimieren (distance(anchor, positive)) und den Abstand zwischen Einbettungen verschiedener Klassen zu maximieren (distance(anchor, negative)). Dies ermutigt das Modell, sehr ähnliche Einbettungen für dieselben Objekte und unterschiedliche Einbettungen für verschiedene Objekte zu erzeugen.

Eine Visualisierung des kontrastiven Lernens. Quelle: https://www.v7labs.com/blog/contrastive-learning-guide

Derselbe Ansatz kann auf Texte sowie auf Kombinationen von Texten und Bildern angewendet werden. Beispielsweise könnte ein einzelnes Trainingsbeispiel in CLIP aus einem Anker (einem Bild eines Hundes), einem Positiv (der Bildunterschrift „ein Bild eines Hundes“) und einem Negativ (der Bildunterschrift „ein Bild eines Vogels“) bestehen.

CLIP verallgemeinert diesen Ansatz noch weiter, indem es einen Multi-Class-N-pair-Verlust verwendet – eine Erweiterung der Standardmethode, die mehrere Negative und Positive für jeden Anker umfasst. Wie im Paper beschrieben:

Bei einer Batch von N (Bild, Text)-Paaren wird CLIP trainiert, vorherzusagen, welche der N × N möglichen (Bild, Text)-Paarungen in einer Batch tatsächlich aufgetreten sind. Dazu lernt CLIP einen multimodalen Einbettungsraum, indem es gemeinsam einen Bild-Encoder und einen Text-Encoder trainiert, um die Kosinusähnlichkeit der Bild- und Texteinbettungen der N echten Paare in der Batch zu maximieren, während die Kosinusähnlichkeit der Einbettungen der N² − N falschen Paarungen minimiert wird. Es optimiert einen symmetrischen Kreuzentropieverlust über diese Ähnlichkeitswerte.

Prompt Engineering und Ensembling

Mit dem Aufkommen von Sprachmodellen ist Prompt Engineering zu einer gängigen Praxis geworden, um gute Ergebnisse aus generativen Modellen zu erzielen. Da der Text-Encoder in CLIP ein Transformer-Modell ist, stellten die Autoren fest, dass Prompt Engineering entscheidend für eine gute Zero-Shot-Leistung ist. Sie beobachteten, dass in ihrem Vortrainingsdatensatz der mit dem Bild gepaarte Text relativ selten ein einzelnes Wort war, wie z. B. „Hund“ zur Darstellung einer Klassenbezeichnung. Häufiger handelte es sich um einen vollständigen Satz, wie eine Bildunterschrift oder Beschreibung des Bildes. Daher fanden die Autoren, dass der Prompt „ein Foto eines {Objekts}“ ein guter Standard war, obwohl spezifischere Prompts in bestimmten Fällen besser funktionierten. Für Satellitenbilder war beispielsweise „ein Satellitenfoto eines {Objekts}“ effektiver.

Die Autoren experimentierten auch mit Model Ensembling, einer Technik, bei der die Vorhersagen mehrerer Modelle kombiniert werden, um das endgültige Ergebnis zu erzeugen. Dieser Ansatz wird häufig im maschinellen Lernen verwendet, um Probleme mit hoher Varianz und niedriger Verzerrung (Overfitting) zu bewältigen. Bei CLIP wurde das Ensemble durch die Verwendung vieler verschiedener Prompts zur Erstellung von Klassifikatoren konstruiert.

Sowohl Prompt Engineering als auch Ensembling verbesserten die Leistung auf ImageNet erheblich.

Auf ImageNet erstellen wir ein Ensemble aus 80 verschiedenen Kontextprompts, und dies verbessert die Leistung um weitere 3,5 % gegenüber dem oben diskutierten einzelnen Standardprompt. Zusammengenommen verbessern Prompt Engineering und Ensembling die ImageNet-Genauigkeit um fast 5 %.

Anwendungen von OpenAI CLIP

OpenAI CLIP bietet eine breite Palette von Anwendungen und Anwendungsfällen in der Bild-Text-Analyse. Zu den wichtigsten Anwendungen und Anwendungsfällen von CLIP gehören:

  • Bildklassifizierung: CLIP kann Bilder basierend auf ihrem Inhalt in verschiedene Klassen oder Kategorien einteilen. Es kann die relevanteste Klassenbezeichnung für ein gegebenes Bild vorhersagen.
  • Bildabruf: CLIP kann relevante Bilder basierend auf einer gegebenen Textabfrage abrufen. Es kann Bilder finden, die dem eingegebenen Text semantisch ähnlich sind.
  • Inhaltsmoderation: CLIP kann verwendet werden, um unangemessene oder anstößige Inhalte in Bildern und Texten automatisch zu erkennen und zu moderieren.
  • Bildbeschriftung: CLIP kann Bildunterschriften oder Beschreibungen für Bilder basierend auf ihrem Inhalt generieren.
  • Visuelle Fragebeantwortung: CLIP kann Fragen zu Bildern basierend auf ihrem Inhalt beantworten.

Implementierung von OpenAI CLIP mit Huggingface Transformers

Sie können CLIP auf Ihrem lokalen Rechner mit nur wenigen Codezeilen mithilfe der HuggingFace Transformers-Bibliothek nutzen! Importieren Sie zunächst die Bibliothek und laden Sie das vortrainierte Modell.

import transformers

model = transformers.CLIPModel.from_pretrained(“openai/clip-vit-base-patch32”)
processor = transformers.CLIPProcessor.from_pretrained(“openai/clip-vit-base-patch32”)

Erstellen Sie als Nächstes zwei Listen: eine mit Bildunterschriften oder Beschreibungen und eine mit Bildern. Bilder können entweder als URLs oder PIL-Bilder dargestellt werden.

import PIL.Image

images = [PIL.Image(“for_example_a_dog_image.jpeg”)]
possible_classes = [“an image of a bird”, “an image of a dog”, “an image of a cat”]

Rufen Sie den Prozessor auf, der sowohl die Texte als auch die Bilder tokenisiert und für die Eingabe in das Modell vorbereitet. Dieser Vorgang ähnelt dem Aufruf eines Tokenizers im Standardfall mit nur Text. Bei einer Batch von Beschreibungen wird Padding angewendet, um sicherzustellen, dass sie alle die gleiche Länge für die Tensorspeicherung haben, und Truncation wird verwendet, um lange Sätze auf die maximale Sequenzlänge (die, wie bereits erwähnt, 76 beträgt) zu begrenzen. Übergeben Sie schließlich die tokenisierten Eingaben an das Modell, das sie dann durch die Text- und Bild-Encoder leitet.

with torch.no_grad():
inputs = processor(text=descriptions, images=images, return_tensors=“pt”, padding=True, truncation=True)
outputs = model(**inputs)

Nun können wir die Matrix der Skalarprodukte mit zwei verschiedenen Funktionen abrufen. Verwenden Sie `logits_per_image`, um eine Skalarproduktmatrix mit der Form [num_of_images, num_of_text] zu erhalten, und `logits_per_text`, um die Matrix mit der Form [num_of_text, num_of_images] zu erhalten.

dot_products_per_image = outputs.logits_per_image
dot_products_per_text = outputs.logits_per_text

Zuletzt können wir, falls gewünscht, eine Softmax-Funktion auf diese Matrizen anwenden, um eine Wahrscheinlichkeitsverteilung für jedes Bild zu erhalten.

probabilities = dot_products_per_image.softmax(dim=1)

Einschränkungen bei der Verwendung von OpenAI CLIP

Obwohl das Paper zahlreiche Experimente und Ergebnisse behandelt, ist es wichtig anzuerkennen, dass CLIP mehrere Einschränkungen aufweist.

Erstens ist CLIP aufgrund der zuvor erwähnten Designentscheidung kein generatives Modell und kann Aufgaben wie die Bildbeschriftung nicht durchführen. Andere generative KI kann jedoch mehr Arbeit leisten als OpenAI CLIP. Zum Beispiel:

novita.ai LLM führt Bildbeschriftung durch

andere generative KI wie novita.ai kann die Defizite von CLIP durch die Anwendung entsprechender APIs ausgleichen.

Die Autoren stellen fest, dass CLIP noch weit von State-of-the-Art entfernt ist und nur mit einem ResNet mit einer linearen Schicht darüber vergleichbar ist. Es generalisiert bei bestimmten Aufgaben schlecht; zum Beispiel erreicht es nur 88 % Genauigkeit beim einfachen MNIST-Datensatz zur handschriftlichen Ziffernerkennung, wahrscheinlich weil es keine ähnlichen Bilder in seinen Trainingsdaten gibt und CLIP wenig tut, um dieses Problem zu beheben.

CLIP wird mit ungefilterten und unkuratierten Bild-Text-Paaren aus dem Internet trainiert, was dazu führt, dass das Modell viele soziale Verzerrungen lernt. Diese Bedenken ähneln denen großer Sprachmodelle (LLMs) derzeit, bei denen Techniken wie RLFHF (Robust Low-Frequency Hacking Framework) und Direct Preference Optimization versuchen, diese abzumildern.

Darüber hinaus war in der ursprünglichen Implementierung die maximale Sequenzlänge für den Transformer-Text-Encoder auf 76 begrenzt. Diese Einschränkung ergibt sich daraus, dass der Datensatz hauptsächlich aus Bildern und kurzen Bildunterschriften besteht. Daher funktioniert das vorgefertigte vortrainierte Modell möglicherweise nicht gut mit längeren Texten, da diese nach 76 Tokens abgeschnitten werden, da das Modell mit kurzen Texten trainiert wurde.

Zukünftige Richtungen in der Bild-Text-Analyse mit CLIP

Der Erfolg von OpenAI CLIP hat neue Möglichkeiten für die Zukunft der Bild-Text-Analyse eröffnet. Forscher und Entwickler erkunden kontinuierlich innovative Anwendungen und Fortschritte in diesem Bereich.

Eine zukünftige Richtung ist die Integration von CLIP mit anderen Modalitäten wie Audio und Video, um multimodale Analysen zu ermöglichen. Dies würde es CLIP erlauben, komplexe Multimediadaten zu verstehen und zu analysieren, was zu umfassenderen und genaueren Ergebnissen führt.

Darüber hinaus können Fortschritte beim selbstüberwachten Lernen und unüberwachten Repräsentationslernen die Leistung und Generalisierungsfähigkeit von CLIP weiter verbessern. Diese Fortschritte können neues Potenzial für CLIP in verschiedenen Bereichen erschließen, darunter Gesundheitswesen, Robotik und Multimedia-Inhaltsanalyse.

Die Zukunft der Bild-Text-Analyse mit CLIP ist vielversprechend, und die laufende Forschung und Entwicklung wird die Grenzen dieses spannenden Bereichs weiter verschieben.

Fazit

OpenAIs CLIP markiert einen bedeutenden Fortschritt in der Bild-Text-Analyse, indem es große Transformatoren und kontrastives Lernen nutzt, um Bilder basierend auf natürlichen Sprachbeschreibungen zu klassifizieren. Seine Vielseitigkeit ermöglicht zahlreiche innovative Anwendungen, obwohl es mit Einschränkungen wie Schwierigkeiten bei Aufgaben außerhalb seines Trainingsbereichs, einer begrenzten Sequenzlänge für Texte und übernommenen sozialen Verzerrungen aus seinen ungefilterten Trainingsdaten konfrontiert ist.

Techniken wie Prompt Engineering und Ensembling haben seine Leistung verbessert, und zukünftige Fortschritte bei der Integration anderer Modalitäten wie Audio und Video sowie selbstüberwachtes und unüberwachtes Lernen versprechen, CLIPs Fähigkeiten weiter zu verbessern. Die laufende Forschung und Entwicklung in diesem Bereich deutet auf eine vielversprechende Zukunft für umfassendere und genauere Multimedia-Analysen hin.

novita.ai, die Komplettplattform für grenzenlose Kreativität, die Ihnen Zugang zu über 100 APIs bietet. Von Bildgenerierung und Sprachverarbeitung bis hin zu Audioverbesserung und Videobearbeitung, günstig nach Pay-as-you-go-Prinzip, befreit Sie von GPU-Wartungsproblemen, während Sie Ihre eigenen Produkte erstellen. Testen Sie es kostenlos.

Empfohlene Lektüre

Was ist der Unterschied zwischen LLM und GPT?

LLM Leaderboard 2024 Vorhersagen enthüllt

Novita AI LLM Inference Engine: der größte Durchsatz und die günstigste Inferenz verfügbar