Если в 2025 году эксперты оценивают в 20% количество рекламы, созданной с
использованием искусственного интеллекта (ИИ), то в 2026 году те же
самые эксперты прогнозируют, что эта цифра вырастет аж до 80%. Т.е.
визуальное представление большинства рекламируемых товаров и услуг будет
создано с использованием нейронок.
Удивительно, не правда ли?
В добавок к этому, многие мои знакомые (владельцы косметических брендов)
говорят, что привычные нам предметные фотосъёмки теперь уже уходят на
второй план - на авансцену выходят изображения, созданные в программах
3d-моделирования и нейронках. Вроде как там изображения получаются
красивее и быстрее.
Ну, раз так, то, чтобы не отставать от прогресса, пришлось осваивать современные технологии.
Для примера возьмём флакон косметики HELEO4.
В качестве редактора для 3d-моделирования я выбрал BLENDER. Для моих
задач этой программы достаточно - там есть все необходимые инструменты
для создания как самой геометрии товара, так и текстуры её поверхности.
Кстати, эта программа ещё и бесплатная!
Но! Как бы ни хвалили все эти новомодные программы, начинать работу всё
равно приходится с предметной фотосъёмки. Дело в том, что создавать
3d-модель проще всего на основе уже имеющихся фотографий, на которых
видна форма товара, соотношение частей, материал поверхности и то, как
товар взаимодействует со светом (степень шероховатости, блики,
прозрачность, цвет и т.д.)
Соответственно, надо было сделать серию фотографий флакона с разных
ракурсов. Чтобы проще было создавать 3d-модель, на фото я поместил белый
флакон на тёмном фоне - так лучше видна форма предмета.
Настройки фотоаппарата (Canon 5D Mark II, объектив Canon EF 24-105mm F/4):
- выдержка 1/125 сек,
- диафрагма F/8,
- ISO 400
Фотосъёмка проводилась с использованием видеосвета YongNuo YNLUX200.
По этой серии фотографий в программе BLENDER я сделал 3d-модель. В
принципе, создание флакона цилиндрической формы не представляет
особенных трудностей. Самое сложное было создать выемку на верху
дозатора.
После создания формы довольно-таки просто было создать материал "белый
пластик" для самого флакона и "полупрозрачный белый пластик" - для
крышечки.
После была добавлена этикетка и несколько источников освещения. В итоге,
получилась довольно-таки реалистичная 3d-модель флакона (более подробно
процесс создания модели есть в статье 3D-моделирование косметики HELEO4 с всплеском воды в BLENDER).
А дальше есть 2 варианта использования этой модели:
- можно под каждую задачу создавать новый интерьер в BLENDER и вставлять в этот интерьер нашу 3d-модель,
- а можно научить нейронную сеть рисовать наш товар и тогда буквально
за 20 секунд можно будет генерировать любой фон для флакона косметики.
Если оставаться в рамках BLENDER, тогда мне придётся часами конструировать
множественные предметы на фоне под каждую задачу (например, "флакон
стоит на столе, вокруг много украшений, на фоне красивое разноцветное
боке" или "флакон стоит на песке на берегу моря, на фоне видны пальмы и
высокие морские волны" или "флакон падает на водную поверхность и брызги
разлетаются в разные стороны").
Кому-то проще это реализовать в BLENDER. Мне же удобнее реализовать это в нейронках.
В качестве примера приведу пару изображений, на которые я потратил
несколько часов в BLENDER, чтобы получить более-менее хороший результат:
А вот в нейронке генерация изображения может быть очень быстрой - от 20
секунд (на мощной видеокарте) до 2-3 минут (как на моей не самой сильной видеокарте).
Для решения задачи в нейронке необходимо научить её рисовать наш флакон.
Есть 2 варианта, как это сделать: или переучить основную модель для
рисования нашего товара, или (что, на мой взгляд, гораздо более логично)
создать LoRa (вспомогательную мини-модель) и добавлять её к основной модели для наилучшего отображения нашего флакона косметики.
Самое долгое и трудоёмкое - это как раз сделать правильные настройки для
тренировки LoRa и ждать, когда эта самая LoRa натренируется до такого
уровня, когда она будет выдавать на изображениях флакон косметики,
максимально похожий на наш HELEO4 Daylight Activated Fluid.
В качестве основы для тренировки LoRa я взял одну из самых продвинутых моделей для генерации изображений - FLUX.
Хотя на моей видеокарте с памятью 8 гигабайт эта модель идёт с трудом,
но всё-таки запускается и, пусть медленно, но выдаёт шикарные
реалистичные изображения.
Для обучения LoRa нужна серия исходных изображений флакона косметики (так называемый "датасет"). В интернете есть много советов и видеоуроков, как лучше готовить датасет и сколько необходимо фотографий. Да, я понимаю, что лучше дать на входе множество ракурсов нашего флакона (в некоторых видеоуроках количество исходных изображений доходит до полутора сотен), но моя видеокарта просто столько изображений не обработает.
Порадовало то, что есть видео-примеры того, как люди тренируют LoRa на 7-20 изображениях. Это как раз мне подходит.
Кстати, именно BLENDER помог мне в подготовке датасета - там очень
удобно вращать 3d-модель и сохранять в виде изображения любой нужный
ракурс. Я подготовил несколько стандартных ракурсов флакона:
- фронтально (вид спереди, флакон стоит вертикально),
- спереди под углом (флакон слегка падает направо-налево),
- немного сверху (флакон стоит вертикально),
- немного сверху с наклоном флакона вправо-влево,
- слегка снизу,
- слегка снизу с наклоном флакона вправо-влево,
- (крупно) крышечка флакона,
- (крупно) логотип и надписи на флаконе.
Всего было 10 изображений размером 512 на 512 пикселей. Тренировалась
LoRa на моей не самой мощной видеокарте несколько часов. Настройки были
сделаны так, чтобы после каждой эпохи (полный проход по всем
изображениям датасета) LoRa строила сэмплы -
изображения моего флакона таким, каким она его видит на данном этапе
обучения - т.е. примерно каждые пол-часа я получал новое изображение.
На начальном этапе обучения LoRa может выдавать вообще не ту форму
флакона. А вот уже после 5-7 эпох (при правильных настройках) сэмплы,
генерируемые с помощью LoRa, могут быть очень даже похожи на исходные
изображения датасета.
Эпоха 1
Эпоха 2
Эпоха 3
Эпоха 4
Эпоха 5
В итоге: после 7-10 эпох моя LoRa научилась довольно-таки хорошо
передавать форму флакона, а вот надписи и логотипы не совсем меня
устраивают. Но я нашёл выход. Не буду ждать ещё несколько часов обучения
LoRa, чтобы тексты и логотип стали более отчётливыми (да и не факт, что
они станут лучше) - мне проще их добавить на флакон в фотошопе.
Таким образом, получается следующая схема получения итогового изображения:
- сначала генерирую флакон и окружающие предметы в модели FLUX (каждая генерация занимает до 2-3 минут),
- добавляю этикетку на поверхность флакона в фотошопе (5-10 минут).
Модель FLUX очень хорошо работает через Comfy UI - там можно выстроить систему узлов с точными настройками генерации.
В общем-то, структура узлов довольно типичная. Основные узлы - это:
- нода Load Diffusion Model - загрузка модели Flux,
- нода Load LoRA - загрузка нашей LoRa, которую я обучил рисовать флакон Heleo4,
- нода CLIPTextEncodeFlux - 2 текстовых поля для двух промтов (промт A - основная идея, промт B - детализация),
- нода KSampler - это как раз тот блок, где генерируется изображение (в латентном пространстве),
- нода VAE Decode - блок, где изображение переводится из латентного пространства в обычное, которое можно отобразить на мониторе.
- нода Save Image - сохраняет полученное изображение.
В качестве промтов были использованы следующие текстовые последовательности:
- промт A: A heleo4dl standing on a water surface.
Cosmetic product with translucent cap. Surrounded by giant glass roses,
dreamy lighting, ethereal atmosphere, soft glow, photo realism, highly
detailed, cinematic, 8K render. - промт B: A (heleo4dl:1.5) standing on a water
surface. Luxury cosmetic product with translucent cap. White plastic
material, reflective material, translucent cap. Surrounded by giant
glass roses, dreamy lighting, ethereal atmosphere, soft glow, photo
realism.
В качестве ключевого слова для рисования нашего флакона использовалась последовательность букв heleo4dl - именно это ключевое слово я использовал во время обучения LoRa.
В итоге - давайте посмотрим результат нескольких генераций изображений в модели FLUX с LoRa (напоминаю, что саму этикетку я добавил уже в фотошопе):
Результат довольно впечатляющий (хотя и не идеальный).
По опыту скажу, что для меня все 3 способа генерации изображений
интересны и каждый имеет свои плюсы и минусы.
В итоге, я сделал такой вывод: если мне нужна одна фотосъёмка товара, то, конечно, же проще будет это сфотографировать, а если нужно регулярно продвигать товар и постоянно нужны изображения товара в новых локациях, то гораздо удобнее создать 3d-модель и генерировать изображения, например, в BLENDER. Или можно пойти ещё дальше и создать свою LoRa, которая позволит
генерировать изображения в нейронке, что существенно экономит время и
деньги.
Ещё больше интересных фото-экспериментов - на сайте Neo-Photo.Art.