Немного о происхождении фотографий. Напомню, что 26 Апреля 1986 года произошла катастрофа на Чернобыльской АЭС.


Но мало кто знает, что радиоактивное облако распространилось на тысячи километров. К сожалению, это затронуло и деревню моей бабушки недалеко от Гомеля. Жителей эвакуировали далеко не сразу, но когда пришло время уезжать, то фотографии, которые были приклеены на стене пришлось отклеивать варварским способом. Время потрепало эти фотографии, но попробуем восcтановить.

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

Как можно дать вторую жизнь этим фотографиям?

Осторожно, большие фотографии!

Есть множество способов восстановить потрёпанные фотографии.

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

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

Сразу условимся, что статья носит чисто ознакомительный характер.

Я лично тестировал на своем ноутбуке 7 летней давности:

i7-5700HQ

16 ГБ оперативной памяти

SSD диск

Опционально можно использовать видео карту NVIDIA, но моя GTX960M устарела, и я её не использовал. Для запуска с видеокартой в каждом скрипте есть опция GPU.

Windows 10/11

На мой взгляд проще всего это сделать с помощью подсистемы Linux в Windows 10 или 11.

1. Установка

Для упрощения записал видео инструкцию.

Специально для тестов я написал небольшой скрипт

Открываем терминал в Ubuntu и вводим

git clone https://github.com/SergeiSOficial/AiPhoto.git
cd AiPhoto
sudo chmod +x *.sh

Далее запускаем установку

./setup.sh

Во время установки откроется папка с проектом. Начальные фотографии складываем в input, в папке output будем искать результаты. Важно, что файлы должны быть не слишком большими или иметь достаточный объем оперативной памяти.

На моем ноутбуке с интернетом 30 Мбит/с вся установка заняла примерно 30 минут.

2.Запуск

Почему алгоритма три?

Bringing Old Photo Back to Life неплохо убирает трещины, но недостаточно хорошо восстанавливает лица. GFPGAN хорошо справляется с людьми, но требует чистую фотографию. DeOldify хорошо разукрашивает.

Запускаем алгоритм от компании Майкрософт

cd AutoDeOldifyLocal/DeOldify/
conda activate deoldify 
cd ../../Bringing-Old-Photos-Back-to-Life 
python run.py --input_folder ../input --output_folder ../output/BOPBTL/ --GPU -1 --with_scratch --HR 

После этого запускаем алгоритм от китайской компании GFPGAN 

cd ../GFPGAN
python inference_gfpgan.py -i ../output/BOPBTL/stage_1_restore_output/restored_image -o ../output/GFPGAN/ -v 1.3 -s 2

И в конце запускаем разукрашивание

cd ../AutoDeOldifyLocal/DeOldify/
python RunColorizer.py --input_folder ../../output/GFPGAN/restored_imgs --GPU -1 --output_folder ../../output/DeOldify/ --artistic True
cd ../../

Все три алгоритма выполнялись примерно 10 минут.

Конечно, алгоритмы работают неидеально, но результаты, лично для меня, любопытные.

Ссылка на репозиторий со скриптами для установки и запуска.

