Увлёкся изучением мира нейронных сетей (Neural Networks, NN). Пока лишь с точки зрения изучения их возможностей в плане обработки изображений и видео, хотя сфера применения их широка и не ограничивается одними лишь картинками. Как инженер-программист по образованию и системный администратор по специализации, для меня нет особых проблем "запустить в работу" любую нейронную сеть, которую создали профессионалы в данной области. В основном, в моей коллекции нейронные сети из мира open source и обычно они написаны на языке программирования Python. Данная статья прежде всего нужна мне как ссылка для близких и друзей, которым я могу улучшить их старые фото.
Моя итоговая цель - приблизиться к работам такого мастера как Денис Ширяев, который творит магию со своей командой Neural.Love. Самые старые видеоматериалы разложены в ряд изображений, очищены от шума, раскрашены, масштабированы к 4К и приведены к 60 fps, что добавляет плавности и реалистичности к движениям людей, которые жили в прошлых веках.
Самая просматриваемая на YouTube работа - Прогулка по Нью-Йорку 1911.
Пока разобрался и освоил нейронные сети, которые позволяют мне:
Под фразой улучшения общего качества у разных нейронных сетей подразумевается разное. Какие-то сети отдельно выделяют задачи ретуширования от улучшения контрастности и исправления засвета/темноты, какие-то подразумевают их в рамках общего улучшения.
Многие нейронные сети могут похвастать что умеют делать изменение размеров в большую сторону, пытаясь сохранить качество.
Есть обычные математические алгоритмы, которые делают масштабирование картинки, но даже лучшие из них (Фильтр Ланцоша) в теории и по мнению создателей нейронных сетей проигрывают им.
Одна из редких функций это раскрашивание всего изображения. Здесь нейронная сеть пытается придать цвета, что может быть исторически неверным. Например, глаза человека в реальности были голубыми, а нам нейронная сеть представила карими. Часто возникает эффект "зомби", у человека кончики пальцев могут приобретать серый пепельный цвет, который и дал такое красочное название негативному эффекту. Часто можно подметить склонность нейронной сети окрасить всё в лиловый цвет.
Есть нейронная сеть, которая использует для раскрашивания изображений в качестве опорной (reference) другую картинку, чтобы выдать итоговый результат. Обратите внимание как меняется результат при различных опорных фото. Можно подобрать эталонную картинку по словесному описанию и попытаться приблизиться к вероятному оригиналу.
Есть различные нейронные сети, которые могут раскрасить фото, но следует отличать раскрашивание чисто лица или всего изображения. Нейронная сеть, которая умеет раскрашивать ТОЛЬКО лица, легко оставит всё остальное серым и получится несуразица. При раскрашивании лица, оно должно занимать почти всю площадь изображения.
Если повреждения фото будут серьёзными (длинные участки царапин, дыры), то, возможно, стоит попробовать заменить их в графическом редакторе на белые участки, которые нейронная сеть попробует воссоздать.
Малополезный для меня функционал, но всё же есть возможность генерировать лицо человека по схеме.
К сожалению, мне пока доступна одна нейронная сеть, которую тренировали только на серых изображениях, судя по документации проекта. С другой стороны, если доступно старое фото, которое к ужасу ещё и обладает страшными артефактами сжатия в JPEG, то можно сначала избавиться от артефактов, а потом продолжить работу с фото в других нейронных сетях - убрать шум, раскрасить и т.д.
Интересный функционал, который может помочь убрать следы дождя с памятных фото.
Востребованный функционал по удалению царапин, следов изгиба на фотографии и т.д.
Дополнительные материалы:
Гагарин (1994) - улушенный нейронной сетью мульфильм.