[recovery mode] Раскрашивание изображений с использованием нейронных сетей

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

Мы будем использовать эту модель, чтобы преобразовать некоторые старые черно-белые фотографии, добавив к ним цвет.

Модель Deoldify

Deoldify использует генеративно-состязательную нейронную сеть (GAN).

Помимо использования GAN в этой модели также используется метод, известный как No-GAN.

Большинство GAN состоят из двух частей — Генератор и Дискриминатор.

Генератор — это часть, которая создает изображение. Дискриминатор пытается выделить настоящие цветные изображения из фейковых перекрашенных изображений. Техника No-GAN работает путем обучения моделей генератора и дискриминатора, присутствующих в GAN, изолированно.

Это похоже на то, как вы обучаете обычную нейронную сеть, но отличается от GAN, поскольку они обычно обучаются параллельно. Затем они настраиваются вместе, как правило, так, как вы тренируете GAN.

Модель работает, беря черно-белое изображение и передавая его модели Deoldify. Затем модель выводит цветное изображение.

Клонирование репозитория GitHub

Мы собираемся использовать репозиторий GitHub, содержащий реальную модель.

 git clone https://github.com/jantic/DeOldify.git DeOldify 

Приведенный выше код клонирует репозиторий DeOldify в папку.

Установка необходимых зависимостей

Чтобы использовать модель, нам нужно установить «пару» зависимостей.

 pip install -r colab_requirements.txt 

Эти зависимости включают в себя:

  • fastai==1.0.51

  • wandb

  • tensorboardX==1.6

  • ffmpeg-python

  • youtube-dl>=2019.4.17

  • jupyterlab

  • pillow>=8.0.0

Загрузка модели

Далее нам нужно загрузить предварительно обученную модель.

 mkdir 'models' 
 wget https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth -O ./models/ColorizeArtistic_gen.pth 

Мы создали новую папку с именем models внутри основной папки. С использованием wget мы загружаем предварительно обученную модель в эту только что созданную папку.

Примеры входных изображений

Возьмем черно-белые изображения и добавим к ним немного цвета. Изображения, которые мы будем использовать:

168eeb0ddc9cab0b3aaf4372b986ef06.jpg7092f92da57265990c37e77ab4866a2e.jpg2ed45568e1db929a16a16cd8ccddeeb4.jpg9b134b4054c2e3d8b23be269a6ebb0c0.jpg64e20e4c429dba7b67806b5b564a9fa1.jpg6f8f079b38a387ada5ea8616423a43f4.jpg9bf5bf93e995de3560dc6f53abbb89e7.jpg

Работа с моделью

Буду пользоваться языком программирования python 3.10, среда разработки — jupyter notebook.

Проведем импорт необходимых библиотек.

from PIL import Image

from deoldify import device
from deoldify.device_id import DeviceId
#choices:  CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)

import torch

if not torch.cuda.is_available():
    print('GPU not available.')
    
import fastai
from deoldify.visualize import *

torch.backends.cudnn.benchmark = True 

# если версия python >= 3.10 необходимо отдельно переназначить модуль Sized 
import collections
collections.Sized = collections.abc.Sized
# работаю в соседней папке, импортирую папку DeOldify
import sys
sys.path.append('./DeOldify')

Укажем путь к входному файлу

 image_path = '6.jpg' 

Далее создадим переменную colorizer для хранения нашей модели

 colorizer = get_image_colorizer(artistic=True) 

С использованием plot_transformed_imageметод, передадим входное изображения, на выходе колоризованная картинка.

colorizer.plot_transformed_image(image_path, render_factor=35, display_render_factor=True, figsize=(8,8))

Значение по умолчанию 35 для render_factorхорошо работает в большинстве случаев. render_factorопределяет разрешение, при котором отображается цветная часть изображения. Нижний render_factorидеально подходит для изображений с более низким разрешением, в то время как более высокий render_factorдля изображений с высоким разрешением.

Примеры выходных цветных изображений

cd9b42866154587ebc42e2af92813717.jpg8f6531a1d75e825d8054763692a176d6.jpg5df88bf198b84432888e1162d2b63013.jpgbe54dc5c587433ec0646d10453d95650.jpgbf2f1e0b5fd4228470e667ac55d260ff.jpg769c54adabcade824e2dbbd2d657d104.jpga3b219c3c97e94a82e2e9b2761656e57.jpg

Мы видим, что модель Deoldify добавила цвета нашим изображениям. Мы достигли этих результатов, написав всего несколько строк кода.

Заключение

Модель Deoldify позволяет раскрашивать черно-белые изображения. Модель с открытым исходным кодом и доступна через GitHub. Вы можете легко поэкспериментировать со своими черно-белыми изображениями и добавить к ним цвет.

© Habrahabr.ru