Aller au contenu principal

Comment tester si un LoRA Z-Image Turbo modifie vraiment l'image

Testez un LoRA Z-Image Turbo à seed identique : requêtes témoins, changements visibles, compatibilité de l'adaptateur et limites NSFW.

Auteur
Lydia
Publié
Lecture
10 min de lecture
Mis à jour
Quatre adultes examinent trois portraits étalonnés différemment dans une galerie photo chaleureusement éclairée

Vous associez un LoRA et obtenez un portrait terminé, mais identique à celui du modèle de base. Une tâche réussie ne prouve pas à elle seule que l'adaptateur a influencé l'image. Pour le savoir, lancez trois fois le même prompt avec la même seed : deux fois sans LoRA, une fois avec. Les trois sorties coûtent $0.036 à $0.012 par image. Comparez-les pour voir si le changement de style ou d'identité voulu apparaît au-delà de la variation ordinaire du modèle de base.

Cette seconde question compte surtout pour le travail destiné aux adultes. Le modèle de base traite déjà des briefs matures sans filtre : un résultat plus explicite avec un adaptateur peut donc venir du modèle de base. Seul le témoin vous dit ce qui vient de quoi.

Essayez d'abord dans le Playground

Ouvrez le Playground z-image-turbo-lora en Form view et appliquez les mêmes valeurs aux trois exécutions :

  1. Collez un prompt de portrait simple dans Prompt, réglez Aspect ratio sur 1:1, Output format sur PNG et Seed sur 42. La compression JPEG ajoute du bruit à une comparaison de pixels.
  2. Sous Style LoRAs, utilisez Remove item jusqu'à ce que la liste soit vide, puis lancez deux fois. Ce sont vos deux témoins.
  3. Choisissez Add item, collez le lien direct vers le .safetensors dans LoRA file, laissez Strength à 1 et lancez une fois. (Le Playground appelle « Strength » l'échelle du LoRA ; le champ de l'API est scale, et ce n'est pas le réglage strength d'image vers image décrit plus bas.)
  4. Placez les trois sorties côte à côte : le changement de style ou d'identité voulu apparaît-il au-delà de la différence entre les deux témoins ?

L'adaptateur Realism peut n'apporter qu'un changement subtil à un portrait déjà photographique. Pour une première vérification plus visible, choisissez un LoRA pictural ou d'étalonnage compatible Turbo et le mot déclencheur de son auteur. Une petite différence avec Realism ne signifie pas que le chargement a échoué.

Lancer la vérification en trois tâches via l'API

Pour mesurer la différence plutôt que l'estimer à l'œil, lancez les trois mêmes tâches depuis Python. Installez spicyapi et pillow, définissez SPICY_API_KEY, puis exécutez :

python
import os
import uuid
import urllib.request
from io import BytesIO
from PIL import Image, ImageChops, ImageStat
from spicyapi import SpicyClient, output_assets

client = SpicyClient()
MODEL = "alibaba/z-image-turbo-lora/text-to-image"
inputs = {"prompt": "Realism, studio portrait of a woman in a burgundy blazer, soft window light, grey backdrop",
          "aspect_ratio": "1:1", "output_format": "png", "seed": 42,
          "loras": [{"path": "https://huggingface.co/suayptalha/Z-Image-Turbo-Realism-LoRA/resolve/8dc179cb56844d4ddc6e4527c30e98347eeae971/pytorch_lora_weights.safetensors", "scale": 1}]}

images = []
for name, loras in [("base-1", []), ("base-2", []), ("lora", inputs["loras"])]:
    body = {**inputs, "loras": loras}
    quote = client.quote_task(model=MODEL, input_data=body)
    if input(f"{name}: maximum ${quote['maxCharge']}. Create? [y/N] ") != "y":
        raise SystemExit("Stopped")
    task = client.create_task(model=MODEL, input_data=body, idempotency_key=str(uuid.uuid4()),
                              quote_id=quote["quoteId"], expected_cost=quote["estimatedCost"])
    final = client.wait_for_terminal(task["taskId"])
    url = output_assets(final)[0]["url"]
    request = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
    data = urllib.request.urlopen(request, timeout=120).read()
    open(name + ".png", "wb").write(data)
    images.append(Image.open(BytesIO(data)).convert("RGB"))

for label, other in [("control gap", images[1]), ("LoRA gap", images[2])]:
    diff = ImageStat.Stat(ImageChops.difference(images[0], other)).mean
    print(label, sum(diff) / 3 / 255 * 100)

