Skip to main content

Vue d’ensemble

LoRA (Low-Rank Adaptation) est une technique de fine-tuning qui apprend à un modèle d’IA un nouveau style visuel à partir d’un petit ensemble d’images d’exemple. Elle fonctionne en injectant de nouveaux « poids de style » dans un modèle existant, ce qui rend l’entraînement à la fois rapide et efficace. Ce guide vous accompagne tout au long du workflow complet :

Préparer les images d'entraînement

Sélectionnez et téléversez des images de haute qualité qui représentent le style souhaité

Soumettre le job d'entraînement

Envoyez une requête POST à /styles/train avec les URL de vos images et votre configuration

Suivre la progression

Suivez l’état de votre job d’entraînement à l’aide du job_id renvoyé

Générer avec votre style

Appliquez votre style entraîné à la génération d’images

Préparer les images d’entraînement

Constituer votre jeu de données

La qualité de vos images d’entraînement a un impact direct sur les résultats. Les différents types d’entraînement ont des exigences différentes :
TypeCas d’usageConseils
StyleStyles artistiques, esthétiques visuellesStyle cohérent sur des sujets variés
CharacterRessemblance personnelle, personnages cohérentsPoses, expressions et éclairages variés
ObjectÉléments spécifiques, produitsAngles multiples, objet cohérent

Combien d’images ?

La qualité importe bien plus que la quantité. Un petit ensemble d’excellentes images surpassera un grand ensemble d’images médiocres.
Taille du jeu de donnéesRecommandation
5 imagesMinimum viable. Peut convenir pour des styles simples et cohérents
10-30 imagesRecommandé. Meilleur équilibre entre qualité et couverture
50+ imagesRendements décroissants sauf si le style présente une forte variation
Qualité > Quantité15 images de haute qualité produiront de meilleurs résultats que 50 images de basse qualité. Priorisez :
  • Une haute résolution (1024x1024 minimum)
  • Un style cohérent sur toutes les images
  • Aucun filigrane, superposition de texte ou artefact de compression
  • Des sujets variés tout en maintenant la cohérence stylistique
Exemples de jeux de données
  • Entraînement de personnage : photos d’une personne avec des poses, expressions et conditions d’éclairage variées. Évitez d’inclure d’autres personnes dans les images.
  • Entraînement de style : une collection d’œuvres dans un style cohérent. Par exemple, le jeu de données Ukiyo-E du Metropolitan Museum of Art propose des estampes japonaises idéales pour entraîner un style artistique.

Téléverser les images

Avant l’entraînement, téléversez vos images pour obtenir des URL hébergées. Utilisez le point de terminaison /assets :
import requests
import os
from dotenv import load_dotenv
import mimetypes

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")

image_dir = "training_images"
uploaded_urls = []

for filename in os.listdir(image_dir):
    if filename.lower().endswith(('.jpg', '.jpeg', '.png', '.webp')):
        filepath = os.path.join(image_dir, filename)
        mime_type, _ = mimetypes.guess_type(filepath)

        with open(filepath, 'rb') as f:
            response = requests.post(
                f"{API_BASE}/assets",
                headers={"Authorization": f"Bearer {API_TOKEN}"},
                files={"file": (filename, f, mime_type)},
                data={"description": f"Training image: {filename}"}
            )

        if response.ok:
            data = response.json()
            uploaded_urls.append(data["image_url"])
            print(f"Uploaded: {filename}")
        else:
            print(f"Failed: {filename}")

print(f"\nUploaded {len(uploaded_urls)} images")
Enregistrez les valeurs image_url renvoyées — vous les transmettrez au point de terminaison d’entraînement.

Entraîner votre style

Exemple d’entraînement de base

Soumettez les URL de vos images pour démarrer l’entraînement :
import requests
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")

# Training URLs from the upload step
urls = [
    "https://krea.ai/assets/img1.jpg",
    "https://krea.ai/assets/img2.jpg",
    "https://krea.ai/assets/img3.jpg",
    # ... more images
]

response = requests.post(
    f"{API_BASE}/styles/train",
    headers={
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    },
    json={
        "name": "Ukiyo-E Style",
        "urls": urls,
        "model": "flux_dev",
        "type": "Style",
        "max_train_steps": 500
    }
)

