Как писать промпты к нейросетям, генерирующим изображения

Промпт – это запрос к нейросети, т.е. одно или несколько предложений, поясняющих, что должна сделать нейросеть. Рассмотрим две сети, генерирующие изображения: условно бесплатную нейросеть – Leonardo от австралийской компании и бесплатную нейросеть от Сбера – Кандинский. Будем создавать в этих нейросетях изображение и посмотрим насколько хорошо они справляются с поставленной задачей.
Для первого запроса возьмем отрывок из стихотворения А.Н. Некрасова.
“Однажды, в студеную зимнюю пору
Я из лесу вышел; был сильный мороз.
Гляжу, поднимается медленно в гору
Лошадка, везущая хворосту воз.
И шествуя важно, в спокойствии чинном,
Лошадку ведет под уздцы мужичок
В больших сапогах, в полушубке овчинном,
В больших рукавицах… а сам с ноготок!”
Загрузим этот отрывок в качестве запроса в сети Leonardo и Кандинский. Следует отметить, что Leonardo не понимает запросы на русском языке, поэтому текст запроса для этой сети надо сначала перевести на английский. Яндекс переводчик дает следующий перевод:
One day, in the cold winter season
I came out of the forest; it was very cold.
I look, it’s climbing slowly uphill
A horse carrying a load of brushwood.
And marching importantly, in calm decorum,
The little man leads the horse by the bridle
In big boots, in a sheepskin coat,
In big mittens… and he’s the size of a fingernail!
Картинки, которые сгенерировали нейросети, показаны на рис. 1 и рис. 2.

Рис. 1 Leonardo
Рис. 2. Кандинский

Как видим, обе сети не справились с заданием. Сеть Leonardo вообще не нарисовала сани с хворостом, и вместо мужичка с ноготок нарисовала здорового мужика разбойного вида. Сеть Кандинский нарисовала сани, но нагрузила хворостом не только сани, но и лошадь. И вместо мальчика нарисовала мужика в шляпе, хотя ей было сказано, что “был сильный мороз”. С ногами у обеих лошадей также не все в порядке. Таким образом, этот запрос для нейросетей оказался слишком абстрактным и некорректным, а нейросети мыслят очень конкретно и не обладают абстрактным мышлением.
Давайте конкретизируем запрос и сформулируем его в виде:
“По дороге в зимнем лесу лошадь везет сани. В санях лежит хворост. Рядом с лошадью идет мальчик. Мальчик одет в полушубок и большие валенки. Мальчик держит лошадь за узду.”
Английский перевод:
On the road in the winter forest, a horse carries a sleigh. There is firewood in the sleigh. There is a boy walking next to the horse. The boy is dressed in a sheepskin coat and large felt boots. The boy holds the horse by the bridle.
Картинки, которые сгенерировали нейросети, показаны на рис. 3 и рис. 4.

Рис. 3. Leonardo
Рис. 4. Кандинский

Сеть Leonardo вместо саней нарисовала телегу на колесах и мальчик почему-то сидит в телеге, а не идет рядом с лошадью. Возможно, это является следствием некачественного перевода на английский от Яндекс-переводчика. Картинка от нейросети Кандинский имеет более реалистичный вид. Этой сети более понятны русские термины “сани”, “хворост”, “зимний лес”. На картинке присутствуют и лошадь, и сани с хворостом, и мальчик, но все-равно картинка далека от совершенства, мальчик и лошадь совершенно непропорциональны. Таким образом, обе нейросети плохо справляются с заданием, когда требуется нарисовать картинку со сложным динамическим сюжетом и отсутствием подробного разъяснения деталей будущей картинки.
Давайте зададим для нейросетей более конкретный запрос с простым статическим сюжетом. Для этого используем отрывок из стихотворения А.С. Пушкина:
“Под голубыми небесами
Великолепными коврами,
Блестя на солнце, снег лежит;
Прозрачный лес один чернеет,
И ель сквозь иней зеленеет,
И речка подо льдом блестит.”
Английский перевод:
“Under the blue skies
Magnificent carpets,
Glistening in the sun, the snow lies;
The transparent forest is turning black alone,
And the spruce is turning green through the frost,
And the river glitters under the ice.”
Сгенерированные изображения показаны на рис. 5 и рис. 6.

Рис. 5. Leonardo
Рис. 6. Кандинский

Картинки выглядят вполне реалистично и, по-моему, картинка от сети Кандинский является более привлекательной, на ней речка действительно блестит под лучами зимнего солнца.
Напоследок, давайте зададим совсем простой статический запрос, в котором распишем будущее изображение в деталях:
“Нарисуй молодую девушку, блондинку на фоне цветущего вишневого сада, у девушки длинные волнистые волосы, она в легком платье, над девушкой синее небо и легкие белые облачка”.
Английский перевод:
“Draw a young blonde girl against the background of a blooming cherry orchard, the girl has long wavy hair, she is in a light dress, the blue sky and light white clouds above the girl”.
Сгенерированные изображения показаны на рис. 7 и рис. 8.

Рис. 7. Leonardo
Рис. 8. Кандинский

По-моему, получили отличный результат, обе нейросети справились с заданием, и изображение сети Leonardo мне кажется даже более реалистичным. Изображение сети Кандинский выглядит более похожим на открытку.
Вывод. Обе сети неплохо справляются с созданием статических картинок с несложным сюжетом и небольшим количеством объектов на картинке. И главное, в запросе необходимо подробно расписывать все детали будущего изображения. Следует также избегать слов, допускающих двойное толкование, например, при запросе “нарисуй мне танк с гусеницами” нейросеть может вместо гусениц танка нарисовать обычных гусениц-червячков.