Le SDK Python couvre la gestion des tâches. Utilisez un fichier LoRA direct, figé sur une version, et le mot déclencheur de l'auteur ; changer de fichier entre les témoins invalide la comparaison. Une même seed peut tout de même produire des pixels différents : comparez donc les deux témoins avant d'interpréter le score de l'adaptateur.

Lire le résultat

Témoin contre LoRA, comparé à témoin contre témoinCe que cela signifieQue faire
À peu près au niveau du bruit, et les images se ressemblentAucun effet visible de l'adaptateur sur ce promptVérifiez la base pour laquelle il a été entraîné, le mot déclencheur et le type de fichier (ci-dessous), puis utilisez l'échelle recommandée par l'auteur du fichier ; à défaut, comparez 0.5, 1 et 1.5
Nettement au-dessus de l'écart entre témoins (y compris des témoins sans écart), rendu voulu visible, sujet intactIndice de l'effet voulu de l'adaptateur ; à confirmer sur d'autres seedsGardez-le ; recommencez sur deux ou trois autres seeds
Très au-dessus du niveau de bruit, mais le sujet, le visage ou le cadrage ont changéChangement important, mais pas encore un résultat utileComparez des échelles plus basses, comme 0.8 et 0.6, au même témoin
Le témoin correspond déjà à votre briefL'adaptateur n'apporte rien dont vous ayez besoinLaissez-le de côté ; un LoRA est un réglage de style ou d'identité, pas une obligation

Les chiffres servent de filtre ; ce sont vos yeux qui tranchent. Un petit décalage de caméra déplace beaucoup de pixels alors qu'un visage modifié en déplace peu : regardez donc l'identité, le style, le cadrage et tout costume ou accessoire que vous n'avez pas demandé avant de vous fier à un pourcentage. Les pourcentages ne sont pas des seuils valables pour d'autres fichiers ou d'autres tailles. Pour les scènes destinées aux adultes, distinguez aussi un refus d'une image terminée mais atténuée : elle est facturée et peut paraître soignée tout en s'écartant du brief.

Pourquoi un LoRA ne fait rien

Si la tâche s'est terminée mais que vous ne voyez pas l'effet voulu, passez en revue ces points dans l'ordre :

  • Compatibilité non documentée. Préférez un fichier spécifique à Turbo, ou un fichier entraîné sur Base dont l'auteur documente la compatibilité avec Turbo. Les adaptateurs entraînés sur Base ne sont pas des substituts automatiques. Suivez les réglages Turbo de l'auteur et lancez le témoin sans LoRA au lieu de supposer qu'une échelle plus grande règle l'incompatibilité.
  • Mauvais type d'adaptateur. Le LoRA standard est le format sûr. Un rapport ComfyUI décrit des adaptateurs LoKR pour Z-Image Turbo consignés comme « lora key not loaded » et ignorés, alors que les LoRA standard fonctionnaient (ComfyUI issue 10973) ; il s'agit d'un rapport sur le chargeur ComfyUI local. Utilisez ici un LoRA Turbo standard plutôt que de supposer que l'endpoint accepte les fichiers LoKR.
  • Mot déclencheur absent. Les fichiers de style et de personnage réagissent à leur mot déclencheur. Commencez le prompt par celui-ci.
  • Échelle trop basse ou fichier discret. Testez 0.5, 1 et 1.5 en gardant tout le reste fixe.
  • Problèmes de lien. Une URL de page ou un fichier privé échoue à la soumission ou après ; utilisez un fichier de modèle direct et accessible.

L'image vers image a deux réglages

La tâche image vers image ajoute image_url, resolution et un strength distinct (de 0 à 1, 0.8 par défaut) qui détermine de combien le résultat peut s'écarter de votre source : les valeurs basses conservent davantage l'influence de la source, tandis que les valeurs proches de 1 autorisent plus de changement. Aucun réglage universel ne préserve un visage ; les valeurs supérieures à 1 sont rejetées. Gardez strength fixe avec la seed pendant que vous testez scale, sinon vous ne saurez pas quel réglage a fait bouger l'image.

Quelle voie choisir pour le travail destiné aux adultes

