Wanneer je met beeldgenererende AI werkt, kom je vaak de term 'CLIP' tegen. Veel mensen beschouwen het simpelweg als een 'interpreter' die tekst naar afbeeldingen vertaalt, maar de rol van CLIP is veel dieper en verfijnder. Vooral met de opkomst van de 'dual CLIP'-methode, die twee of meer encoders gebruikt om hoogwaardige afbeeldingen te genereren, evolueert ook de strategie voor het schrijven van prompts.

In dit artikel zullen we het basisconcept van CLIP bespreken en kijken hoe we prompts kunnen optimaliseren in een dual encoder-systeem.


1. Wat is CLIP?



CLIP (Contrastive Language-Image Pre-training) is een model ontwikkeld door OpenAI, dat zoals de naam al aangeeft, de 'taal (tekst)' en 'afbeeldingen' contrasteert (Contrastive) en samen leert in een multi-modale (Multi-modal) manier.

Kernfunctie is het positioneren van afbeeldingen en teksten in dezelfde 'latente ruimte (Latent Space)', een virtuele vectorruimte.

  • Als de tekst "hond" zich op een bepaalde ruimtelijke coördinaat (vector) bevindt,

  • wordt ook de afbeelding van de "hond" zodanig getraind dat deze zich in de nabijheid van die coördinaat bevindt.

De rol van CLIP in beeldgeneratiemodellen:

Belangrijk is dat CLIP zelf geen generator (Generator) is die afbeeldingen tekent. In plaats daarvan fungeert het als een 'jury' of 'navigator' die evalueert hoe goed de momenteel gegenereerde afbeelding overeenkomt met de tekstprompt van de gebruiker. Hoe hoger de CLIP-score (hoe dichter de tekst en afbeelding bij elkaar liggen), des te meer oordeelt het generatiemodel dat "deze richting goed is" en voegt het meer details toe.


2. De opkomst van dual encoders: waarom twee modellen gebruiken?

Recentelijk hebben krachtige modellen zoals Stable Diffusion XL (SDXL) de 'dual text encoder' aanpak in plaats van een enkele CLIP aangenomen. Een bekend voorbeeld is de combinatie van clip_l en t5xxl_fp16.

Dit is te wijten aan 'taakverdeling en specialisatie'.

  1. clip_l (visual/keyword matching expert):

    • De traditionele tekstencoder van CLIP.

    • Sterk in het verbinden van visuele concepten tussen afbeeldingen en teksten.

    • Wordt voornamelijk gebruikt om sleutelwoorden, stijlen, composities en andere visueel belangrijke elementen te vangen.

  2. t5xxl_fp16 (taal/context expert):

    • T5 is een enorm taalmodel (LLM) ontwikkeld door Google, dat veel groter is dan de basis tekstencoder van CLIP.

    • Het begrijpt veel dieper complexe zinsstructuren, context en subtiele relaties tussen woorden, in plaats van alleen eenvoudige sleutelwoorden.

    • Als 'taalexpert' pakt het de fijne nuances van de prompts op.

Door de twee encoders samen te gebruiken, kunnen we zowel de betekenis van complexe en lange zinnen (T5) als de kern visuele stijlen (CLIP-L) nauwkeurig weergeven, waardoor we veel rijkere en nauwkeurigere afbeeldingen kunnen genereren.


3. De optimale manier om prompts te schrijven: de combinatie van zinnen en sleutelwoorden



Om de prestaties van dit dual encoder-systeem maximaal te benutten, is het goed om prompts te bieden die passen bij de kenmerken van elke encoder. Veel geavanceerde beeldgeneratie-tools (zoals ComfyUI) laten je verschillende teksten invoeren voor elke encoder.

  • T5-XXL (taalexpert) → een natuurlijke 'zin'

    • Het is aan te raden om in een volledige zin te beschrijven, zodat het model de context begrijpt.

    • Voorbeeld: "Een Japanse jongedame in haar 20's, met een zwarte paardenstaart en een bril met zwarte montuur. Ze zit op een wit tapijt, luistert naar muziek en kijkt in de camera."

  • CLIP-L (visual matching expert) → 'kern sleutelwoorden'

    • Het is effectief om visueel belangrijke sleutel-elementen zoals stijl, object, kleur en compositie op te sommen.

    • Voorbeeld: "japanse vrouw, 20's, zwarte paardenstaart, zwarte bril, witte koptelefoon, wit tapijt, luisterend naar muziek, zittend, kijkend omhoog, van boven, hele lichaam, professionele echte foto"


4. Wat is er met prompts in JSON- of dictionaryvorm?

Om prompts systematisch te beheren, schrijf je ze soms in JSON- of dictionary (Python Dictionary) vorm.

{
"Character":"japanse jonge vrouw in haar 20's.",
"Appearance":{
"hair": "zwarte paardenstaart",
"wearing": "zwarte bril, witte draadloze koptelefoon"
},
"Action": "luisterend naar muziek, zittend op wit tapijt",
"style": "professionele echte foto"
}

Het is erg inefficiënt en ongewenst om deze structuur gewoon te kopiëren en naar de T5- en CLIP-L-encoders in te voeren.

Waarom is de effectiviteit lager?

  1. Inconsistentie met de leerwijze van het model: Modellen zoals T5 en CLIP leren natuurlijke zinnen (tekst). Programmatuur zoals {, }, " kan door het model als 'ruis' in plaats van 'taal' worden gezien.

  2. Contextbreuk: De organische contextuele verbinding tussen "Character": "..." en "Action": "..." wordt verbroken. Het model beschouwt "karakter" en "actie" als aparte informatie hoe het een natuurlijke scène kan combineren.

Voorbeeld van de juiste transformatie

Om de bovenstaande JSON-gegevens goed te gebruiken in het dual encoder-systeem, is de volgende 'vertaling' nodig.

  • T5-XXL (zinsvormige invoer):

    Een japanse jonge vrouw in haar 20's, met een zwarte paardenstaart, die zwarte bril en witte draadloze koptelefoon draagt. Ze luistert naar muziek terwijl ze op een wit tapijt zit. Dit is een professionele echte foto.

  • CLIP-L (sleutelwoordige invoer):

    japanse jonge vrouw, 20's, zwarte paardenstaart, zwarte bril, witte draadloze koptelefoon, luisterend naar muziek, zittend op wit tapijt, professionele echte foto

image_from_right_prompt


5. Samenvatting en conclusie

  1. CLIP is geen generator die afbeeldingen tekent, maar een 'jury' die de overeenkomsten tussen tekst en afbeelding beoordeelt.

  2. Dual encoder (T5 + CLIP-L) is een krachtige aanpak waarbij de 'taalexpert (T5)' en de 'visual matching expert (CLIP-L)' samenwerken.

  3. Om de beste resultaten te behalen, is het het beste om natuurlijke zinnen aan T5 en kern sleutelwoorden aan CLIP-L te geven.

  4. Het gebruik van gestructureerde gegevens zoals JSON of een dictionary rechtstreeks in prompts belemmert het begrip van het model, dus het moet worden omgezet naar natuurlijke zinnen en sleutelwoorden.