Dans le passé, la création d'un affiche de promotion pour un produit impliquait généralement plusieurs étapes : préparation des ressources, conception de l'arrière-plan, mise en page du produit, ajout de texte et ajustement des dimensions. Si le même produit doit être diffusé sur plusieurs plateformes, les designers devaient souvent ajuster à nouveau l'image pour différentes dimensions.
Maintenant, grâce aux techniques comme la génération texte-image, image-image, édito de zone et micro-tuning de modèle, on peut relier la génération de concepts, la conception du produit, la modification des images et l'adaptation des dimensions pour former un processus de production de contenu marketing relativement complet.
Par exemple, pour un produit de boissons, il faut créer une affiche de promotion pour la saison d'été. On souhaite que l'image contienne des morceaux de glace, des éclaboussures d'eau, des citrons et des feuilles vertes. On peut d'abord générer une image initiale de marketing via une description textuelle, puis effectuer une édito image-image en utilisant une image du produit, ajouter le logo de la marque, et continuer à modifier les éléments locaux selon les besoins réels. Enfin, on peut étendre la même image de marketing à différentes dimensions pour différents scénarios, tels que les réseaux sociaux, les vidéos courtes et les publicités web.
Ce chapitre prend l'exemple de l'affiche de marketing pour une boisson FRESH DAY pour saison d'été, pour expliquer comment construire une chaîne de production de contenu marketing AIGC basée sur les modèles d'images génératrices open source de ModelScope. L'expérience commence par la génération texte-image, puis présente l'édito image-image, le maintien de l'objet principal du produit, l'édito de zone, l'adaptation des dimensions et le LoRA de style de marque.
La génération texte-image (Text-to-Image) consiste à générer une image directement à partir d'une description textuelle. L'utilisateur n'a pas besoin de préparer des ressources de conception complètes ; il suffit de décrire le contenu visuel souhaité (par exemple, le thème, le sujet, l'arrière-plan, les couleurs, la composition et le style visuel) via un Prompt, et le modèle peut générer l'image correspondante en se basant sur ces informations.
Pour la production de contenu marketing, la génération texte-image est plus adaptée à l'exploration de concepts créatifs et à la génération de schémas visuels initiaux. Par exemple, avant de créer une affiche pour une boisson de saison d'été, on peut demander au modèle « une atmosphère d'été fraîche, des morceaux de glace, des éclaboussures d'eau, des citrons, une teinte bleu-vert, un style de photographie commerciale » pour qu'il génère rapidement une image de marketing complète. Par rapport à commencer à dessiner sur un tableau blanc, cette méthode permet de voir plus rapidement différentes propositions créatives.
Actuellement, la communauté open source propose plusieurs modèles de génération d'images, tels que Stable Diffusion, FLUX, Qwen-Image, Z-Image-Turbo. Les modèles diffèrent sur la qualité de l'image, la compréhension des Prompts, la capacité de génération de texte et les exigences en ressources matérielles.
Se connecter pour rejoindre la discussion
Dans cette section, nous utilisons le modèle Z-Image-Turbo de ModelScope pour l'expérience de génération texte-image. La version Turbo a été optimisée pour l'efficacité de génération, ce qui permet de générer des images avec moins de pas de raisonnement, donc il est plus adapté pour les développeurs individuels et les environnements d'expérimentation avec des ressources GPU limitées.
1)Installation de l'environnement
Nous utilisons le framework DiffSynth-Studio pour la génération texte-image, téléchargeons DiffSynth-Studio
!git clone https://github.com/modelscope/DiffSynth-Studio.git

2)Accéder au répertoire DiffSynth-Studio
%cd DiffSynth-Studio

3) Installation
%pip install -e .

4) Dans la Cellule unitaire, entrez le code ci-dessous pour la génération texte-image.
import torch
from modelscope import ZImagePipeline
pipe = ZImagePipeline.from_pretrained(
"Tongyi-MAI/Z-Image-Turbo",
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=False,
)
pipe.to("cuda")
print(f"Le modèle est sur le dispositif : {pipe.device}")
prompt = """ 夏日饮料商业宣传海报,
清爽明亮的夏日氛围, 背景包含冰块、水花、柠檬和绿色树叶, 蓝绿色清爽色调, 商业广告摄影风格, 画面中央预留饮料商品展示区域, 背景简洁,光影自然, 高质量,细节清晰。 """
image = pipe(
prompt=prompt,
height=1024,
width=1024,
num_inference_steps=9,
guidance_scale=0.0,
generator=torch.Generator("cuda").manual_seed(42),
).images[0]
print("88888888888888888888888")
#display(image)
image.save("summer_drink_poster.png")
Après l'exécution, vous pouvez voir l'image sauvegardée dans l'espace de travail.