response.raise_for_status()
job = response.json()
print(f"Training started! Job ID: {job['job_id']}")

Types d’entraînement

Le paramètre type définit des valeurs par défaut intelligentes optimisées pour votre cas d’usage :
TypeIdéal pour
StyleStyles artistiques, esthétiques visuelles
CharacterRessemblance personnelle, personnages cohérents
ObjectÉléments spécifiques, produits
DefaultEntraînement générique

Paramètres

Paramètres requis

name
string
required
Un nom descriptif pour votre style personnalisé.Exemple : "Ukiyo-E Style", "Product Photos"
urls
array
required
Tableau d’URL d’images sur lesquelles s’entraîner. Ajoutez plus d’images pour de meilleurs résultats.

Paramètres optionnels

model
string
default:"flux_dev"
Modèle de base pour l’entraînement :Modèles d’image :
  • flux_dev - Haute qualité, polyvalent
  • flux_schnell - Modèle temps réel de BFL
  • qwen - Modèle d’Alibaba
  • z-image - Modèle d’image efficace d’Alibaba
  • wan22 - Génération d’images uniquement
Modèles vidéo :
  • wan - Modèle vidéo d’Alibaba
type
string
default:"Default"
Catégorie d’entraînement : Style, Object, Character ou Default
trigger_word
string
Mot personnalisé pour activer ce style dans les prompts. Lorsqu’il n’est pas spécifié, utilise le nom du style.
Choisissez des mots déclencheurs uniques qui n’apparaîtront pas dans des prompts typiques. Utilisez des underscores pour les déclencheurs à plusieurs mots : ukiyo_style
learning_rate
number
Contrôle l’intensité de l’entraînement. Des valeurs plus élevées entraînent plus vite mais peuvent conduire au surapprentissage.Plage recommandée : 0,0001 - 0,001
max_train_steps
integer
Nombre maximal d’itérations d’entraînement. Plage : 1-2000
batch_size
integer
Images traitées simultanément. Des lots plus grands = entraînement plus rapide mais plus de mémoire.

Ajuster les paramètres avancés

Commencez avec les valeurs par défaut définies par le champ type — elles fonctionnent bien dans la plupart des cas. Ne les ajustez que si vous rencontrez des problèmes spécifiques :
Contrôle l’agressivité avec laquelle le modèle s’adapte à vos images d’entraînement.
ValeurQuand l’utiliser
0,0001 (plus faible)Problèmes de surapprentissage, styles complexes, petits jeux de données
0,0003 (par défaut)La plupart des cas d’usage
0,0005-0,001 (plus élevé)Entraînement plus rapide
Signes qu’il faut ajuster :
  • Les résultats sont identiques aux images d’entraînement → réduisez le taux
  • L’influence du style est faible après l’entraînement → augmentez légèrement le taux
Durée pendant laquelle le modèle s’entraîne sur vos images.
Taille du jeu de donnéesÉtapes recommandées
5-10 images300-500 étapes
15-30 images500-800 étapes
50+ images800-1500 étapes
Signes qu’il faut ajuster :
  • Les résultats sont trop rigides et ignorent les prompts → réduisez les étapes
  • L’influence du style est faible → augmentez les étapes
  • Les images générées ressemblent exactement aux données d’entraînement → réduisez les étapes (surapprentissage)
Réglage itératifSi votre première tentative d’entraînement ne produit pas les résultats souhaités :
  1. Commencez par ajuster max_train_steps (correction la plus courante)
  2. Puis essayez learning_rate si les étapes seules ne suffisent pas

Format de réponse

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "created_at": "2024-01-15T10:30:00Z"
}

Suivre la progression de l’entraînement

L’entraînement prend généralement de 5 à 15 minutes. Interrogez l’API Jobs pour vérifier l’état :
import requests
import time
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")
job_id = "your-job-id"

while True:
    response = requests.get(
        f"{API_BASE}/jobs/{job_id}",
        headers={"Authorization": f"Bearer {API_TOKEN}"}
    )
    job = response.json()
    status = job["status"]

    print(f"Status: {status}")

    if status == "completed":
        style_id = job["result"]["style_id"]
        print(f"Training complete! Style ID: {style_id}")
        break
    elif status in ["failed", "cancelled"]:
        print(f"Training {status}")
        break

    time.sleep(30)
