Идея проекта
Цель проекта — обучить генеративную нейросеть Stable Diffusion для создания изображений в стиле фотографий деталей Индийских храмов. Они отличаются не только месторасположением (преимущественно в горах), но и красочностью, внутренней отделкой, а также строением крыш. Главной задачей было обучить нейросеть воспроизводить отличительные черты храмов.
Исходная база данных*
*Фотографии из личного архива
В качестве исходной базы данных использовались фотографии из личного архива с поездки по Индии, на которых часто запечатлены особенности индийских храмов и их детали. Фотографии были приведены к необходимому размеру 1:1 в самом коде.
Примеры исходных изображений
Примеры исходных изображений
Процесс обучения
Без ошибок в коде не обошлось. На самом ответственном моменте, когда необходимо проверить, сохранились ли фотографии в нужную папку, возникла проблема — вывод показал, что их нет. Но при проверке на содержимое, все файлы оказались сохранены в нужную папку intem.
Ошибка подкралась, откуда не ждали — в коде был указан неверный формат файлов. Нужно было заменить jpg на JPG, так как исходные фотографии имели именно такой формат. После этого код заработал исправно и больше ошибок не было.
Итоговые изображения
Промпт 1 «photo in INDTEMPL style, mountains of India» Промпт 2"photo in INDTEMPL style, multiple Indian temples in the mountains»
Одним из частых запросов к нейросети был «photo in INDTEMPL style, a temple in the mountains», так как большинство фотографий самых разных храмов были сделаны в горах. Появился интерес, насколько точно и разнообразно нейросеть сможет передать один и тот же промпт используя всю базу данных.
Промпт «photo in INDTEMPL style, a temple in the mountains»
Промпт «photo in INDTEMPL style, a temple in the mountains»
Промпт «photo in INDTEMPL style, a temple in the mountains»
В исходной базе данных есть несколько изображений храмов, рядом с которыми появляется радуга. Было интересно, как нейросеть создаст подобные изображения.
Для этого использовался промпт «photo in INDTEMPL style, a temple in the mountains behind rainbow».
Слева — изображение из личного архива.
Промпт «photo in INDTEMPL style, a temple in the mountains behind rainbow»
Кроме гор, на исходных фотографиях есть множество деталей и отличительных черт самих храмов, поэтому был использован промпт «photo in INDTEMPL style, a temple» для того, чтобы понять, как нейросеть видит храмы в целом.
Промпт «photo in INDTEMPL style, a temple»
Промпт «photo in INDTEMPL style, a colorful temple»
Промпт «photo in INDTEMPL style, multiple temples»
Было замечено, что нейросеть зачастую показывает не сам предмет, заданный в промпте, а его часть/деталь, отличительную особенность.
Так как это было основной целью обучения, можно считать ее выполненной.
Слева к изображению был задан промпт «photo in INDTEMPL style, a temple», но вывод (получившееся изображение) показывает только крышу здания. Таким типом крыш обладают многие индийские храмовые постройки, что является их чертой.
Также было замечено, что если по какому-либо запросу в исходной базе мало изображений, то нейросеть практически повторяет исходный снимок по композиции, но изменяет окружающую среду, используя изученный стиль.
Слева — одно из исходных изображений. Справа — промпт «photo in INDTEMPL style, inside the temple»
Промпт «photo in INDTEMPL style, inside the temple»
Дальше было интересно посмотреть, как нейросеть справится с запросами, которые отходят от предоставленной базы данных. Сначала был добавлен один дополнительный элемент в виде собачки, а дальше запрос уже не был никак связан с исходной базой данных.
Промпт «photo in INDTEMPL style, a temple with a dog on the stairs»
Промпт «photo in INDTEMPL style, a red building»
Описание применения генеративных моделей
Проект был создан с помощью исходного кода, предоставленного в курсе, используя генеративную модель Stable Diffusion XL (https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0) с DreamBooth и LoRA.
Для того чтобы создать уникальную нейросетевую модель, генерирующую стиль фотографий деталей индийских храмов, нейросеть была обучена на личном архиве фотографий.
В заключение, можно сказать, что нейросеть научилась воспроизводить отличительные детали индийских храмов, даже на запросах, не связанных с ними, поэтому цель проекта следует считать достигнутой.
Недостатками нейросети можно назвать излишнюю детализацию в промптах, запрашивающих объект целиком, а также повтор композиции из исходной быза данных из-за отсутствия достаточного количества исходных изображений, связанных с заданным промптом.




