Ideogram 4.5 vs FLUX 3 pour retoucher précisément une image produit
Pour une petite correction sur une image produit déjà validée, testez d’abord Ideogram 4.5. Pour placer plusieurs objets, coordonner des éléments ou utiliser davantage de références, commencez par FLUX 3. Ce guide propose un test sur source identique, des points de contrôle et une validation locale, sans proclamer un vainqueur universel faute de benchmark commun.
Sommaire

Une bonne retouche produit n’est pas seulement une nouvelle image séduisante. Quand le visuel a déjà été validé, la demande est souvent stricte : corriger une ligne sur l’étiquette, changer la couleur d’un bouchon ou remplacer un objet sans redessiner l’emballage, le logo, le code-barres, l’éclairage, les reflets, les ombres, le fond ni le cadrage.
Le point de départ pratique est le suivant : testez d’abord Ideogram 4.5 Precise Edit si le contrat est « modifier cette petite zone et préserver tout le reste ». Testez d’abord FLUX 3 Image si la difficulté principale concerne le placement spatial, plusieurs éléments coordonnés ou un grand nombre d’images de référence. Il s’agit d’un ordre de test, pas d’un classement universel. Les sources officielles étudiées ne fournissent pas de benchmark indépendant et reproductible sur une même image ; la décision finale doit donc venir de votre propre procédure de recette.
Choix rapide
| Besoin | Premier essai | Pourquoi |
|---|---|---|
| Corriger du texte, un badge ou une petite zone de couleur | Ideogram 4.5 | Precise Edit documente des dimensions identiques à l’entrée, un masque optionnel et la copie exacte des pixels non modifiés de manière significative. |
| Retoucher un extrait d’un grand master puis le réintégrer | Ideogram 4.5 | La page du modèle décrit un flux crop-edit-stitch avec préservation des bords du recadrage. |
| Déplacer, retirer ou remplacer plusieurs éléments | FLUX 3 | Ses lignes de bounding boxes décrivent les positions source et cible. |
| Utiliser de nombreuses références | FLUX 3 | L’API accepte une à dix images ; Ideogram en accepte jusqu’à quatre, et moins lorsqu’un masque occupe un emplacement. |
| Imposer « rien ne change hors de la zone » | Ideogram d’abord, puis validation locale | Le masque limite l’édition ; les boîtes FLUX guident le placement mais ne sont pas des clipping masks. |
| Produire de nombreuses variantes | Les deux, avec des branches | Chaque variante doit repartir du même checkpoint validé, pas de la variante précédente. |
Définir précisément la précision
Avant de choisir un modèle, transformez l’intention en contrat vérifiable :
- Zone modifiable : la plus petite région autorisée à changer, avec une marge pour les bords, ombres et reflets.
- Zone protégée : tous les pixels et objets devant rester stables.
- Critères d’acceptation : dimensions, dérive hors zone, texte, couleur, géométrie, lumière, profil et contrôle humain.
La préservation sémantique n’est pas la préservation pixel par pixel. Un flacon peut sembler identique alors que l’espacement du logo, la texture de l’étiquette, la forme d’un reflet ou le grain du fond ont changé. Cela peut convenir à une maquette, mais pas forcément à une fiche produit, un texte réglementaire ou un fichier d’impression.
Fonctionnement d’Ideogram 4.5
L’API officielle Precise Edit utilise :
POST https://api.ideogram.ai/v2/image/precise-edit/ideogram-4-5
La source est envoyée dans image, l’instruction dans prompt, avec éventuellement reference_images et mask. La documentation indique que la sortie conserve la largeur et la hauteur de l’entrée et que les pixels non modifiés de façon significative sont recopiés exactement. Dans le masque Ideogram, le noir désigne la zone à modifier et le blanc la zone à conserver.
Ce contrat est bien adapté à une correction chirurgicale sur un visuel validé. Pour les grands fichiers, la page Ideogram 4.5 recommande de recadrer avec une marge, de modifier l’extrait puis de le réintégrer, les bords du crop étant préservés.
Deux précautions :
- les images trop grandes pour le modèle sont réduites selon la documentation ; ne supposez pas qu’un master complet conservera chaque pixel source ;
- le masque occupe un emplacement de référence, donc une requête masquée accepte moins d’images auxiliaires.
La réponse est synchrone par défaut. Avec async ou un webhook, conservez generation_id et interrogez GET /v2/generations/{generation_id}. L’aperçu de l’API précise aussi que les URL expirent : téléchargez le fichier original sans attendre.
Fonctionnement de FLUX 3
L’API officielle FLUX 3 Image utilise :
POST https://api.bfl.ai/v1/flux-3-image
Il n’existe pas de mode d’édition distinct : vous envoyez prompt et images. L’API accepte une à dix références. Avec aspect_ratio: auto, un ratio demandé dans le prompt est prioritaire ; sinon, en présence de références, le cadrage de la première image est conservé.
Le contrôle spatial repose sur les bounding boxes. Chaque boîte est écrite [top, left, bottom, right] sur une grille normalisée de 0 à 1000. Les lignes peuvent indiquer les positions source et cible pour conserver, déplacer, ajouter, remplacer, recolorer ou retirer un élément.
FLUX 3 est donc particulièrement pertinent lorsque le problème est « placer cet objet ici » ou « coordonner plusieurs changements ». Mais la documentation fixe une limite claire : les boîtes guident le placement, elles ne constituent pas des clipping masks. Les pixels hors des boîtes restent « généralement » identiques, ce qui n’est pas une garantie stricte.
Les requêtes sont asynchrones. Enregistrez id et polling_url ; le guide d’intégration impose d’utiliser l’URL renvoyée. Dès que le statut devient Ready, téléchargez result.sample : BFL indique que l’image devient inaccessible au bout de dix minutes.
Pour un test contrôlé, utilisez grounding: false. Le grounding est activé par défaut et peut ajouter une recherche web ou d’images, variable inutile lorsque l’objectif est uniquement de modifier la source fournie.
Protocole comparable sur une même source
1. Geler un master immuable
Travaillez avec un PNG sans perte, ou un PNG issu du TIFF validé. Notez le nom, le SHA-256, les dimensions, le profil colorimétrique et la version d’approbation. Conservez une copie que le processus ne peut pas écraser.
2. Créer un masque interne des changements autorisés
Il doit avoir les mêmes dimensions que l’original :
- blanc : peut changer ;
- noir : doit rester stable.
Ajoutez une marge autour de la cible et incluez ombres, reflets ou reliefs devant s’adapter. Ce masque interne est volontairement inverse du masque transmis à Ideogram. Donnez-leur des noms sans ambiguïté.
3. Une seule modification métier par tentative
Un bon test remplace une ligne, change uniquement le bouchon ou retire un autocollant. Ne combinez pas texte, fond, éclairage et recadrage.
Modèles de prompt :
LABEL EDIT
Change only the product label text from "CLASSIC" to "ZERO SUGAR".
Keep the package shape, logo, barcode, lighting, reflections, shadows, background,
camera angle, crop, and all pixels outside the label area unchanged.
Do not redesign, restyle, or add objects.
COLORWAY
Change only the bottle cap from matte black to Pantone 186 C red.
Preserve the bottle, label, liquid, highlights, reflections, shadows, background,
camera angle, crop, and every object outside the cap area.
OBJECT REPLACEMENT
Replace only the small paper sticker with a clean white sticker of the same size,
position, perspective, edge softness, and shadow. Keep everything else unchanged.
Dans FLUX, ajoutez des boîtes mesurées lorsque la position est déterminante. Cet exemple est indicatif ; calculez les coordonnées sur la vraie source et rappelez-vous qu’une boîte n’interdit pas les changements extérieurs :
Edit only <front_label>. Keep every other part of ref_image_0 unchanged.
[
{
"id": "front_label",
"from": null,
"src_bbox": null,
"tgt_bbox": [360, 285, 690, 725],
"desc": "the same front label with the text ZERO SUGAR; preserve its size, perspective, typography, print texture, highlights, and shadow"
}
]
4. Comparer la même intention avec les contrôles propres à chaque outil
- Ideogram : image complète ou crop avec marge ; masque noir-modifier/blanc-conserver pour une localisation stricte.
- FLUX 3 : source en premier dans
images,aspect_ratio: auto, lignes de boîtes et grounding désactivé pour l’essai contrôlé.
Journalisez tous les paramètres. Une comparaison équitable conserve la même demande métier et utilise les contrôles documentés de chaque système.
5. Télécharger les sorties brutes
Ne comparez pas des captures ou des aperçus compressés. Enregistrez le fichier sous un nom du type :
masterHash_model_editId_attempt.ext
Calculez son hash. Toute mise à l’échelle, conversion ou compression ultérieure doit être conservée comme dérivé distinct.
Contrôle local des pixels protégés
Le script suivant compare l’original au candidat hors du masque interne. Il génère une carte : blanc pour les pixels protégés modifiés, gris pour la zone autorisée, noir pour les pixels protégés inchangés.
Installez les dépendances :
python -m pip install pillow numpy
Enregistrez sous verify_edit.py :
#!/usr/bin/env python3
"""Check whether an edited image changed pixels outside an allowed mask."""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
import numpy as np
from PIL import Image
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser()
parser.add_argument("original", type=Path)
parser.add_argument("edited", type=Path)
parser.add_argument("allowed_mask", type=Path,
help="white = may change, black = must stay unchanged")
parser.add_argument("--tolerance", type=int, default=0,
help="maximum per-channel delta treated as unchanged")
parser.add_argument("--max-outside-ratio", type=float, default=0.0)
parser.add_argument("--diff-map", type=Path, default=Path("outside-diff.png"))
return parser.parse_args()
def main() -> int:
args = parse_args()
if not 0 <= args.tolerance <= 255:
raise SystemExit("--tolerance must be between 0 and 255")
if not 0.0 <= args.max_outside_ratio <= 1.0:
raise SystemExit("--max-outside-ratio must be between 0 and 1")
with Image.open(args.original) as original_file, \
Image.open(args.edited) as edited_file, \
Image.open(args.allowed_mask) as mask_file:
if original_file.size != edited_file.size or original_file.size != mask_file.size:
print("FAIL: original, edited image, and mask must have identical dimensions")
return 2
original_profile = original_file.info.get("icc_profile")
edited_profile = edited_file.info.get("icc_profile")
original = np.asarray(original_file.convert("RGB"), dtype=np.int16)
edited = np.asarray(edited_file.convert("RGB"), dtype=np.int16)
allowed = np.asarray(mask_file.convert("L")) >= 128
delta = np.abs(edited - original)
changed = np.max(delta, axis=2) > args.tolerance
protected = ~allowed
outside_changed = changed & protected
protected_pixels = int(protected.sum())
changed_pixels = int(outside_changed.sum())
outside_ratio = changed_pixels / protected_pixels if protected_pixels else 0.0
max_delta = int(delta[protected].max()) if protected_pixels else 0
diff_map = np.zeros(allowed.shape, dtype=np.uint8)
diff_map[allowed] = 64
diff_map[outside_changed] = 255
Image.fromarray(diff_map, mode="L").save(args.diff_map)
print(f"protected_pixels={protected_pixels}")
print(f"outside_changed_pixels={changed_pixels}")
print(f"outside_changed_ratio={outside_ratio:.8f}")
print(f"max_outside_channel_delta={max_delta}")
print(f"icc_profile_match={original_profile == edited_profile}")
print(f"diff_map={args.diff_map}")
if outside_ratio > args.max_outside_ratio:
print("FAIL: protected area changed beyond the allowed threshold")
return 1
print("PASS: protected-area pixel check passed")
return 0
if __name__ == "__main__":
sys.exit(main())
Lancez une vérification stricte sur des fichiers sans perte :
python verify_edit.py master.png candidate.png allowed-mask.png --tolerance 0 --max-outside-ratio 0
outside_changed_pixels=0 signifie que les valeurs RGB protégées sont identiques. Un outside_changed_ratio non nul signale une dérive ; ouvrez outside-diff.png. icc_profile_match=False alerte sur un changement de chaîne colorimétrique. La tolérance zéro convient au lossless ; un JPEG recompressé modifie de nombreux pixels, donc validez la sortie sans perte ou documentez un seuil approuvé.
L’égalité externe ne garantit pas que la modification est bonne. Vérifiez séparément orthographe, typographie, logo, texture, perspective, raccords, hautes lumières, ombres, reflets et occlusions dans la zone éditable.
Empêcher la dérive au fil des retouches
Classez les fichiers en trois catégories :
- Master : source validée et immuable.
- Checkpoint : candidat ayant passé les contrôles automatique et humain.
- Variante : branche régionale, couleur ou format créée depuis un checkpoint.
Les variantes rouge, bleue et verte doivent partir du même checkpoint. Ne fabriquez pas le bleu à partir du rouge puis le vert à partir du bleu. Modifiez une seule chose par tour ; en cas d’échec, revenez au dernier checkpoint. Ne tentez pas de « réparer la dérive » sur une sortie rejetée.
Conservez un registre avec le hash source, le modèle, l’endpoint, le prompt, le masque ou les boîtes, le hash de sortie, les dimensions, le ratio de changement externe et la décision. La promesse d’Ideogram sur la dérive réduite et les boîtes de FLUX doivent être vérifiées ainsi ; elles ne remplacent pas les checkpoints.
Recommandations par scénario
Texte d’étiquette ou mention réglementaire
Ideogram 4.5 d’abord. Utilisez un crop avec marge et le masque du fournisseur. Vérifiez chaque caractère avant la réintégration. Testez FLUX si la composition est complexe, sans considérer la boîte comme une garantie d’isolation.
Un seul changement de couleur
Ideogram 4.5 d’abord si la frontière est nette et que le reste doit rester stable. Incluez reflets colorés et lumière projetée dans la zone autorisée. FLUX 3 d’abord si plusieurs objets changent ensemble ou si des références définissent matière et palette.
Remplacement, déplacement ou suppression
FLUX 3 d’abord si les positions source et cible sont centrales. Ideogram 4.5 d’abord si la cible est petite, isolable par masque et si la géométrie exacte de la source prime.
Master haute résolution
Recadrez avec une marge, modifiez le fragment, contrôlez son bord et réintégrez-le. Ideogram documente directement ce flux. Avec FLUX, dimensions et pixels protégés restent des critères de recette, pas des hypothèses.
Grande famille de variantes
Testez un petit ensemble représentatif, choisissez le flux avec le moins de rejets et de retouches manuelles, figez un checkpoint et créez toutes les variantes depuis celui-ci.
Liste de recette
Avant publication, confirmez que :
- le candidat provient du bon master ou checkpoint ;
- une seule modification documentée a été demandée ;
- dimensions, orientation et cadrage sont corrects ;
- la zone protégée respecte le seuil ;
- texte, logo, code-barres et mentions sont exacts ;
- matière, bords, ombres, reflets et occlusions sont crédibles ;
- profil et format conviennent à la destination ;
- sortie brute, prompt, contrôles, hashes et décision sont conservés ;
- les futures variantes repartiront d’un checkpoint et non d’une autre variante.
Conclusion
Pour une petite retouche chirurgicale sur une image finalisée, Ideogram 4.5 est le meilleur premier flux à tester grâce à son contrat de préservation documenté et à son véritable masque. Pour une édition spatialement complexe, plusieurs éléments ou de nombreuses références, FLUX 3 est le meilleur premier flux à tester grâce à ses boîtes structurées.
Aucun des deux ne dispense de vérification. Conservez le master, testez la même source, mesurez la zone protégée, contrôlez la modification et validez des checkpoints avant de produire des variantes. C’est ce processus, et non une promesse marketing, qui empêche une série de petites corrections de devenir silencieusement une nouvelle image.