Массовая ретушь 140 фотографий с помощью локальной нейросети на старом компьютере
Недавно у меня появилась задача: нужно было обработать около 140 фотографий для будущего видеоколлажа. Основная цель — немного улучшить портреты: убрать прыщи, сгладить кожу и сделать лица более аккуратными.
Первой мыслью было воспользоваться каким-нибудь онлайн-сервисом на базе ИИ. Однако быстро стало понятно, что загружать 140 фотографий по одной — слишком долго и неудобно. Хотелось найти решение, которое сможет автоматически обработать всю папку с фотографиями.
Исходная конфигурация
Компьютер был весьма скромным по современным меркам:
Процессор: Intel Core i3-3240 @ 3.40 GHz (2 ядра / 4 потока)
Оперативная память: 4 ГБ
Видеокарта: встроенная Intel HD Graphics 2500
Операционная система: Ubuntu 22.04
Никакой NVIDIA, CUDA и прочих ускорителей не было.
Честно говоря, я не ожидал, что на таком железе вообще получится запустить нейросеть, способную выполнять осмысленную обработку...
[+]Массовая ретушь 140 фотографий с помощью локальной нейросети на старом компьютере
Недавно у меня появилась задача: нужно было обработать около 140 фотографий для будущего видеоколлажа. Основная цель — немного улучшить портреты: убрать прыщи, сгладить кожу и сделать лица более аккуратными.
Первой мыслью было воспользоваться каким-нибудь онлайн-сервисом на базе ИИ. Однако быстро стало понятно, что загружать 140 фотографий по одной — слишком долго и неудобно. Хотелось найти решение, которое сможет автоматически обработать всю папку с фотографиями.
Исходная конфигурация
Компьютер был весьма скромным по современным меркам:
Процессор: Intel Core i3-3240 @ 3.40 GHz (2 ядра / 4 потока)
Оперативная память: 4 ГБ
Видеокарта: встроенная Intel HD Graphics 2500
Операционная система: Ubuntu 22.04
Никакой NVIDIA, CUDA и прочих ускорителей не было.
Честно говоря, я не ожидал, что на таком железе вообще получится запустить нейросеть, способную выполнять осмысленную обработку фотографий.
Выбор программы
После изучения различных вариантов я решил попробовать GFPGAN — нейросеть для восстановления и ретуши лиц.
Преимущества оказались очевидными:
работает локально;
не требует отправки фотографий в интернет;
умеет обрабатывать целые папки изображений;
запускается даже на процессоре без дискретной видеокарты.
Установка
Сначала был создан отдельный Python-окружение:
python3 -m venv ~/ai/gfpgan
source ~/ai/gfpgan/bin/activate
Затем был скачан проект:
Установлены зависимости:
pip install -r requirements.txt
Для работы на процессоре была установлена CPU-версия PyTorch:
Также пришлось использовать NumPy версии 1.x:
pip install numpy==1.26.4
После этого была скачана модель GFPGAN v1.4.
Запуск обработки
Обработка всей папки выполнялась одной командой:
cd ~/ai/GFPGAN
source ~/ai/gfpgan/bin/activate
python inference_gfpgan.py \
-i ~/photos \
-o ~/result \
-v 1.4 \
-s 1
Где:
-i — папка с исходными фотографиями;
-o — папка для результата;
-v 1.4 — версия модели;
-s 1 — масштаб без увеличения изображения.
После завершения обработки я дополнительно слегка повысил резкость фотографий с помощью GraphicsMagick:
gm mogrify -unsharp 0x1+1.2+0 *.jpg
Это позволило частично компенсировать характерное для нейросетей небольшое "замыливание" лица.
Производительность
Все фотографии были предварительно уменьшены до разрешения:
1200 × 675 пикселей
что соответствует примерно:
0.81 мегапикселя
На моём компьютере обработка одного изображения занимала около 30 секунд.
Таким образом:
140 фотографий × 30 секунд ≈ 4200 секунд;
это примерно 70 минут непрерывной работы.
То есть весь набор фотографий был обработан примерно за один час с небольшим.
Результат
Результат приятно удивил.
Конечно, это не профессиональная ручная ретушь и не работа современного графического процессора стоимостью в несколько тысяч долларов. Иногда нейросеть чрезмерно сглаживает кожу или даже слегка изменяет форму век и морщин.
Однако для задачи подготовки фотографий к видеоколлажу результат оказался более чем достаточным:
прыщи и мелкие дефекты кожи стали менее заметны;
лица выглядят более аккуратными;
вся папка была обработана автоматически;
не пришлось загружать фотографии в облачные сервисы;
не потребовалось вручную редактировать каждую фотографию.
Самым неожиданным выводом стало то, что даже компьютер 2012 года выпуска с 4 ГБ оперативной памяти способен запускать современные нейросетевые инструменты и выполнять вполне полезную работу.
Если задача состоит в массовой обработке большого количества фотографий, то локальный запуск GFPGAN может оказаться гораздо удобнее, чем использование онлайн-сервисов и ручная обработка каждого изображения по отдельности.
[–]