L'image générée est la suivante :

Pour les débutants, il n'est pas nécessaire d'écrire un Prompt très complexe dès le début. Il suffit de décrire clairement les besoins, puis d'ajouter des détails en fonction des résultats générés.
La génération texte-image est idéale pour générer rapidement des concepts de marketing et des schémas de fond, mais elle présente un problème évident : si l'on demande au modèle de générer un produit spécifique directement, l'emballage, le logo et le texte peuvent différer de celui du produit réel. Dans des scénarios de marketing formels, il est nécessaire d'utiliser des images du produit réel pour des traitements supplémentaires.
La génération texte-image dépend principalement de la description textuelle, tandis que l'édito image-image (Image-to-Image) prend en compte à la fois une image de référence et une description textuelle. Le modèle peut se référer au sujet principal, l'emballage et la composition de l'image d'origine, puis ajuster le fond, l'ombrage et les éléments de marketing en se basant sur le Prompt.
Dans cette section, nous choisissons le modèle SenseNova-U1.5-8B-MoT comme modèle d'édition d'image. Ce modèle supporte la génération texte-image et l'édito d'image, peut comprendre à la fois l'image d'entrée et les instructions textuelles, et ajuste les éléments spécifiés de l'image d'origine en se basant sur le Prompt. Par rapport à la génération d'images uniquement à partir du texte, SenseNova-U1.5-8B-MoT peut utiliser les informations visuelles de l'image d'entrée, tout en conservant le sujet principal et la structure globale, pour modifier les éléments tels que l'emballage, le fond, les couleurs et les éléments décoratifs, donc il est plus adapté à la génération et l'édition d'images de marketing pour des produits.
L'expérience continue à utiliser l'image générée dans la section précédente comme entrée, en l'éditant avec le modèle d'édito. On tente de conserver le sujet principal de la bouteille de boissons et la structure globale, en ajoutant le logo de marque « FRESH DAY » sur le corps de la bouteille, et en ajoutant des éléments comme des morceaux de glace, des éclaboussures d'eau et des citrons, pour générer une image de marketing plus complète. La méthode de chargement par défaut de SenseNova-U1.5-8B-MoT entraînerait un manque de mémoire, donc nous utilisons une méthode de chargement avec faible consommation de mémoire dans ce code pour réduire l'utilisation de la mémoire.
Le code est le suivant :
from diffsynth.pipelines.sensenova_u1_image import (
SenseNovaU1ImagePipeline,
ModelConfig
)
from PIL import Image
import torch
import os
MODEL_ID = "SenseNova/SenseNova-U1.5-8B-MoT"
INPUT_IMAGE = "/mnt/workspace/summer_drink_poster.png"
OUTPUT_IMAGE = "/mnt/workspace/drink_fresh_day_ad.png"
vram_config = {
"offload_dtype": "disk",
"offload_device": "disk",
"onload_dtype": "disk",
"onload_device": "disk",
# Charger en BF16 sur GPU lorsque le calcul est vraiment nécessaire
"preparing_dtype": torch.bfloat16,
"preparing_device": "cuda",
"computation_dtype": torch.bfloat16,
"computation_device": "cuda",
}
print("Chargement de SenseNova-U1.5-8B-MoT...")
pipe = SenseNovaU1ImagePipeline.from_pretrained(
torch_dtype=torch.bfloat16,
device="cuda",
model_configs=[
ModelConfig(
model_id=MODEL_ID,
origin_file_pattern="model*.safetensors",
**vram_config
),
],
tokenizer_config=ModelConfig(
model_id=MODEL_ID,
origin_file_pattern="./"
),
vram_limit=(
torch.cuda.mem_get_info("cuda")[1] / (1024 ** 3)
- 0.5
),
)
print("Modèle chargé.")
if not os.path.exists(INPUT_IMAGE):
raise FileNotFoundError(
f"Image d'entrée non trouvée : {INPUT_IMAGE}"
)
edit_image = Image.open(INPUT_IMAGE).convert("RGB")
print(
f"Dimensions de l'image d'entrée :"
f"{edit_image.width} × {edit_image.height}"
)
prompt = """
C'est une tâche d'édition d'image pour un produit de boissons.
Basé sur l'image de la bouteille de boissons d'entrée, générer une affiche de marketing professionnelle et fraîche pour une boisson de saison d'été.
Veuillez conserver le sujet principal de la bouteille d'origine.
Tenez compte du contour de la bouteille, de la bouchon, de la structure de l'emballage, du ratio de la bouteille, de la texture et de l'apparence globale du produit. Ne générer ni remplacer la bouteille par un autre produit.
La bouteille doit être clairement visible et être le centre visuel de l'image.
Dans la zone du label de la bouteille, ajouter un nouveau logo de marque pour cette boisson :
« FRESH DAY ».
« FRESH DAY » est le nom de la marque.
Placez le logo de marque naturellement sur le corps de la bouteille, pour qu'il ressemble à un logo imprimé réellement sur l'emballage, et non à du texte flottant dans l'image.
Le logo de marque utilise un style visuel simple, moderne et frais.
Utilisez une police d'anglais claire et frappante, accompagnée d'un petit symbole de feuille, pour transmettre des sensations de nature, de santé, de fraîcheur et de jeunesse.
« FRESH DAY » doit être complètement clair, facile à reconnaître.
Ne générer aucun autre nom de marque, aucun texte inutile, ni ne répéter « FRESH DAY » en dehors du corps de la bouteille.
Sur la base du sujet de la bouteille conservé, optimiser les éléments de marketing autour.
Ajouter autour de la bouteille quelques morceaux de glace transparents, des éclaboussures d'eau fraîches et naturelles, des gouttes de condensation sur le corps de la bouteille et quelques morceaux de citron frais,
pour mettre en évidence le sentiment de fraîcheur et de fraîcheur de la boisson.
Utiliser une lumière commerciale de produit naturelle et claire,
mettant en valeur la transparence de la bouteille, les gouttes de condensation et la texture du produit.
Le fond doit être simple, propre, sans ajouter trop d'éléments complexes.
L'image finale doit adopter un style commercial d'été frais, lumineux et élégant,
le sujet principal doit être mis en valeur, la composition doit être simple, avec la qualité d'une photographie commerciale réelle.
L'effet final doit ressembler à une affiche professionnelle de marketing pour une marque de boissons, et non à une illustration, un dessin animé ou un produit de boissons redessiné.
"""
print("Début de la génération de l'affiche de marketing pour la boisson...")
image = pipe(
prompt=prompt,
# Image de produit d'origine
edit_image=edit_image,
# Fixer la graine aléatoire pour la répétabilité des expériences
seed=42,
# Format vertical 3:4 pour les affiches de marketing
height=1536,
width=1152,
num_inference_steps=50,
cfg_scale=4.0,
shift=3.0,
)
image.save(OUTPUT_IMAGE)
print(
f"Génération terminée, l'image a été sauvegardée à :{OUTPUT_IMAGE}"
)
Résultat de l'exécution :

