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 мы загружаем предварительно обученную модель в эту только что созданную папку.

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

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

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

Буду пользоваться языком программирования 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для изображений с высоким разрешением.

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

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

Заключение

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

Комментарии (21)


  1. static_cast
    10.08.2022 22:04
    +16

    • У Чаплина были голубые глаза

    • Гимнастерки летчиков РККА времен ВОВ были зеленые. В серые цвета одевались их визави.

    • "Металлические" дубовые листья в петлицах у офицеров СС зеленью не отдавали, несмотря на календарную весну.

    и т.д., и т.п. ордена, звезда, цвет манжет, цветастая повязка и прочее.

    Понимание того, что нейронка не магический кристалл прошлого, а очень своеобразный фильтр-"черный ящик", не восстанавливающий, а трактующий входные данные, есть не у каждого. Мы живем в эпоху постправды, когда проверить всю поступающую информацию уже не представляется возможным, и очень интересно, куда мы все таки придем в восприятии себя и своего прошлого.


    1. 0mogol0
      10.08.2022 22:13

      а это должно быть темой следующей статьи, как доработать нейронку, чтобы она выдавала более корректные результаты...


    1. sunnybear
      11.08.2022 00:12

      И лицо Мюллера багрово-красное из-за повышенного давления ...


    1. Moskus
      11.08.2022 07:34
      +6

      Хуже всего - то, что:

      • множество людей реальное прошлое уже совершенно не интересует, а интересуют "фактоиды", то есть утверждения (включая изображения) которые просто выглядят правдоподобно, но не имеют никакой реальной фактической точности,

      • люди считают подобные фактоиды, содержащие выдуманные детали, лучше реальных фактов, содержащих меньше деталей (скажем, не содержащих информацию о цвете вообще),

      • как результат, реальные факты планомерно "вымываются" из обращения и их оказывается все сложнее найти, например - уже есть всякого рода псевдоисторические каналы в соцсетях, публикующие только визуальные фактоиды (потому что см. предыдущий пункт) без какого-либо упоминания о том, что это не исторически точные изображения.


      1. altyshevamaria
        11.08.2022 17:07

        1984 Оруэлла вспоминается :(...


      1. Alexufo
        12.08.2022 20:22

        Практическое применение deoldify на сколько я знаю только у myheritage, автор продал им более качественную модель. Интересный пиар проект.


    1. geekmeek
      11.08.2022 10:02

      Что ещё бросилось в глаза то, что растительность поля за дорогой в цветном варианте кажется разреженной, растущей на не плодородной песчаной земле. А в чёрно-белом варианте поле с густой растительностью, просто с разнофактурным отсвечиванием оттенков, которое ИИ вероятно воспринимает как участки открытой земли.

      Быть может наоборот мой И фильтрует с искажением от полей моего прошлого...


    1. holyx
      11.08.2022 11:32

      ""Металлические" дубовые листья в петлицах у офицеров СС зеленью не отдавали, несмотря на календарную весну."

      Да, смотрится так, как будто школьник в учебнике зелёным фломастером разукрасил. Сразу вспомнился отреставрированный фонтан "Каменный цветок" на ВДНХ, где новые пластиковые камни "намного лучше", чем старые натуральные.

      "куда мы все таки придем в восприятии себя и своего прошлого "

      Уже местами народ к чему-то виртуальному приходит. Например, пол по собственному ощущению, без привязки к физиологии.


  1. altyshevamaria
    10.08.2022 22:19

    По-моему, это потрясающе...


  1. xshd
    10.08.2022 23:11
    +1

    интересно было бы почитать на тему апскейла, скажем с 1000px до 2000px, и желательно не портреты - на примере отрендеренной картинки


  1. Alexufo
    10.08.2022 23:44
    +1

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


  1. Skigh
    11.08.2022 11:01
    +4

    Все фотографии, кроме третьей, «раскрашиванием» только испорчены.


    1. PereslavlFoto
      11.08.2022 13:55
      +1

      Третья не раскрашена, а тонирована. Там всё в одну краску сделано.


    1. MichaelBorisov
      12.08.2022 00:50

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

      А тут, на раскрашенной с помощью нейронки фотографии, внутренний «раскрашиватель» отключается, так как кажется, что его работа не нужна. Отсюда и худшее эмоциональное восприятие.

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


      1. Skigh
        12.08.2022 10:17
        +1

        Нет, это потому, что качество раскраски очень низкое, очевидно бракованные элементы бросаются в глаза. Хорошая нейросеть (например в голове толкового художника) вполне может раскрасить ч/б фото так, что оно будет восприниматься лучше.


  1. basnopisets
    11.08.2022 12:07
    +1

    Но зачем?


    1. Moskus
      11.08.2022 15:23
      -1

      Потому что "пипл хавает", то есть рядовому индивидууму это чаще нравится больше, чем оригинал.


      1. Moskus
        11.08.2022 20:26

        Для тех кто в танке - я это не оправдываю, а наоборот. Но многим людям действительно больше нравится это раскрашенный позор, чем оригиналы.


  1. piton_nsk
    11.08.2022 15:58
    +2

    Напомнило

    Слабонервным не смотреть


  1. VaalKIA
    11.08.2022 23:55
    -1

    Разные длины волн, преломляются по разному (фиолетовый и красный имеют разные фокусы у нас в глазу, поэтому это сочетание, буквально — вырвиглазное, то же и с оптикой), возможно, по ореолам можно с высокой долей вероятности судить и о спектре. Ничего не могу сказать о фотографии, но в видео, один раз вычислив на удачном кадре, далее можно будет использовать эту информацию и постепенно раскрасить все детали.


  1. vasilisc
    12.08.2022 12:46

    Игрался так же с этой нейронной сетью DeOldify. У неё официально на странице упоминается негативный эффект "зомби". Конечности людей часто окрашиваются в пепельный цвет. На странице проекта достаточно поискать слово zombie.

    https://github.com/jantic/DeOldify