В концепцию моего проекта вложена любовь к документированию моментов из жизни. Фотография для меня всегда про время и воспоминания, и в один момент ко мне в руки попала линза «рыбий глаз». Мне кажется, что через неё фотографии становятся более динамичными и интересными.
Я решила проверить, получится ли натренировать искусственный интеллект на генерацию изображений с применением линзы «рыбьего глаза». Все фотографии для тренировки модели будут взяты из личного архива.
Примеры изображений, загруженных для тренировки ИИ.
Принцип работы кода
Проверка GPU и установка внешних библиотек
Для дообучения и генерации изображений использована Stable Diffusion.
Для обучения нейросети я взяла 61 фотографию из личного архива, загрузила их в формате 1:1 как датасет, а также подключила его к блокноту.
Загрузка изображений-референсов в архив
Промпт «fisheye» сама базовая модель без дообучения знает, поэтому для чистоты эксперимента было выбрано название «rybaeye».
Превью изображений в архиве
Генерируем промпты к изображениям, создаем пару промпт=изображение и задаем свой префикс к промптам
Обучаем модель инструментами LoRa
Подгружаем модель на Hugging Face
Настраиваем Stable Diffusion
Генерируем изображения
Генерация 1
image = pipe (prompt="RYBAEYE style photo, fat ginger cat», num_inference_steps=50).images[0] image
Код к генерации 1.
Генерация 2
image = pipe (prompt="RYBAEYE style photo, anrgy lion in the savannah», num_inference_steps=25).images[0] image
Код к генерации 2.
Генерация 3
image = pipe (prompt="RYBAEYE style photo, praying mantis sitting on a leaf», num_inference_steps=40).images[0] image
Код к генерации 3.
Генерация 4
image = pipe (prompt="RYBAEYE style photo, seal on ice», num_inference_steps=25).images[0] image
Код к генерации 4.
Генерации 5-6
Генерации 7-8
Генерация 9
colors = [«red»,"orange»,"yellow»,"green»,"blue», 'purple'] for c in colors: image = pipe (prompt=f"RYBAEYE style photo, 1 girl with vibrant {c} hair looking at the camera», num_inference_steps=10).images[0] image.save (f’RYBAEYE style photo, 1 girl with vibrant {c} hair looking at the camera.jpg')
Код к генерациям 5-9.
Генерации 10-11
Генерация 12
locations = [«Moscow, Red Square»,"Venice»,"Mumbai, slums»,"Texas, USA»,"Japan», 'Surface of the moon'] for l in locations: image = pipe (prompt=f"RYBAEYE style photo, 1 man standing alone in {l}», num_inference_steps=15).images[0] image.save (f’RYBAEYE style photo, 1 man standing alone in {l}.jpg')
Код к генерациям 10-12.
По получившимся генерациям видно, что нейросеть хорошо считала пропорции объектов, искаженных через линзу. Передан объем и сама форма изображения с характерной черной каемкой по бокам.
Эксперимент можно считать успешным, хоть и на изображениях с людьми видны артефакты, требующие более глубокой проработки и дообучения. Основная цель, передать «рыбий глаз» в генерациях, выполнена.