Студийная съёмка одного товара обходится в сотни рублей, а для каталога из 10 000 позиций бюджет становится астрономическим. При этом требования маркетплейсов к изображениям регулярно меняются: Wildberries просит 1000×1000 px, Amazon — 2000×2000 с отступом 85% площади под товар, Ozon — белый фон без теней. Переснимать каждый сезон или под каждую площадку — неоправданные затраты. Наш AI-пайплайн автоматизирует генерацию product images, экономя до 80% бюджета и ускоряя процесс до 2–5 секунд на кадр. Мы используем связку Stable Diffusion XL, ControlNet и IP-Adapter для точного сохранения формы и текстуры товара, а дообучение LoRA (ранг 16) адаптирует модель под уникальные признаки вашего каталога.
Типичная проблема — несовместимость изображений с разными площадками: для Ozon нужен строгий белый фон, для lifestyle-сцен — креативное окружение. Мы решаем это единым алгоритмом, который на этапе генерации подставляет нужный фон в зависимости от площадки. Подход не требует ручной доработки и масштабируется на весь каталог.
Как AI генерирует изображения товаров?
В основе — Stable Diffusion XL с инпейнтингом и ControlNet. Модель дообучается на вашем каталоге через LoRA (ранг 16) для сохранения уникальных признаков товара — текстуры, логотипа, формы. Весь пайплайн работает на PyTorch с Triton Inference Server для низкой latency. Мы используем динамические промпты на основе категории товара: для электроники — «modern minimalist desk setup», для одежды — «urban street style», для косметики — «marble surface with flowers». Это обеспечивает релевантность фона и повышает click-through rate на маркетплейсах. Без дообучения модель галлюцинирует — искажает форму или накладывает посторонние объекты. LoRA с рангом 16 решает эту проблему, сохраняя детализацию.
Удаление фона + генерация нового
from rembg import remove, new_session
from PIL import Image
from diffusers import StableDiffusionXLInpaintPipeline
import torch
import io
import numpy as np
class ProductImageGenerator:
def __init__(self):
self.bg_remover = new_session("isnet-general-use")
self.pipe = StableDiffusionXLInpaintPipeline.from_pretrained(
"diffusers/stable-diffusion-xl-1.0-inpainting-0.1",
torch_dtype=torch.float16
).to("cuda")
def remove_background(self, product_image: bytes) -> tuple[bytes, bytes]:
"""Возвращаем (изображение без фона, маска фона)"""
result = remove(product_image, session=self.bg_remover)
img_rgba = Image.open(io.BytesIO(result)).convert("RGBA")
r, g, b, a = img_rgba.split()
mask = Image.fromarray(255 - np.array(a))
img_rgb = Image.new("RGB", img_rgba.size, (255, 255, 255))
img_rgb.paste(img_rgba, mask=img_rgba.split()[3])
img_buf = io.BytesIO()
img_rgb.save(img_buf, format="PNG")
mask_buf = io.BytesIO()
mask.save(mask_buf, format="PNG")
return img_buf.getvalue(), mask_buf.getvalue()
def place_on_background(
self,
product_image: bytes,
background_prompt: str,
steps: int = 30
) -> bytes:
product_bytes, mask_bytes = self.remove_background(product_image)
result = self.pipe(
prompt=background_prompt,
image=Image.open(io.BytesIO(product_bytes)),
mask_image=Image.open(io.BytesIO(mask_bytes)),
num_inference_steps=steps,
guidance_scale=9.0,
strength=0.99
).images[0]
buf = io.BytesIO()
result.save(buf, format="PNG")
return buf.getvalue()
Генерация lifestyle-сцен
PRODUCT_SCENE_PROMPTS = {
"electronics": [
"modern minimalist desk setup, natural light, laptop nearby, bokeh background",
"cozy home office, wooden desk, plants, warm ambient lighting",
],
"clothing": [
"fashion editorial, urban street style, natural daylight",
"lifestyle shot, outdoor park, casual summer day",
],
"food": [
"rustic wooden table, natural light, herbs nearby, shallow depth of field",
"modern kitchen counter, marble surface, fresh ingredients",
],
"cosmetics": [
"marble surface with flowers, soft pink background, luxury aesthetic",
"bathroom counter, morning light, clean minimalist style",
]
}
async def generate_product_scenes(
product_image: bytes,
product_category: str,
num_variants: int = 4
) -> list[bytes]:
prompts = PRODUCT_SCENE_PROMPTS.get(product_category, ["professional studio, white background"])
results = []
for prompt in prompts[:num_variants]:
result = product_gen.place_on_background(
product_image,
f"product photography, {prompt}, high quality, 8k"
)
results.append(result)
return results
Генерация цветовых вариаций
async def generate_color_variants(
product_image: bytes,
colors: list[str],
product_mask: bytes
) -> dict[str, bytes]:
"""Меняем цвет товара через инпейнтинг с маской"""
results = {}
for color in colors:
from diffusers import StableDiffusionXLInpaintPipeline
result = pipe(
prompt=f"same product shape, {color} color, same material texture, product photography",
image=Image.open(io.BytesIO(product_image)),
mask_image=Image.open(io.BytesIO(product_mask)),
strength=0.6,
guidance_scale=10.0
).images[0]
buf = io.BytesIO()
result.save(buf, format="PNG")
results[color] = buf.getvalue()
return results
Почему AI выгоднее студийной съёмки?
| Критерий | Студийная съёмка | Наш AI-пайплайн |
|---|---|---|
| Стоимость одного товара | Высокая | Низкая |
| Время на 1000 товаров | Недели | Часы |
| Вариации цвета/материала | Требуют новой съёмки | Генерируются за секунды |
| Масштабирование | Линейный рост затрат | Почти бесплатно |
Экономия бюджета достигает 80%, а окупаемость проекта — 2–3 месяца при каталоге от 1000 позиций. Например, для ритейлера с каталогом из нескольких тысяч товаров мы сгенерировали десятки тысяч изображений (основные + lifestyle + цветовые варианты) за несколько дней. Студийная съёмка заняла бы месяц и обошлась в разы дороже.
Требования маркетплейсов к изображениям
| Площадка | Размер | Формат | Фон | Padding |
|---|---|---|---|---|
| Wildberries | 1000×1000 | JPG | Белый | Нет |
| Ozon | 1000×1000 | JPG | Белый | Нет |
| Amazon | 2000×2000 | JPG | Белый | 85% |
| Shopify | 2048×2048 | WebP | Любой | Нет |
Как мы внедряем решение?
- Аудит каталога — анализируем текущие фото, требования площадок, объём данных.
- Настройка пайплайна — дообучаем модель LoRA на 20–50 ваших товарах, подбираем промпты.
- Batch-обработка — генерируем все изображения (фон, сцены, вариации).
- Оптимизация — приводим к требованиям маркетплейсов (размер, формат, фон).
- Интеграция — подключаем API к вашей CMS или выгружаем на FTP.
- Контроль качества — автоматическая валидация + выборочная ручная проверка.
Типичные сроки: для каталога до 5000 товаров — 1–2 недели, до 50 000 — 3–4 недели.
Что входит в наш проект?
- Документация пайплайна и API.
- Обучение вашей команды работе с моделью.
- Поддержка 1 месяц после запуска.
- Гарантия стабильного качества — фиксируем метрики и SLA.
Опыт нашей команды — несколько лет в компьютерном зрении и генеративных моделях, более 50 проектов для e-commerce. Мы используем сертифицированные open-source решения и гарантируем воспроизводимость результатов.
Типичные ошибки при внедрении
- Использование одной модели для всех категорий без дообучения — теряется детализация.
- Игнорирование требований маркетплейсов к padding и цветовому профилю.
- Отсутствие A/B-тестирования AI-фото vs студийных — конверсия может упасть, если модель галлюцинирует.
Мы настраиваем метрики для каждого кейса и проводим сравнительный анализ до запуска. Закажите пилот на 100 товаров — убедитесь в качестве и скорости генерации. Свяжитесь с нами для детального аудита вашего каталога. Получите консультацию по интеграции AI-генерации в ваш бизнес.







