Немного о происхождении фотографий. Напомню, что 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)
xhd
09.11.2022 17:15+4Интересный опыт. Но я бы оставил фото, как есть. Это же не чертежи устройств древней ушедшей цивилизации, точность не обязательна. А в царапинах и дефектах есть своя атмосфера.
PereslavlFoto
09.11.2022 20:21Никогда не видел людей, которые наносят царапины на очки, чтобы создавать атмосферу. И людей, которые портят покрытие своих автомобилей ради архаичной прелести, тоже не видел. Даже люди, которые делают себе шрамы на лице для того, чтобы имитировать дефекты на старых фотографиях, не могу назвать ни одного.
Потому что в царапинах и дефектах есть только вред, порча и деградация.
Moskus
10.11.2022 04:19+1Очередная ложная аналогия.
Стилизация "под старину" - целое направление в обработке изображений, декоративно-прикладном искусстве, различных ремеслах. И это делается, в том числе, с эстетическими целями. Но совершенно непонятно, зачем вы упомянули имитацию (внесение) повреждений, когда речь о сохранении естественных дефектов, как альтернативе разрушающей реставрации.
Конечно, бытовая реставрация - не то же, что музейная, но вот ознакомьтесь, можно сразу к пункту 23 перейти: https://www.culturalheritage.org/about-conservation/code-of-ethics
Вы вот часто пишете о сохранении визуального наследия, но почему-то по поводу разрушающей и неразрушающей реставрации говорите что-то странное.
PereslavlFoto
10.11.2022 16:04Перед нами PDF-файл газетной полосы. У этого цифрового памятника культуры есть естественный дефект: lost cluster, потому что памятник культуры хранился на флешке с FAT32. Поэтому открыть эту полосу в графической программе невозможно.
Следует ли сохранять этот естественный дефект этого культурного наследия? Или имеет смысл подвергнуть его разрушающей реставрации?
Moskus
10.11.2022 18:57Опять ложная аналогия.
Восстановление возможности прочесть файл - не то же самое, что дорисовывание выдуманного содержания того фрагмента, который поврежден.
То, что делает AI при "восстановлении" - это как если бы на изображении газетной полосы был дефект, закрывающий имя человека, о котором идёт речь, а AI вписал бы на место дефекта имя "Вася".
PereslavlFoto
10.11.2022 21:34Восстановление возможности прочесть файл — не то же самое, что дорисовывание выдуманного содержания того фрагмента, который поврежден.
А как ещё можно восстановить возможность прочесть двоичный файл (JPEG, TIFF или PDF), кроме дорисовывания выдуманного содержания на повреждённом месте? Даже если скопировать фрагмент из другого места (как это заведено у реставраторов-каменщиков), получается выдумка.
Moskus
10.11.2022 21:40А как ещё можно восстановить возможность прочесть двоичный файл
Путем заполнения однотонным цветом, например.
PereslavlFoto
10.11.2022 21:44-1Это не восстановит возможность прочесть те байты, которые были в файле, а заменит их на другие, выдуманные байты.
Я ведь спрашиваю про возможность прочесть файл, а не про возможность заменить его другим файлом. Прочитывая файл, нужно получить именно этот самый файл, а не другой файл. Например, в файле было записано: 1111 0111. Вы предлагаете заполнить это место так: 1000 0000. Ваше предложение не позволяет прочесть файл, а заменяет его другим файлом.
Или вот другой пример, более показательный. Возник дефект, закрывающий имя человека. Вы предлагаете на месте дефекта заполнить однотонным цветом, а надо на месте дефекта написать имя человека, которое было там написано. Причём написать так, как оно было там написано.
unC0Rr
10.11.2022 21:59+2И что же это за чудесный инструмент, позволяющий восстановить правильные, но заранее неизвестные, байты в файле или имя человека?
PereslavlFoto
10.11.2022 22:09-1Поддерживаю ваш вопрос. Уточню, однако, что все байты заранее известны, существует всего лишь 256 разных байтов.
folal
10.11.2022 11:00+1Вы просто не обращали внимания на школоту, которая носит джинсы.
PereslavlFoto
10.11.2022 16:02Они заржавливают пороги своих автомобилей, смешивают разные сорта бензина, бьют друг друга по лицу ради травматических шрамов?
Moskus
10.11.2022 18:58Повторение той же ложной аналогии со случаями, где это не происходит, не делает те случаи, где это происходит, несуществующими. Успокойтесь уже, вы позоритесь, кому угодно понятно, что вы пишете ерунду.
PereslavlFoto
10.11.2022 21:36То есть никто не портит предметы? И даже вы, даже вы сами не берёте шило и не портите свою мебель царапинами, чтобы улучшить её?
Moskus
10.11.2022 21:38Стилизация "под старину" - целое направление в обработке изображений, декоративно-прикладном искусстве, различных ремеслах. И это делается, в том числе, с эстетическими целями.
Вы читать умеете?
PereslavlFoto
10.11.2022 21:40Поэтому вы расцарапали себе очки, что ли? И не можете пройти мимо людей, у которых очки не царапаны?
kalapanga
09.11.2022 17:49+7По-моему, лучше никак, чем так. Стало во всех отношениях хуже. Не вижу никакого восстановления абсолютно. А раскраску ч/б изображений я вообще не перевариваю.
victor_1212
09.11.2022 20:09+3согласен, для сравнения после 2х простых операций в jasc, по крайней мере детали в тенях остались
dyadyaSerezha
09.11.2022 18:38+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
obbana
09.11.2022 18:48+2Лучше отдать мастерам на восстановление, если хотите действительно красивые фотографии получить, а то что тут получилось - может и интересно, но практического толку 0)
PereslavlFoto
09.11.2022 20:21-1В том-то и горе, что восстановить такую фотографию у мастера займёт от пяти до десяти дней, а это и долго, и дорого.
sergio_nsk
10.11.2022 03:29+1мой двоюродный брат бабушки
Наверно здесь имелось в виду двоюродный брат бабушки или двоюродный брат моей бабушки.
REPISOT
Нейросеть убрала с первого фото подпорку крышки (или что это?), и оставила только тень. Со вторым фото то же самое. Куда делась пряжка ремня? И форма в синих пятнах — это такое… Фтопку такое «восстановление».
Исходные фото четче и содержат больше деталей. Достаточно отрегулировать яркость и цветность.