Les jobs d’entraînement passent par ces états :
  1. queued - En attente dans la file
  2. processing - Entraînement en cours
  3. completed - Entraînement terminé avec succès
  4. failed - L’entraînement a rencontré une erreur
  5. cancelled - Job annulé manuellement

Utiliser votre style entraîné

Une fois l’entraînement terminé, appliquez votre style à la génération d’images à l’aide du paramètre styles :
Propriété du style entre l’application et l’APIL’API et l’application web Krea fonctionnent comme des identités utilisateur distinctes au sein de votre workspace. Les styles sont privés à l’utilisateur qui les a créés ; ainsi :
  • Les styles entraînés dans l’application ne sont pas accessibles via l’API sauf s’ils sont partagés
  • Les styles entraînés via l’API ne sont pas accessibles dans l’application sauf s’ils sont partagés
Pour partager un style avec votre workspace (fonctionne dans les deux sens) :
curl -X POST https://api.krea.ai/styles/YOUR_STYLE_ID/share/workspace \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import time
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")
STYLE_ID = "w29t6pvy0"

response = requests.post(
    f"{API_BASE}/generate/image/krea/krea-2/medium",
    headers={
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "An abstract, colorful, surreal composition of symmetry and balance. Swirling colors, imagery of trees and coalescing patterns converge. The lantern of light and death. It is as if the world was at once dark, and yet again lit.",
        "aspect_ratio": "1:1",
        "resolution": "1K",
        "styles": [
            {
                "id": STYLE_ID,
                "strength": 0.95
            }
        ]
    }
)

job = response.json()
job_id = job["job_id"]
print(f"Generation started! Job ID: {job_id}")

# Poll for completion
while True:
    check = requests.get(
        f"{API_BASE}/jobs/{job_id}",
        headers={"Authorization": f"Bearer {API_TOKEN}"}
    )
    status_data = check.json()

    if status_data["status"] == "completed":
        image_url = status_data["result"]["urls"][0]
        print(f"Image ready: {image_url}")
        break
    elif status_data["status"] == "failed":
        print("Generation failed")
        break

    time.sleep(2)

Intensité du style

Le paramètre strength (0,0-1,0) contrôle avec quelle force votre style est appliqué :
IntensitéEffet
0,5-0,7Influence subtile, préserve la flexibilité du prompt
0,8-0,9Application marquée du style, point de départ recommandé
0,95-1,0Adhérence maximale au style, peut réduire la réactivité au prompt
Commencez avec une intensité de 0.8 et ajustez en fonction des résultats. Des valeurs plus faibles offrent plus de liberté créative ; des valeurs plus élevées imposent une adhérence plus stricte au style.

Combiner plusieurs styles

Appliquez plusieurs styles en les ajoutant au tableau styles :
"styles": [
    {"id": "style-id-1", "strength": 0.6},
    {"id": "style-id-2", "strength": 0.4}
]

Bonnes pratiques

  • Utilisez autant d’images de haute qualité que possible pour des résultats optimaux
  • Assurez-vous d’un style cohérent sur toutes les images d’entraînement
  • Incluez une variété de sujets tout en maintenant la cohérence stylistique
  • Évitez les filigranes, superpositions de texte ou artefacts
  • Utilisez des images d’au moins 1024x1024 de résolution
  • Commencez avec les paramètres par défaut en utilisant le champ type
  • Pour les styles : 500-1000 étapes suffisent généralement
  • Des taux d’apprentissage plus faibles (0,0001-0,0003) préviennent le surapprentissage
  • Augmentez les étapes si le style n’est pas assez marqué
  • Diminuez les étapes si le résultat est trop rigide
  • Utilisez le même mot déclencheur si vous prévoyez de combiner plusieurs styles
  • Les mots déclencheurs sont automatiquement injectés dans le prompt lorsque vous incluez le style
  • Évitez les mots courants qui apparaissent dans des prompts typiques
  • Utilisez des underscores pour les déclencheurs à plusieurs mots : my_custom_style