L'image finale générée est :

Par rapport à la génération complète à partir du texte, l'édito image-image peut utiliser les informations visuelles de l'image d'origine, ce qui est plus adapté aux scénarios où l'on possède des ressources de produit ou des esquisses de conception. Cependant, même avec une image de produit réelle, le modèle peut redessiner certaines parties du produit. Dans des scénarios réels, il est nécessaire de considérer en plus le maintien du sujet du produit et l'édito de zone.
Dans les applications réelles de marketing pour des produits, en plus de l'esthétique de l'image, il est nécessaire de garantir l'exactitude des informations sur le produit. L'apparence du bouteille, la structure de l'emballage, le logo de marque, etc., sont généralement des informations visuelles essentielles. Si ces éléments changent de manière visible pendant l'édition, l'image générée peut ne pas correspondre au produit réel. Lors de l'édition avec des modèles d'images génératrices, il est nécessaire de distinguer clairement ce qui doit être conservé et ce qui peut être modifié. Par exemple, on peut demander au modèle de conserver la bouteille, le logo de marque et la composition globale, tout en modifiant le fond, les éléments décoratifs ou des objets locaux. En précisant ces contraintes dans le Prompt, on peut réduire la re-génération du sujet principal par le modèle, ce qui rend les résultats d'édition plus contrôlables.
Dans cette section, nous continuons à utiliser l'image générée dans la section précédente pour l'édito de zone. On tente de conserver le sujet principal de la bouteille de boissons, le logo de marque « FRESH DAY », les morceaux de glace, les éclaboussures d'eau et la composition globale, tout en modifiant le citron jaune à l'angle inférieur droit en une citron vert. En utilisant cet exemple, on peut mieux comprendre comment utiliser le Prompt pour un édito de zone plus