Генерация реалистичного портрета по одному описанию — задача, с которой современные модели справляются хорошо. Сложнее управлять десятками параметров одновременно: возраст, пол, причёска, форма лица и другие признаки. Чем больше атрибутов, тем чаще они конфликтуют, а результат становится менее предсказуемым. Именно такую задачу решала команда Singularis для заказчика, которому требовалось генерировать набор фотореалистичных изображений людей для биометрического приложения. Предыдущие эксперименты давали изображения, которые выглядели явными рисунками, поэтому нужно было подобрать другой вариант генерации и управления атрибутами.
На первом этапе специалисты сравнили DALL-E, Midjourney и разные варианты Stable Diffusion. По итогам исследования заказчик выбрал локальное решение на базе Stable Diffusion. Локальный пайплайн позволил контролировать процесс генерации и избежать зависимости от внешних сервисов. Для разных этапов генерации использовались несколько подходов: text-to-image для создания базового изображения по подробному описанию, image-to-image для добавления или изменения признаков на уже полученном изображении, а также ControlNet и IP Adapter для дополнительного управления через референс. Для работы с длинными промптами и регулирования влияния отдельных ключевых слов применялся Compel.
Одним из ключевых факторов оказалось качество промпта: формулировки и вес отдельных признаков заметно влияли на результат. Однако попытка задать все характеристики сразу работала хуже. Поэтому сложные сочетания разделяли на несколько этапов: сначала создавали базовый портрет, затем добавляли отдельные признаки через img2img или ControlNet. Такой подход особенно помогал в случаях, когда изменение одного параметра затрагивало остальные. Например, при добавлении очков или смене пола могли заметно измениться основные черты лица, а персонаж переставал быть похож на исходный.
Для каждого атрибута команда подготовила рекомендации по ключевым словам, чтобы сделать результат более предсказуемым. Также была составлена матрица совместимости атрибутов: она помогала заранее разделять признаки, которые можно задавать вместе, и те, которые лучше добавлять на разных этапах генерации. В итоге пайплайн позволял создавать базовое изображение, а затем последовательно добавлять более сложные атрибуты через img2img и ControlNet. Главный вывод: при большом количестве характеристик недостаточно просто перечислить их в одном промпте. Более устойчивый результат даёт разделение совместимых и конфликтующих признаков и их добавление на разных этапах генерации.
Хотя проект делали до нынешнего поколения генеративных сервисов, сама задача — локально и управляемо поэтапно генерировать изображения по заданным параметрам — актуальна и сейчас. Подход Singularis может быть полезен для создания синтетических датасетов в биометрии, компьютерном зрении и других областях, где требуется контролируемая генерация изображений.

