Как мы кнопку Enter пытались сгенерировать
Привет Хабр! Хочу поделиться своим опытом взаимодействия с нейросетками. В последнее время они наделали много шума, в сети есть огромное количество примеров сгенерированных изображений очень приличного качества и хорошей проработки. Меня вдохновили эти примеры, и я решил на боевом проекте протестировать Midjourney, Stable Diffusion и Kandinsky, чтобы выявить их их сильные и слабые стороны, и понять какая нейронка больше всего подойдёт для моей дальнейшей работы. Основной целью было сгенерировать кнопку на лендинг, которая по форме была бы как классическая кнопка Enter, но визуально выглядела бы чуть более интересно: подсветка, неон, футуризм. Ниже опишу свой процесс и результаты генераций нейросеток.
Первая попытка
Пошел по простому пути, написал топорный promt, перечислил все характеристики, которые хотел бы увидеть на изображении. Но результат оказался сильно далек от задумки, кнопка получилась совершенно не похожая на Enter.
Promt MJ и SD: enter button black color, luminous inscription, white background, strongly detailed, top view
Promt KS: кнопка enter черного цвета, светящаяся надпись, белый фон, высокая детализация, вид сверху
тот же promt
Я много раз прогонял генерацию этого promt, но результат никак не менялся в лучшую сторону. Midjourney и Kandinsky выдавали красивую кнопку с множеством деталей, но совершенно далекую от задумки. Stable Diffusion вообще лепил всё что угодно, но ничего похожего на кнопки клавиатуры я не получал. Я понял что количество генераций тут ничего не изменить, и решил попробовать сменить тактику.
Картинка референс
Так как ни одна из нейросеток видимо не понимала, что такое классическая кнопка Enter, решил показать им как она выглядит с помощью картинки. Нагуглил изображение, которое соответствовало моим пожеланиям, и скормил его каждой нейронке: для Midjourney указал ссылку на изображение и promt, для Kandinsky закинул фотографию через режим «Вариация картинки», для Stable Diffusion воспользовался расширение ControlNet. И принялся ждать.
Promt SD: black enter button, luminous inscription, white background, strongly detailed, top view + картинка через ControlNet, preprocessor и model canny
KS: в режиме «вариация картинки» загрузил референс
Midjourney был конечно далёк от нужной формы, но уже выдал некую угловатую кнопку с надписями. Stable Diffusion сделал максимально похожую на референс, но сам вариант оказался очень скучный. Kandinsky выдал что-то своё абстрактное, с ним нужно было еще поэкспериментировать.
Убедившись, что к каждой нейронке нужен свой подход, чтобы добиться более качественного результата, я начал экспериментировать с каждой из них в отдельности, надеясь найти идеальный метод.
Midjourney
С ней я продолжил использовать исходную референсную картинку и слегка изменив promt. На некоторые из хороших результатов я запрашивал дополнительные варианты, в надежде получить что-то более интересное. Из огромного количества вариантов лишь единицы были близки к моей задумке. Над ними еще предстояло поработать.
Stable Diffusion
Поскольку на предыдущем этапе нейросеть показала хороший результат при работе через ControlNet, я повторил загрузку референсного изображения кнопки и упростил promt до black button, luminous inscription, white background, strongly detailed, top view
. Пришлось начать экспериментировать с режимами Preprocessor в ControlNet: где-то нейронка видела очертание кнопки, где-то могла воспроизвести объем, а где-то рисовала кнопку в простых прямых линиях (для наглядности слева вывел изображение). Было смешно, что несмотря на референс, она добавляла какие-то новые несуразные объекты: портрет, пуговицу, символы и т.д.
Мне понравились высокая скорость работы и регулировка количества результатов, но много что Stable Diffusion генерировала невпопад.
Preprocessor, Model: normal_map
Preprocessor, Model: canny
Preprocessor, Model: depth
Preprocessor, Model: hed
Preprocessor, Model: mlsd
Preprocessor, Model: segmentation
Kandinsky
Сначала попробовал неоднократно скормить ей референсное изображение и посмотреть что получится. По всей видимости из-за отсутствия в этом режиме возможности добавить promt, генерировала она всё что захочет, но не то что хочу я.
У меня получилось несколько изображений, который визуально выглядят неплохо, но сильно далеки от моей задумки. Тогда я переключился на обычный метод генерации изображения через promt, всячески менял и упрощал его, чтобы выявить хоть какую-то закономерность, но так я её и не нашёл.
promt: черная кнопка энтер со светящейся надписью
promt: черная кнопка enter со светящейся надписью
promt: кнопка enter с клавиатуры, черный цвет, белый фон, светящаяся надпись
promt: форма кнопки enter, черный цвет, белый фон, светящаяся надпись
promt: кнопка ввода черного цвета
Что в итоге
Изначально я задумывал конкретную форму кнопки Enter с небольшим добавлением элементов и символов, но после всех генераций в разных нейросетях я пришёл к выводу, что возьму результат Midjorney за основу и буду дорабатывать его в Figma. По итогу нарисовали кнопку с нуля, добавив светящихся надписей и просто текста, и вообще из черной кнопки сделали серую, но сохранили форму, блики и объём.
Весь процесс отрисовки пришлось начинать с нуля: собрали форму и объём, изменили цвет кнопки с черного на серый, добавили блики, тени, светящиеся иконки и подходящий тематический текст.
Вывод
Нет плохих или хороших нейросеток. Из личного опыта я понял, что у каждой своё назначение. Midjourney и Kandinsky очень хорошо подходят для создания какого-то креативного изображения, обложки, или для поиска идей. У Midjourney есть несомненно хорошее преимущество сгенерировать новые варианты на основе предыдущего результата. Что касается Stable Diffusion — в связке с ControlNet можно получить более предсказуемый результат, а форму для референса можно нарисовать за 1 минуту в любом графическом редакторе, чем мы и воспользовались в дальнейшем.