Еще раз ссылка для скачивания видео.

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

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


  1. REPISOT
    09.11.2022 15:12
    +16

    Нейросеть убрала с первого фото подпорку крышки (или что это?), и оставила только тень. Со вторым фото то же самое. Куда делась пряжка ремня? И форма в синих пятнах — это такое… Фтопку такое «восстановление».
    Исходные фото четче и содержат больше деталей. Достаточно отрегулировать яркость и цветность.


  1. javax
    09.11.2022 15:19

    Расцвечивания выглядит лишним
    А вообще - спасибо!



  1. JohnSelfiedarum
    09.11.2022 15:55
    +5

    Форма - зелёная, лычки - красные.


  1. xhd
    09.11.2022 17:15
    +4

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


    1. PereslavlFoto
      09.11.2022 20:21

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


      Потому что в царапинах и дефектах есть только вред, порча и деградация.


      1. Moskus
        10.11.2022 04:19
        +1

        Очередная ложная аналогия.

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

        Конечно, бытовая реставрация - не то же, что музейная, но вот ознакомьтесь, можно сразу к пункту 23 перейти: https://www.culturalheritage.org/about-conservation/code-of-ethics

        Вы вот часто пишете о сохранении визуального наследия, но почему-то по поводу разрушающей и неразрушающей реставрации говорите что-то странное.


        1. PereslavlFoto
          10.11.2022 16:04

          Перед нами PDF-файл газетной полосы. У этого цифрового памятника культуры есть естественный дефект: lost cluster, потому что памятник культуры хранился на флешке с FAT32. Поэтому открыть эту полосу в графической программе невозможно.


          Следует ли сохранять этот естественный дефект этого культурного наследия? Или имеет смысл подвергнуть его разрушающей реставрации?


          1. Moskus
            10.11.2022 18:57

            Опять ложная аналогия.

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

            То, что делает AI при "восстановлении" - это как если бы на изображении газетной полосы был дефект, закрывающий имя человека, о котором идёт речь, а AI вписал бы на место дефекта имя "Вася".


            1. PereslavlFoto
              10.11.2022 21:34

              Восстановление возможности прочесть файл — не то же самое, что дорисовывание выдуманного содержания того фрагмента, который поврежден.

              А как ещё можно восстановить возможность прочесть двоичный файл (JPEG, TIFF или PDF), кроме дорисовывания выдуманного содержания на повреждённом месте? Даже если скопировать фрагмент из другого места (как это заведено у реставраторов-каменщиков), получается выдумка.


              1. Moskus
                10.11.2022 21:40

                А как ещё можно восстановить возможность прочесть двоичный файл

                Путем заполнения однотонным цветом, например.


                1. PereslavlFoto
                  10.11.2022 21:44
                  -1

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


                  Я ведь спрашиваю про возможность прочесть файл, а не про возможность заменить его другим файлом. Прочитывая файл, нужно получить именно этот самый файл, а не другой файл. Например, в файле было записано: 1111 0111. Вы предлагаете заполнить это место так: 1000 0000. Ваше предложение не позволяет прочесть файл, а заменяет его другим файлом.


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


                  1. unC0Rr
                    10.11.2022 21:59
                    +2

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


                    1. PereslavlFoto
                      10.11.2022 22:09
                      -1

                      Поддерживаю ваш вопрос. Уточню, однако, что все байты заранее известны, существует всего лишь 256 разных байтов.


      1. folal
        10.11.2022 11:00
        +1

        Вы просто не обращали внимания на школоту, которая носит джинсы.


        1. PereslavlFoto
          10.11.2022 16:02

          Они заржавливают пороги своих автомобилей, смешивают разные сорта бензина, бьют друг друга по лицу ради травматических шрамов?


          1. Moskus
            10.11.2022 18:58

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


            1. PereslavlFoto
              10.11.2022 21:36

              То есть никто не портит предметы? И даже вы, даже вы сами не берёте шило и не портите свою мебель царапинами, чтобы улучшить её?


              1. Moskus
                10.11.2022 21:38

                Стилизация "под старину" - целое направление в обработке изображений, декоративно-прикладном искусстве, различных ремеслах. И это делается, в том числе, с эстетическими целями.

                Вы читать умеете?


                1. PereslavlFoto
                  10.11.2022 21:40

                  Поэтому вы расцарапали себе очки, что ли? И не можете пройти мимо людей, у которых очки не царапаны?


  1. kalapanga
    09.11.2022 17:49
    +7

    По-моему, лучше никак, чем так. Стало во всех отношениях хуже. Не вижу никакого восстановления абсолютно. А раскраску ч/б изображений я вообще не перевариваю.


    1. victor_1212
      09.11.2022 20:09
      +3

      согласен, для сравнения после 2х простых операций в jasc, по крайней мере детали в тенях остались


  1. dyadyaSerezha
    09.11.2022 18:38
    +1

    Интересно было сравнить с результатами вот этой сети:

    https://app.baseten.co/apps/QPp4nPE/operator_views/RqgOnqV


    1. SergeySavkin Автор
      10.11.2022 16:44

      На втором этапе как раз использую этот алгоритм.


    1. SergeySavkin Автор
      10.11.2022 16:45

      Можете запустить его командой

      cd GFPGAN
      python inference_gfpgan.py -i ../output/BOPBTL/stage_1_restore_output/restored_image -o ../output/GFPGAN/ -v 1.3 -s 2


  1. obbana
    09.11.2022 18:48
    +2

    Лучше отдать мастерам на восстановление, если хотите действительно красивые фотографии получить, а то что тут получилось - может и интересно, но практического толку 0)


    1. PereslavlFoto
      09.11.2022 20:21
      -1

      В том-то и горе, что восстановить такую фотографию у мастера займёт от пяти до десяти дней, а это и долго, и дорого.


  1. sergio_nsk
    10.11.2022 03:29
    +1

    мой двоюродный брат бабушки

    Наверно здесь имелось в виду двоюродный брат бабушки или двоюродный брат моей бабушки.


  1. kilobait3
    10.11.2022 06:34
    +3

    Жесть. Даже мои крабовые ручонки сделают куда лучше фото и точнее цвет.