Привет Хабр! Хочу поделиться своим опытом взаимодействия с нейросетками. В последнее время они наделали много шума, в сети есть огромное количество примеров сгенерированных изображений очень приличного качества и хорошей проработки. Меня вдохновили эти примеры, и я решил на боевом проекте протестировать Midjourney, Stable Diffusion и Kandinsky, чтобы выявить их сильные и слабые стороны, и понять — какая нейронка больше всего подойдёт для моей дальнейшей работы. Основной целью было сгенерировать на лендинг кнопку, которая по форме была бы как классическая кнопка Enter, но визуально выглядела бы чуть более интересно: подсветка, неон, футуризм. Ниже опишу свой процесс и результаты генераций нейросеток.
Первая попытка
Пошел по простому пути, написал топорный promt, перечислил все характеристики, которые хотел бы увидеть на изображении. Но результат оказался сильно далек от задумки, кнопка получилась совершенно не похожа на Enter.
Я много раз прогонял генерацию этого promt, но результат никак не менялся в лучшую сторону. Midjourney и Kandinsky выдавали красивую кнопку с множеством деталей, но совершенно далекую от задумки. Stable Diffusion вообще лепил всё что угодно, но ничего похожего на кнопки клавиатуры я не получал. Я понял что количеством генераций тут ничего не изменить, и решил попробовать сменить тактику.
Картинка референс
Так как ни одна из нейросеток видимо не понимала, что такое классическая кнопка Enter, решил показать им как она выглядит с помощью картинки. Нагуглил изображение, которое соответствовало моим пожеланиям, и скормил его каждой нейронке: для Midjourney указал ссылку на изображение и promt, для Kandinsky закинул фотографию через режим «Вариация картинки», для Stable Diffusion воспользовался расширением ControlNet. И принялся ждать.
Midjourney был конечно далёк от нужной формы, но уже выдал некую угловатую кнопку с надписями. Stable Diffusion сделал максимально похожую на референс, но сам вариант оказался очень скучный. Kandinsky выдал что‑то своё абстрактное, с ним нужно было еще поэкспериментировать.
Убедившись, что к каждой нейронке нужен свой подход, чтобы добиться более качественного результата, я начал экспериментировать с каждой из них в отдельности, надеясь найти идеальный метод.
Midjourney
С ней я продолжил использовать исходную референсную картинку и слегка изменил promt. На некоторые из хороших результатов я запрашивал дополнительные варианты, в надежде получить что‑то более интересное. Из огромного количества вариантов лишь единицы были близки к моей задумке. Над ними еще предстояло поработать.
Stable Diffusion
Поскольку на предыдущем этапе нейросеть показала хороший результат при работе через ControlNet, я повторил загрузку референсного изображения кнопки и упростил promt до black button, luminous inscription, white background, strongly detailed, top view
. Пришлось начать экспериментировать с режимами Preprocessor в ControlNet: где‑то нейронка видела очертание кнопки, где‑то могла воспроизвести объем, а где‑то рисовала кнопку в простых прямых линиях (для наглядности слева вывел изображение). Было смешно, что несмотря на референс, она добавляла какие‑то новые несуразные объекты: портрет, пуговицу, символы и т. д.
Мне понравились высокая скорость работы и регулировка количества результатов, но много что Stable Diffusion генерировала невпопад.
Kandinsky
Сначала попробовал неоднократно скормить ей референсное изображение и посмотреть что получится. По всей видимости из‑за отсутствия в этом режиме возможности добавить promt, генерировала она всё что захочет, но не то что хочу я.
У меня получилось несколько изображений, который визуально выглядят неплохо, но сильно далеки от моей задумки. Тогда я переключился на обычный метод генерации изображения через promt, всячески менял и упрощал его, чтобы выявить хоть какую‑то закономерность, но так я её и не нашёл.
Что в итоге
Изначально я задумывал конкретную форму кнопки Enter с небольшим добавлением элементов и символов, но после всех генераций в разных нейросетях я пришёл к выводу, что возьму результат Midjorney за основу и буду дорабатывать его в Figma.
Весь процесс отрисовки пришлось начать с нуля: собрали форму и объём, изменили цвет кнопки с черного на серый, добавили блики, тени, светящиеся иконки и подходящий тематический текст.
Вывод
Нет плохих или хороших нейросеток. Из личного опыта я понял, что у каждой своё назначение. Midjourney и Kandinsky очень хорошо подходят для создания какого‑то креативного изображения, обложки, или для поиска идей. У Midjourney есть несомненно хорошее преимущество сгенерировать новые варианты на основе предыдущего результата. Что касается Stable Diffusion — в связке с ControlNet можно получить более предсказуемый результат, а форму для референса можно нарисовать за 1 минуту в любом графическом редакторе, чем мы и воспользовались в дальнейшем.
Комментарии (12)
diogen4212
11.04.2023 12:55+1мне кажется, что "Preprocessor, Model: hed" больше всего подошёл для вашей задачи. И кнопка ровная, и фон есть, и текстура интересная.
Можно кстати и надпись отдельно накладывать через ControlNet и она будет читаемой и впишется в стиль (сам не пробовал, но видел гайды) — тогда можно взять красивую кнопку с кривым текстом, очистить его и добавить заново нормальный.
dprotopopov
Меня интересует насколько будет актуальна эта статья, скажем через месяц, когда выйдет очередная версия нейросетки-художника .... со своими промтами ( обученная на другой разметке картинок ) ?
Может в них уже уберут связку "россия" -> церковные луковки?
melpnz Автор
Думаю какое-то время будет актуальна. Нейронки делают крутые креативные картинки, но когда хочешь что-то прям конкретное, чаще всего это рандом, можно с первой генерации получить идеал, а можно и 100 сделать и ничего не получится.
nidalee
Определяется он датасетом при обучении модели.
Других не придумали и вряд ли уже придумают.
dprotopopov
сепка в конвеере операндов (программирование)
2d ввод (по сути тот же художник-скетчер)
3d ввод
захват электоэнфоцилограммы
продолжать?
ЗЫ
Ждём статью какой танец с бубном надо станцевать, чтобы появилась желаемая картинка
nidalee
img2img уже существует — он не замена текстовому промту, а дополнение. Ну или основа, если вам угодно.
Тот же самый img2img, только в профиль, уже реализован как controlnet (не помню, какой именно препроцессор, ибо не пользуюсь) — как вы могли догадаться, все еще бесполезен без текстового промта.
Ноу комментс.
Нужно просто упырить мел и принять, что 1-в-1 как в ваших фантазиях не сделает даже художник. После этого становится сильно проще.
dprotopopov
в процессе разметки можно сопоставить что угодно с чем угодно и на этом обучить
смешно будет смотреть, как промт-маги танцуют с бубном для получения картинки