Voorbereiding
Afhankelijk van hoe en wat je traint, moet je de foto’s mogelijk bijsnijden tot een specifieke breedte en hoogte. Andere soorten training kunnen afbeeldingen indelen in verschillende formaten en vereisen geen bijsnijden. Zoek uit wat vereist is voor de trainingsmethode die je gebruikt, het model dat je traint en het programma dat je gebruikt om je model te trainen.Bijschriften – Algemene opmerkingen
Vermijd geautomatiseerde bijschriften
- BLIP en deepbooru zijn veelbelovend, maar het is nog wat vroeg voor ze.
- BLIP en deepbooru hebben moeite met context en relatieve belangrijkheid.
- Het is sneller om handmatig bijschriften te maken dan om fouten van BLIP of deepbooru te corrigeren en alsnog handmatig bijschriften te moeten maken.
Maak bijschriften op dezelfde manier als je prompt
- Bijschriften maken en prompten hangen met elkaar samen.
- Let op hoe je معمولlijk prompt. Gebruik je uitgebreide zinnen? Korte beschrijvingen? Vage of gedetailleerde prompts?
- Maak bijschriften in een vergelijkbare stijl en met vergelijkbare uitgebreidheid als hoe je معمولlijk prompt.
Volg een vaste structuur per concept
- Het volgen van een structuur komt het leerproces ten goede.
- Je kunt één structuur hebben voor foto’s en een andere voor illustraties. Probeer echter te voorkomen dat je structuren door elkaar gebruikt bij het maken van bijschriften voor één dataset.
Bijschriften zijn als variabelen die je in je prompts kunt gebruiken
Alles wat je in een bijschrift beschrijft, kun je zien als een variabele die je in je prompt kunt manipuleren. Dit heeft twee implicaties:- Je wilt zo veel mogelijk details beschrijven over alles wat niet het concept is dat je impliciet probeert aan te leren. Met andere woorden: beschrijf alles waarvan je wilt dat het een variabele wordt. Als je bijvoorbeeld een specifiek gezicht aanleert, maar de haarkleur wilt kunnen veranderen, dan moet je de haarkleur in elke afbeelding beschrijven zodat “hair color” een van je variabelen wordt.
- Je wilt niets beschrijven (behalve een beschrijving op klasseniveau) dat je impliciet wilt aanleren. Met andere woorden: datgene wat je probeert aan te leren, moet geen variabele worden. Als je bijvoorbeeld een specifiek gezicht aanleert, moet je het niet beschrijven als een gezicht met een grote neus. Je wilt niet dat de neusgrootte variabel is, omdat het dan niet meer dat specifieke gezicht is. Je kunt echter nog steeds “face” als bijschrift gebruiken als je dat wilt, wat context geeft aan het model dat je traint. Dit heeft wel enkele implicaties die in het volgende punt worden beschreven.
Klassen gebruiken als tags
- Hier zijn twee concepten van belang.
- Het gebruik van generieke klassentags zal die volledige klasse richting je trainingsdata sturen. Dit kan wel of niet gewenst zijn, afhankelijk van je doelen.
- Het gebruik van generieke klassentags biedt context aan het leerproces. Conceptueel is het makkelijker om te leren wat een “face” is wanneer het model al een redelijke benadering van “face” heeft.
- Als je de volledige klasse van je model richting je trainingsafbeeldingen wilt sturen, gebruik dan brede klassentags in plaats van specifieke. Als je je model bijvoorbeeld wilt aanleren dat elke man eruit moet zien als Brad Pitt, moeten je bijschriften de tag “man” bevatten, maar niet specifieker zijn dan dat. Dit beïnvloedt je model om een man die op Brad Pitt lijkt te produceren telkens wanneer je het woord “man” in je prompt gebruikt. Dit stelt je model ook in staat om tijdens de training te putten uit en gebruik te maken van wat het al weet over het concept “man”.
- Als je de impact van je training op de volledige klasse wilt verminderen, voeg dan specifieke tags toe en leg minder nadruk op klassentags. Als je je model bijvoorbeeld wilt aanleren dat alleen “ohwxman” eruit moet zien als Brad Pitt, en je niet wilt dat elke “man” eruitziet als Brad Pitt, dan zou je “man” niet als tag gebruiken en alleen taggen met “ohwxman”. Dit vermindert de impact van je trainingsafbeeldingen op de tag “man” en koppelt je trainingsafbeeldingen sterk aan “ohwxman”. Je model zal putten uit wat het weet over “ohwxman”, wat praktisch niets is (zie opmerking), en bouwt daardoor kennis bijna uitsluitend op basis van je trainingsafbeeldingen op, waardoor een zeer sterke associatie ontstaat.
- Opmerking: Dit is vereenvoudigd om het begrijpelijk te houden. In werkelijkheid zou dit worden getokenized in twee tokens, “ohwx” en “man”, maar deze tokens zouden voor trainingsdoeleinden sterk gecorreleerd zijn, wat nog steeds de impact op de algemene klasse “man” zou moeten verminderen vergeleken met trainen met “man” als token in het bijschrift. De betrokken wiskunde is behoorlijk complex en valt ruim buiten de scope van dit document.
Consistente bijschriften
- Gebruik consistente bijschriften in al je training. Dit helpt je om je concept consistent op te roepen bij het prompten.
- Het gebruik van inconsistente tags in je dataset maakt het concept dat je probeert aan te leren moeilijker te begrijpen voor het model, omdat je het in feite dwingt om zowel het concept als de verschillende formuleringen voor dat concept te leren. Het is veel beter om het alleen het concept onder één enkele term te laten leren.
- Je wilt bijvoorbeeld waarschijnlijk niet zowel “legs raised in air” als “raised legs” gebruiken als je één enkel concept probeert aan te leren van een persoon met de benen in de lucht. Je wilt deze pose consistent kunnen oproepen in je prompt, dus kies één manier om het bijschrift te formuleren.
Vermijd herhaling
- Probeer herhaling waar mogelijk te vermijden. Net als bij prompten verhoogt het herhalen van woorden de weging van die woorden.
- Als we bijvoorbeeld het woord “background” te vaak herhalen, kunnen we drie tags hebben die “background” bevatten (bijv. simple background, white background, lamp in background). Ook al willen we dat de achtergrond een lage weging heeft, hebben we onbedoeld de weging aanzienlijk verhoogd. Het zou beter zijn om deze te combineren of anders te formuleren (bijv. simple white background with a lamp).
Let op de volgorde
- Ook hier geldt: net als bij prompten is volgorde belangrijk voor de relatieve weging van tags.
- Het hebben van een specifieke structuur of volgorde die je doorgaans gebruikt voor bijschriften kan je helpen om de relatieve wegingen van tags tussen afbeeldingen in je dataset te behouden, wat het trainingsproces ten goede zou moeten komen.
- Een gestandaardiseerde volgorde maakt het hele proces van bijschriften maken sneller naarmate je vertrouwd raakt met het maken van bijschriften binnen die structuur.
Gebruik de bestaande kennis van je model in je voordeel
- Je model produceert al behoorlijke resultaten en begrijpt redelijk goed wat je prompt. Maak daar gebruik van door bijschriften te maken met woorden die al goed werken in je prompts.
- Je wilt beschrijvende woorden gebruiken, maar als je woorden gebruikt die te obscure of niche zijn, kun je waarschijnlijk niet veel van de bestaande kennis benutten. Je zou bijvoorbeeld “sarcastic” of “mordacious” kunnen zeggen. Het model heeft enig idee wat “sarcastic” overbrengt, maar het heeft waarschijnlijk geen idee wat “mordacious” betekent.
- Je kunt dit ook vanuit het tegenovergestelde perspectief bekijken. Als je het concept “mordacious” probeert aan te leren, zou je een dataset kunnen hebben vol afbeeldingen die “sarcastic” overbrengen en die bijschriften kunnen geven met zowel de tags “sarcastic” als “mordacious” naast elkaar (zodat ze dicht bij elkaar liggen in relatieve weging).
Bijschriften – Structuur
Dit is vooral bedoeld voor mensen of personages, dus het is mogelijk niet helemaal van toepassing op iets als fantasylandschappen, maar misschien kan het wat inspiratie bieden.Algemene indeling
Losse associaties
- Dit is waar we eventuele laatste losse associaties plaatsen die we met de afbeelding hebben.
- Dit kan alles zijn wat in ons opkomt, meestal “gevoelens” die we ervaren wanneer we naar de afbeelding kijken of concepten waarvan we vinden dat ze worden weergegeven; eigenlijk kan alles hier, zolang het maar in de afbeelding aanwezig is.
- Houd er rekening mee dat dit voor losse associaties is. Als de afbeelding heel duidelijk een bepaald gevoel uitbeeldt, willen we het mogelijk dichter bij het begin van het bijschrift taggen voor een hogere weging.
- Bijvoorbeeld: happy, sad, joyous, hopeful, lonely, sombre
VOLLEDIG VOORBEELD VAN ÉÉN AFBEELDING
Dit is een voorbeeld van hoe we één afbeelding zouden voorzien van een bijschrift die we van safebooru hebben gehaald. We nemen aan dat ik de stijl van deze afbeelding wil trainen en deze wil koppelen aan de tag “ohwxStyle”, en we nemen aan dat we veel afbeeldingen in deze stijl binnen onze dataset hebben. Voorbeeldafbeelding: https://safebooru.org/index.php?page=post&s=view&id=3887414- Globals: ohwxStyle
- Type of perspectief van een: anime, drawing, of a young woman, full body shot, from side
- Actiewoorden: sitting, looking at viewer, smiling, head tilt, holding a phone, eyes closed
- Onderwerpbeschrijving: short brown hair, pale pink dress with dark edges, stuffed animal in lap, brown slippers
- Opvallende details: sunlight through windows as lighting source
- Achtergrond of locatie: brown couch, red patterned fabric on couch, wooden floor, white water-stained paint on walls, refrigerator in background, coffee machine sitting on a countertop, table in front of couch, bananas and coffee pot on table, white board on wall, clock on wall, stuffed animal chicken on floor
- Losse associaties: dreary environment