Ideogram 4.5 против FLUX 3: точечное редактирование товарных изображений
Для небольшой правки в готовом товарном или рекламном изображении первым стоит проверить Ideogram 4.5: его Precise Edit лучше соответствует задаче «изменить только эту область». FLUX 3 логичнее начинать тестировать, когда нужны координатные рамки, несколько объектов или много референсов. Статья не объявляет победителя без парного теста, а дает воспроизводимый порядок сравнения и приемки.
Содержание

Для товарной фотографии недостаточно получить «похожую красивую картинку». Если исходник уже утвержден, задача обычно жестче: заменить строку на этикетке, перекрасить крышку или убрать наклейку, не тронув форму упаковки, логотип, штрихкод, блики, тени, фон и кадрирование.
Практический выбор такой: для условия «меняем маленький участок, остальное сохраняем» сначала проверяйте Ideogram 4.5 Precise Edit. Если важнее точное размещение, несколько связанных объектов или большой набор референсов, начинайте с FLUX 3 Image. Это порядок тестирования, а не безусловный рейтинг качества. В изученных официальных материалах нет независимого воспроизводимого сравнения двух моделей на одном исходнике, поэтому решение должно пройти вашу собственную приемку.
Быстрый выбор
| Задача | С чего начать | Почему |
|---|---|---|
| Исправить текст, знак, бейдж или небольшой участок цвета | Ideogram 4.5 | Документация Precise Edit описывает маску, совпадение размеров результата с исходником и точное копирование пикселей, которые не были существенно изменены. |
| Отредактировать фрагмент большого печатного оригинала и вклеить обратно | Ideogram 4.5 | На странице модели прямо показан процесс «вырезать область — отредактировать — вернуть в оригинал». |
| Переместить, удалить или согласованно заменить несколько элементов | FLUX 3 | Можно задавать структурированные строки с исходными и целевыми рамками. |
| Использовать много предметных или стилевых референсов | FLUX 3 | API принимает от одного до десяти изображений; у Ideogram Precise Edit максимум четыре, а с маской — меньше. |
| Ввести жесткое правило «за пределами зоны ничего не меняется» | Ideogram первым, затем локальная проверка | Маска Ideogram ограничивает область редактирования; рамки FLUX направляют размещение, но не являются clipping mask. |
| Сделать серию цветовых или региональных вариантов | Любая модель, но только через ветвление | Каждый вариант следует создавать от одного принятого контрольного файла, а не друг от друга. |
Что считать точным редактированием
Перед запуском модели зафиксируйте не абстрактное «сохранить оригинал», а три проверяемых объекта:
- Разрешенная область: минимальная зона изменения с запасом на край, тень и отражение.
- Защищенная область: все пиксели и элементы, которые должны остаться стабильными.
- Критерии приемки: размеры, отклонения вне зоны, точность текста, цвет, геометрия, свет, профиль и ручная проверка.
Семантическое сходство не равно сохранению исходника. Бутылка может выглядеть той же, хотя модель изменила кернинг логотипа, зерно фона, форму блика или пропорции упаковки. Для концепта это бывает допустимо; для карточки товара, юридического текста и печати — часто нет.
Что дает Ideogram 4.5
Официальный Ideogram 4.5 Precise Edit API использует endpoint:
POST https://api.ideogram.ai/v2/image/precise-edit/ideogram-4-5
Исходник передается как image, инструкция — как prompt; дополнительно доступны reference_images и mask. В документации сказано, что результат получает ту же ширину и высоту, а пиксели, которые редактирование существенно не изменило, копируются из входного изображения. Для загружаемой маски действует правило: черное — редактировать, белое — сохранить.
Поэтому Ideogram дает более понятный исходный контракт для небольшой правки в утвержденном макете. Для большого файла полезен описанный на странице модели процесс: вырезать участок с запасом, отредактировать его и вклеить обратно благодаря сохраненным краям.
Есть два ограничения процесса:
- документация предупреждает, что слишком большие изображения уменьшаются; полный высокодетальный мастер нельзя отправлять с предположением, что каждый исходный пиксель сохранится;
- маска занимает один слот референса, поэтому в masked-запросе доступно меньше вспомогательных изображений.
По умолчанию ответ синхронный. При async или webhook сохраните generation_id и опрашивайте GET /v2/generations/{generation_id}. Обзор API также сообщает, что URL результата истекает: файл нужно скачать, а не хранить только ссылку.
Что дает FLUX 3
Официальный FLUX 3 Image API использует:
POST https://api.bfl.ai/v1/flux-3-image
Отдельного режима редактирования нет: вы отправляете prompt и один или несколько элементов images, описывая изменение словами. API принимает от одного до десяти референсов. При aspect_ratio: auto явное требование из prompt имеет приоритет; иначе при наличии референсов сохраняется кадрирование первого изображения.
Главный инструмент пространственного контроля — формат bounding boxes. Рамка задается как [top, left, bottom, right] в нормализованной сетке 0–1000. Строки позволяют описать исходное и целевое положение элемента, чтобы оставить, переместить, добавить, заменить, перекрасить или удалить его.
Это удобно, когда задача звучит как «поставить объект сюда» или «заменить несколько элементов в одной композиции». Но официальная документация отдельно предупреждает: рамки задают размещение и не являются маской обрезки. Пиксели вне рамок «обычно» остаются прежними — это не жесткая гарантия.
FLUX работает асинхронно. Сохраняйте возвращенные id и polling_url; руководство по интеграции требует опрашивать именно URL из ответа. При статусе Ready немедленно скачивайте result.sample: BFL указывает, что такие файлы становятся недоступны через десять минут.
Для чистого парного теста разумно поставить grounding: false. По умолчанию grounding может использовать поиск по вебу и изображениям, а для локальной правки предоставленного исходника это лишняя переменная.
Воспроизводимый тест на одном исходнике
Сравнивайте не разные демонстрации, а один утвержденный файл, одну формулировку изменения и одну карту приемки.
1. Зафиксируйте мастер
Используйте lossless PNG либо PNG, подготовленный из TIFF. Запишите имя, SHA-256, размеры, цветовой профиль и номер утвержденной версии. Отдельная копия мастера должна быть только для чтения.
2. Создайте внутреннюю маску приемки
Маска должна совпадать по размеру с исходником:
- белое: может измениться;
- черное: защищено.
Добавьте небольшой запас вокруг цели. Для этикетки включите в разрешенную область тень, отблеск, тиснение или прозрачную пленку, иначе проверка будет требовать невозможного шва.
Эта внутренняя маска использует белое как «можно менять». У Ideogram правило загрузочной маски противоположное: черное редактируется, белое сохраняется. Давайте файлам однозначные имена.
3. Одна попытка — одно бизнес-изменение
Хорошие задания: заменить одну строку, перекрасить только крышку, убрать одну наклейку. Не объединяйте исправление текста, новый фон, другое освещение и новый кадр в одном precision-тесте.
Шаблоны инструкций:
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.
Для FLUX можно добавить измеренные строки рамок. Пример ниже иллюстрирует замену; координаты нужно рассчитать по реальному исходнику, а рамка все равно не превращается в маску:
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. Сравните эквивалентный замысел, а не одинаковые интерфейсы
- Ideogram: передайте полный файл либо crop с запасом; для строгой локализации используйте маску по правилу black-edit/white-keep.
- FLUX 3: поставьте источник первым в
images, оставьтеaspect_ratio: auto, добавьте строки boxes и отключите grounding для контрольного запуска.
Сохраните все параметры в журнале. Честное сравнение использует одинаковую бизнес-задачу и доступные официальные элементы управления каждой модели.
5. Скачайте исходный результат
Не оценивайте скриншот или сжатый preview. Сразу сохраните файл, присвойте имя вида:
masterHash_model_editId_attempt.ext
Вычислите его хеш. Любой последующий resize, конвертацию профиля или JPEG-экспорт храните отдельно от raw-результата модели.
Проверка защищенных пикселей
Скрипт ниже сравнивает исходник и кандидат за пределами внутренней разрешенной маски. Он также создает карту: белое — изменившиеся защищенные пиксели, серое — разрешенная зона, черное — неизменная защищенная зона.
Установите зависимости:
python -m pip install pillow numpy
Сохраните как 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())
Строгая проверка lossless-файлов:
python verify_edit.py master.png candidate.png allowed-mask.png --tolerance 0 --max-outside-ratio 0
Как читать отчет:
outside_changed_pixels=0— RGB вне разрешенной зоны совпали;- ненулевой
outside_changed_ratio— есть дрейф, откройтеoutside-diff.png; icc_profile_match=False— предупреждение об изменении цветового конвейера;- нулевой допуск уместен для lossless. JPEG меняет пиксели при повторном сжатии, поэтому лучше проверять исходный PNG или заранее утвердить и записать ненулевой порог.
Даже идеальная пиксельная защита не подтверждает качество измененной зоны. Отдельно проверьте написание, шрифт, логотип, материал, перспективу, края, блики, тени, отражения и перекрытия.
Как не накапливать ошибки в нескольких раундах
Используйте ветки и контрольные точки:
- Мастер — неизменяемый утвержденный источник.
- Контрольная точка — кандидат, прошедший автоматическую и ручную приемку.
- Вариант — региональная, цветовая или форматная ветка от одной контрольной точки.
Красный, синий и зеленый варианты должны быть созданы от одного принятого файла. Цепочка «красный из мастера, синий из красного, зеленый из синего» превращает малые ошибки в накопленный редизайн.
На каждом шаге меняйте только одно. Если результат не прошел приемку, удалите его и вернитесь к последней принятой точке. Не пытайтесь исправлять дрейф дополнительным промптом поверх отклоненного файла.
В журнале храните хеш источника, модель и endpoint, prompt, маску или координаты, хеш результата, размеры, долю изменений в защищенной зоне и решение ревьюера. Заявление Ideogram о меньшем дрейфе и box-контроль FLUX нужно проверять этим процессом, а не использовать как повод отказаться от приемки.
Рекомендации по сценариям
Исправление этикетки или обязательного текста
Сначала Ideogram 4.5. Сделайте crop с запасом, примените black-edit/white-keep mask, проверьте каждый символ и вклейте принятую область в мастер. FLUX стоит тестировать, когда особенно сложны композиция и позиция, но рамка не гарантирует сохранность остальной этикетки.
Один новый цвет
Сначала Ideogram 4.5, если граница предмета четкая и остальное должно быть пиксельно стабильным. Включите в разрешенную область цветные отражения и падающий свет. Сначала FLUX 3, если одновременно меняются несколько предметов или референсы задают материал и палитру.
Перемещение, замена или удаление объекта
Сначала FLUX 3, когда главное — исходная и целевая позиция или несколько согласованных элементов. Сначала Ideogram 4.5, когда объект мал, его легко изолировать маской, а точная геометрия исходника важнее сложной компоновки.
Высокое разрешение для печати
Не отдавайте весь мастер безусловно. Вырежьте область с защитным полем, сохраните исходник, отредактируйте фрагмент, проверьте его границу и вклейте обратно. Ideogram прямо описывает такой процесс; для FLUX размеры и защищенные пиксели должны оставаться критериями приемки, а не предположением.
Большая серия вариантов
Проверьте модели на небольшом репрезентативном наборе, выберите процесс с меньшим процентом отклонений и ручных исправлений, зафиксируйте контрольную точку и ветвите все варианты от нее.
Контрольный список перед публикацией
Проверьте, что:
- использован правильный мастер или принятая контрольная точка;
- запрошено одно документированное изменение;
- размеры, ориентация и crop правильны;
- защищенная зона проходит установленный порог;
- текст, логотип, штрихкод и обязательная информация точны;
- материал, края, тени, отражения и перекрытия правдоподобны;
- профиль и формат подходят каналу;
- сохранены raw-файл, prompt, координаты или mask, хеши и решение;
- новые варианты будут создаваться от контрольной точки, а не от другого варианта.
Вывод
Для малой точечной правки готового товарного изображения логичнее первым тестировать Ideogram 4.5: его опубликованный контракт ближе к сохранению исходника и включает настоящую маску ограничения. Для пространственно сложной задачи, нескольких объектов или множества референсов первым тестируйте FLUX 3: структурированные рамки лучше соответствуют этой работе.
Но ни одна модель не отменяет приемку. Сохраните неизменяемый мастер, используйте один исходник, измеряйте защищенную область, вручную проверяйте измененную зону и утверждайте контрольные точки до выпуска вариантов. Именно процесс предотвращает превращение серии небольших правок в незаметно перерисованную картинку.