Содержание статьи
Просто сделай мне красиво!
Если ты занимался фотографией вообще и цифровой фотографией в частности, то не понаслышке знаком с усилиями, которые надо приложить к исходному материалу, чтобы заставить его «заиграть красками». Современный софт позволяет применять к растровым изображениям эффекты и фильтры, которые в недалеком прошлом были доступны лишь киностудиям. Однако, чтобы в полной мере воспользоваться всеми возможностями графических редакторов, просто установить Photoshop, GIMP или Paint.NET недостаточно. Потребуются специальные знания в области обработки изображений, навыки практического использования приемов коррекции цвета и устранения дефектов, артефактов и других страшных слов. Поэтому если ты не планировал посвятить свою жизнь (или как минимум каникулы) фотоискусству, то для получения качественной фотографии до недавнего времени тебе понадобилась бы помощь профессионалов.
В последние годы технологии совершили значительный скачок в сфере обработки изображений, приблизивший возможности программных инструментов к реализации магической кнопки «Просто сделай мне красиво!». Как ты уже догадался, я имею в виду нейросети, воплощенные в проектах Real-ESRGAN и GFPGAN. Первый из них, Real-ESRGAN, был создан для выполнения «слепого суперувеличения» (Blind Super-resolution, BSR) изображений низкого разрешения с утраченной информацией о деталях. Основной вариант его практического применения состоит в четырехкратном увеличении исходной картинки.
Второй, GFPGAN, ориентирован на «слепое восстановление лица» (Blind Face Restoration, BFR), то есть восстановление изображений человеческих лиц, которые (изображения, а не лица) подверглись повреждениям и искажениям неизвестной природы. При совместном использовании с Real-ESRGAN он дополнительно прорисовывает отдельные мелкие детали, которые «оживляют» лица.
Общая часть GAN в названиях проектов, означающая генеративно‑состязательные сети (Generative Adversarial Network), сообщает нам о том, что оба основаны на нейронных сетях, которые обучены генерировать реалистичные изображения.
Замечательная особенность этих программных продуктов в том, что для получения результата достаточно предоставить исходный материал, запустить процесс и немного подождать. Никаких дополнительных указаний относительно способов получения результата не требуется, все действительно происходит «по щучьему велению, по моему хотению». А сам результат лучше увидеть на конкретном примере. Для испытания я взял фотографию Стива Джобса и Джона Скалли из статьи Деборы Уайз «Взлет, падение и снова взлет компании Apple», опубликованной в информационном буклете легендарной выставки «Информатика в жизни США», проходившей в 1988–1989 годах в крупных городах СССР.
Перед началом работы пришлось обрезать фотографию и придать ей более естественную ориентацию, повернув по часовой стрелке в обычном графическом редакторе. После этого можно приступать к магическим превращениям. Превращение первое — четырехкратное увеличение с помощью Real-ESRGAN. Результат я уменьшил в четыре раза и поместил рядом с оригиналом, чтобы можно было сравнить на глаз. Тебе не кажется, что нейронная сеть еще и выстирала и выгладила этим парням их рубашки и брюки?
Вроде бы прогресс уже достигнут. Но на фотографиях людей основное внимание притягивают лица, и, согласись, было бы неплохо детальнее проработать волосы, брови, глаза, губы... Вероятно, в этом смог бы помочь какой‑нибудь художник. Но вместо этого мы воспользуемся вторым продуктом — GFPGAN, который умеет действовать в одной связке с Real-ESRGAN. Итак, второе превращение — проработка лиц на фотографии.
По‑моему, это полный успех! Скрипач художник не нужен!
Необходимое оборудование
Результат хорош, слов нет, но какой ценой его можно достичь? Ты, вероятно, в курсе, что для промышленного использования нейронных сетей необходимы серьезные вычислительные мощности — кластерные платформы с большими хранилищами данных и мощными графическими процессорами. Подойдет, например, майнинговая ферма времен «биткоиновой лихорадки». Но если ты не замахиваешься на самостоятельное обучение нейронных сетей, а просто желаешь подготовить к печати несколько фотоснимков, то возможны варианты. Например, воспользоваться одним из множества появившихся в интернете сервисов, предлагающих загрузить фотографию и через 10–20 секунд получить ее улучшенную версию.
Некоторые сервисы предоставляют такие услуги даже бесплатно, но надо помнить, что «если вы за это не платите, то вы не потребитель, вы — продаваемый продукт». В любом случае в этой статье мы не будем обсуждать такой незатейливый способ, а поговорим лучше о том, как выполнить аналогичную обработку на твоем персональном компьютере или ноутбуке.
Новые версии Real-ESRGAN и GFPGAN не предъявляют специальных требований к видеоадаптеру (хотя поддержка Nvidia CUDA приветствуется) и могут работать на довольно заурядном оборудовании. Чтобы обработать фотографии этими инструментами, твой компьютер должен обладать следующими характеристиками:
- на нем должна быть установлена 64-разрядная версия Linux не старше чем Ubuntu 16.04;
- должно быть не меньше 768 Мбайт по‑настоящему свободной оперативной памяти, которая не используется ни видеоадаптером, ни операционной системой;
- должно быть не менее 15 Гбайт свободного дискового пространства.
Операционная система
У тебя 32-разрядная Windows? Ничего, безвыходных ситуаций не бывает! Кто сказал, что компьютер не может быть виртуальным? Устанавливай поскорее гипервизор VirtualBox, создавай в нем виртуальную машину и не забудь указать в ее настройках следующие параметры:
- операционная система: Linux/Ubuntu (64 bit);
- основная память: 1024 Мбайт (как минимум, больше — лучше);
- жесткий диск: 20 Гбайт;
- сетевой адаптер: NAT (с выходом в интернет).
Имей в виду, что для установки 64-разрядной гостевой операционной системы процессор на твоем компьютере должен быть 64-разрядным и поддерживать аппаратную виртуализацию Intel VT-x или AMD-V.
Для виртуальной машины с довольно скромными параметрами подойдет далеко не всякий дистрибутив Linux. Современная версия Ubuntu на 1 Гбайт ОЗУ не сможет даже запустить инсталлятор, о чем я рассказывал в одной из предыдущих статей. Кроме того, мы не можем разбрасываться оперативной памятью на украшательства рабочего стола, каждый ее мегабайт потребуется для решения основной задачи. Мне больше всего понравилась работа Bodhi Linux 4.5 — дистрибутива, основанного на Ubuntu 16.04, с легковесным рабочим столом Moksha. Но у него есть специфические нюансы установки и настройки, поэтому тебе, наверное, будет проще воспользоваться Lubuntu 16.04 — вариантом Ubuntu с рабочим столом LXDE. Его я тоже проверил, он вполне пригоден для наших целей.
С установкой, уверен, ты справишься сам. После установки обязательно обнови информацию о содержимом репозиториев:
sudo apt update
Если планируешь использовать машину не только в качестве фотоувеличителя, можешь актуализировать установленное программное обеспечение:
sudo apt upgrade
Но для наших целей этот шаг не обязателен.
Итак, теперь у тебя точно есть 64-разрядная операционная система Linux. Приступим к оснащению ее прикладными программами. Чтобы тебе было проще ориентироваться в дальнейших рекомендациях, я схематично набросал то, что в итоге должно получиться.
На рисунке черным цветом обозначены каталоги, зеленым — основные исполняемые файлы и сценарии, голубым — символические ссылки, а синим — файлы с данными. Серым цветом выделены рабочие каталоги, которые, вообще говоря, ты можешь создавать по своему предпочтению. Обрати внимание, что вся файловая структура находится в каталоге пользователя, поэтому для ее создания особые привилегии не нужны.
Среда исполнения
Для работы Real-ESRGAN и GFPGAN требуется Python версии не старше 3.7. Если на твоем компьютере это требование выполняется, можешь пропустить этот раздел. Но если ты хочешь собрать весь набор программного обеспечения для «персонального нейросетевого фотоувеличителя», чтобы потом быстро развернуть этот набор на основе разнообразных дистрибутивов Linux, то советую не отвлекаться и проделать описанные здесь шаги.
Например, Ubuntu 16.04 поставляется с Python 3.5, который довольно сильно интегрирован с операционной системой, и замена версии может привести к непредсказуемым последствиям. Поэтому давай соберем Python 3.8 и установим его в качестве дополнительного пользовательского интерпретатора, не затрагивая системный.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»