Original size 1240x1750

Обучение генеративной нейросети под стиль художника Боба Росса

PROTECT STATUS: not protected
3

Боб Росс (Роберт Норман Росс) — американский художник, преподаватель рисования и телеведущий, наиболее известный как ведущий популярной телевизионной программы «Радость живописи» (The Joy of Painting), которая выходила в эфир с 1983 по 1994 год.

В своих видеоуроках Боб Росс обучал живописи тех, кто не имел художественного опыта, и популяризировал технику «мокрый на мокром», которая предполагает наложение нового слоя краски на еще не высохший предыдущий. Такая техника позволяет быстро создавать законченные картины. Художник был известен своими пейзажами, часто изображал деревья, облака и горы.

big
Original size 3307x913

ideogram.ai prompt: Landscape in a style of Bob Ross

Вот так с генерацией изображений в стиле картин художника справляется нейросеть Ideogram. По композиции получается похоже, однако совсем не видно текстуры красок и характерной спокойной цветовой гаммы художника, из-за чего стиль Боба Росса не считывается.

Цель проекта

Обучить генеративную нейросеть Stable Diffusion для создания изображений в стиле картин Боба Росса. Итоговые изображения должны не только включать в себя характерные элементы его пейзажей, но и передавать текстуру его картин.

Ход работы

Для обучения модели был собран датасет в объеме 10 квадратных изображений — картин художника Боба Росса.

big
Original size 3307x1301

Исходные изображения. Боб Росс

Шаг 1: импорт необходимых библиотек и модулей, которые будут использоваться для создания и обучения модели генерации изображений.

Основное: 1. библиотека PyTorch 2. from google.colab import files — для загрузки изображений, которые будут использоваться для обучения модели 3. класс StableDiffusionXLPipeline из библиотеки diffusers

Original size 1813x209

Шаг 2: Загрузка файлов в Collab

В этой части кода обрабатываются загруженные файлы, сохраняются в текущей директории и создается список, содержащий пути к изображениям. Этот список будет использоваться для создания датасета, который затем будет использоваться для обучения модели.

Original size 1811x637

Шаг 3: Преобразование изображений

transforms.Resize ((256, 256)) изменяет размер входного изображения, что поможет ускорить обучение модели.

Шаг 4: Настройка загрузчика данных для их подачи в модель

Создан датасет BobRossDataset и загрузчик данных (DataLoader) для датасета.

Original size 1796x302

Шаг 5: загрузка модели Stable Diffusion XL Stable Diffusion XL из репозитория Hugging Face

Original size 1781x120

Шаг 6: Проверка доступности GPU и перенос модели на него

Шаг 7: настройка метода LoRA для обучения под новую задачу

Original size 1762x337

Шаг 8: Использование оптимизатора для обновления весов модели во время обучения, чтобы минимизировать функцию потерь

Шаг 9: Установка количества эпох обучения (проходов по датасету), значение — 2.

Шаг 10: Создание директории для организации и хранения сгенерированных изображений.

Шаг 11: Написание промпта и его повторение столько раз, сколько изображений в батче (len (images)). prompt = [«A serene landscape with in the style of Bob Ross».

Шаг 12: Генерация изображения с использованием модели Stable Diffusion XL, передача входных изображений модели, настройка силы влияния текстового описания на генерируемое изображение (guidance_scale=5.0).

Original size 1782x376
Original size 1920x302

Шаг 12: Сохранение сгенерированного изображения в файл.

Шаг 13: Удаление переменных, которые больше не нужны, чтобы предотвратить ошибку нехватки памяти

Original size 1722x295

Результат

Результатом моей работы стала серия из 20 готовых изображений в стиле картин Боба Росса — наиболее удачные из них представлены ниже.

Удалось передать сюжеты и стилистические особенности художника: цветовую гамму его картин и текстуру «мокрой краски», которую можно заметить при ближайшем рассмотрении. Результат меня устроил, поэтому изображения дополнительно не обрабатывались.

Original size 3307x2333
Original size 3307x1637
Original size 3307x2333
Original size 3307x2333
Original size 3307x1634
0

Почти у всех изображений следующий сюжет: мягкие облака, деревья и горы. На некоторых сгенерированных изображениях также можно заметить хижины, они же присутствовали на оригинальных картинах художника, взятых для обучения. Таким образом, можно отметить способность модели генерировать уникальные работы в рамках заданного стиля.

Original size 3307x2333

Полная серия изображений доступна для просмотра по ссылке.

Описание применения генеративной модели

В работе также была использована нейросеть Merlin AI для следующих задач:

Original size 1813x209

Импорт модуля gc для освобождения памяти, которая может быть занята неиспользуемыми объектами. Это помогло избежать ошибок нехватки памяти (OutOfMemoryError).

Original size 1796x302

Уменьшение размера входных изображений и размер батча, чтобы снизить потребление памяти, так как ресурсы GPU были ограничены.

Original size 1762x337

Перемещение модели и всех ее тензоров на GPU. Настройка параметров LoRA.

Original size 1920x302

Использование autocast для смешанной точности torch.cuda.amp.autocast (): для автоматического приведения типов данных к float16, где это возможно, чтобы ускорить вычисления.

Original size 1722x295

Запуск сборщика мусора, который освобождает память, занятую неиспользуемыми объектами (gc.collect ()).

Обучение генеративной нейросети под стиль художника Боба Росса
3
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more