Да, это снова статья про нейросети, но подождите перелистывать, этого нет на просторах русскоязычного гугла (по крайне мере на первой странице).  Если кратко, то мои проекты связаны с разработкой обучающих программ под различные бизнес запросы (например, масштабирование), подробнее про проекты тут. На одном из таких проектов, появилась следующая задача: Нужно создать персонажа с разными выражениями лица Ну конечно, сразу же идем в одну из доступных нейросетей, к счастью, их сейчас развелось много. И после первого промта понимаем, что изображение каждый раз генерируются случайным образом. В целом, ничего удивительного, но изначально эта умная мысль мою голову не посетила. Окей, вспоминаем про такую штуку, как сид, если очень простым языком - это случайное число используемое при генерации изображения. Указав его в новом промте можно получить практически идентичное изображение. К сожалению, сид не помог, изображение действительно получается идентичным, но при добавлении эмоций оно либо не меняется совсем, либо становится совершенно другим. Думаем дальше, и тут вспоминаем про то, что можно отправить ссылку на уже сгенерированное изображение и прописать обновленный промт. Но результат получился, мягко говоря, неожиданный … Ответа на вопрос "почему так вышло?" я не нашел, хотя узнать было бы интересно. И вот, прошло уже несколько часов за экспериментами, а все что было найдено никак не решало задачу. Когда оказываешься в подобной ситуации, есть только один выход: Google it Как я уже сказал, на просторах русскоязычных интеренетов, ответа не нашлось. Поэтому пришлось обращаться к коллегам за бугром и этот канал на YT помог понять чего не хватало моему промту. От получения приемлемо-стабильного результата меня отделяли два важных момента: Нужно использовать более одного изображения. Так модель собирает вашего персонажа из нескольких +- похожих изображений за счет чего повышается стабильность выдаваемого результата. Нужно использовать тот же промт, который использовался для создания изначального изображения. Сейчас перейдем к примерам и все станет понятно. Процесс состоит из двух шагов: Шаг 1. Генерация 2-3 изображений персонажа, которые +- похожи друг на друга, это можно назвать датасетом. Шаг 2. Использование полученных изображений для генерации приемлемо-стабильного персонажа с различными выражениями лица. Для генерации первого изображения датасета, я использовал следующий промт: photo of a regular 28 year old guy with short haircut, red hair colour, curly hair, blue eyes, dressed in a gray t-shirt, ultra realistic, face detailed Для нашего проекта мы выбрали изображение №2. Теперь нужно сгенерировать еще хотя бы одно изображение с +- похожим лицом. Для этого, необходимо нажать кнопку повторной генерации "🔄" и так до тех пор, пока не получится желаемое количество похожих изображений. Суммарно, я планировал использовать два изображения, поэтому мне осталось найти лишь еще одно. Это удалось сделать с третьей попытки. Ниже результаты. Вот и настала самая интересная часть.  Сначала генерируем стабилизованное изображение персонажа. Добавляем в начало того же промта ссылки на выбранные изображения. Промт будет выглядеть примерно так: https://cdn.discordapp.com/.../*.png https://cdn.discordapp.com/.../*.png photo of a regular 28 year old guy with short haircut, red hair colour, curly hair, blue eyes, dressed in a gray t-shirt, ultra realistic, face detailed Для простоты восприятия основную часть ссылки заменил на /.../. Самое главное, чтобы начало и конец ссылки были как в примере. И сразу после ссылок, через пробел, идет тот же самый промт. Результат ниже. Да, мне повезло чуть меньше, и сами персонажи отличаются друг от друга, но после генерации всех изображений с эмоциями станет понятно, кого из низ выбрать. Проделываем тоже самое но уже с эмоциями:  Улыбка. Добавляем к основному промту smile on his facehttps://cdn.discordapp.com/.../*.png https://cdn.discordapp.com/.../*.png photo of a regular 28 year old guy with smile on his face, short haircut, red hair colour, curly hair, blue eyes, dressed in a gray t-shirt, ultra realistic, face detailed Счастливый. Добавляем к основному промту an extremely happy facehttps://cdn.discordapp.com/.../*.png https://cdn.discordapp.com/.../*.png photo of an extremely happy 28 year old guy with short haircut, red hair colour, curly hair, blue eyes, dressed in a gray t-shirt, ultra realistic, face detailed Расстроенный. Добавляем к основному промту an extremely upset, almost cryingfacehttps://cdn.discordapp.com/.../*.png https://cdn.discordapp.com/.../*.png photo of an extremely upset, almost crying 28 year old guy with short haircut, red hair colour, curly hair, blue eyes, dressed in a gray t-shirt, ultra realistic, face detailed Злой. Добавляем к основному промту an extremely angry facehttps://cdn.discordapp.com/.../*.png https://cdn.discordapp.com/.../*.png photo of an extremely angry 28 year old guy with short haircut, red hair colour, curly hair, blue eyes, dressed in a gray t-shirt, ultra realistic, face detailed Испуганный. Добавляем к основному промту an extremely horrified facehttps://cdn.discordapp.com/.../*.png https://cdn.discordapp.com/.../*.png photo of an extremely horrified 28 year old guy with short haircut, red hair colour, curly hair, blue eyes, dressed in a gray t-shirt, ultra realistic, face detailed Финальный результат поближе можно посмотреть на самом первом изображении статьи. Прорисовка контуров лица и волос получилась достаточно стабильна. Соглашусь, если скажете что, результат получился не идеальный, но для целей проекта он более чем достаточный.  Если бы мне требовалось улучшить результат с такими же вводными, я бы прописал в явном виде освещение и фон, возможно из-за них скачет выбор оттенка волос и кожи персонажа.