Lors de nos tests de septembre 2026 sans LoRA, le texte vers image a livré les 18 requêtes, des scénarios suggestifs aux scénarios explicites. L'image vers image en a livré 15 sur 18 : ses trois retouches d'actes intimes ont omis l'acte demandé, bien que les tests les plus extrêmes aient abouti. Le résultat dépend de la tâche et de la scène, pas simplement du niveau annoncé. Commencez donc par le texte vers image quand vous pouvez écrire la scène de zéro, et utilisez l'image vers image quand un portrait ou une composition existants doivent être conservés. Un LoRA ajoute ensuite un rendu ou un personnage par-dessus l'une ou l'autre ; le test du modèle détaille les résultats par catégorie.

Une femme adulte en robe émeraude devant un miroir à trois panneaux, exemple publié de LoRA Z-Image Turbo

Portrait en robe émeraude avec trois reflets colorés dans le miroir ; comparez avec un témoin équivalent sans LoRA pour juger l'apport de l'adaptateur.

Gardez une trace en une ligne

Conservez à côté de chaque image le prompt, la seed, le format d'image, la liste {path, scale}, strength le cas échéant et l'URL de sortie. Figez chaque path sur une version de fichier qui ne peut pas changer : une URL communautaire peut continuer à répondre alors que l'auteur remplace les poids, et un commit figé identifie la version de l'adaptateur utilisée à chaque exécution.

Un photographe et un directeur artistique examinent trois portraits de la même femme adulte avec des variations de stylisme maîtrisées

Une illustration éditoriale de l'étape de vérification : la même personne sous trois traitements permet de juger facilement le changement de style.

FAQ

Une même seed donne-t-elle une image identique au pixel près ?

Pas de façon fiable. Répétez la tâche sans LoRA et mesurez-la par rapport à la première avant de vous fier à toute différence attribuée au LoRA.

Puis-je tester trois LoRA à la fois ?

Vous pouvez en charger jusqu'à trois par requête, mais testez-en un d'abord. Avec plusieurs fichiers, vous ne pouvez pas savoir lequel a provoqué la dérive. Ajoutez le deuxième à une échelle d'environ 0.5 et augmentez-la jusqu'à ce que son rendu apparaisse.

Associer un LoRA débloque-t-il des contenus plus forts ?

Pas en soi : n'attribuez à l'adaptateur que ce qui apparaît par rapport au témoin.

Z-Image Turbo prend-il en charge les LoRA ?

Oui. Chaque requête accepte jusqu'à trois LoRA, chacun étant un lien direct vers un fichier .safetensors documenté comme compatible avec Z-Image Turbo, avec scale de 0 à 4 (1 par défaut). L'endpoint charge les poids ; il ne les entraîne pas. Entraînez les poids séparément ; le guide de l'API LoRA hébergée explique comment fournir le fichier terminé.

Combien cela coûte-t-il ?

Le chargement du LoRA n'ajoute aucuns frais d'adaptateur distincts. Le devis en direct confirme le total avant chaque tâche.

Quelle échelle utiliser ?

Utilisez la plage recommandée par l'auteur. À défaut, la plateforme applique 1 par défaut ; comparez 0.5, 1 et 1.5 avec le même prompt et la même seed. Si le sujet dérive, baissez l'échelle. L'augmenter n'est pas une solution universelle pour un fichier entraîné sur une autre base.

Si vous avez déjà un fichier Z-Image Turbo, lancez la vérification en trois tâches en texte vers image avant qu'un lot en dépende.

Laisser un Agent gérer l'appel

Faites appel à un Agent lorsque vous voulez qu'il prépare les entrées et renvoie le résultat pendant que vous validez le prix et les choix créatifs.

  • CLI : avec le même objet d'entrée enregistré sous input.json, utilisez npx @spicyapi/cli tasks create --model alibaba/z-image-turbo-lora/text-to-image --input-file input.json --wait. La CLI confirme le prix ; conservez l'ID de tâche renvoyé pour la reprise.
  • MCP : demandez à votre assistant d'utiliser spicyapi_task_create pour alibaba/z-image-turbo-lora/text-to-image, puis spicyapi_task_wait. Le serveur MCP demande une confirmation du prix avant la création.
  • Skill : installez-le avec npx skills add spicyapi-ai/spicy-skill, puis demandez : « Use the spicyapi skill to run this three-job check and stop for my approval. » Le Skill utilise une connexion CLI ou MCP déjà configurée.

Aussi en English · 日本語 · 한국어 · Deutsch · Español · Português (Brasil) · Русский · Italiano · Polski

Passez de la lecture à la pratique