Что­бы не слиш­ком удач­ная фотог­рафия заиг­рала новыми крас­ками, нуж­но дол­го редак­тировать ее в «Фотошо­пе» или вос­поль­зовать­ся воз­можнос­тями ней­росетей. В этой статье мы под­готовим вир­туаль­ную машину VirtualBox с опе­раци­онной сис­темой Lubuntu 16.04, уста­новим на нее прог­раммы ней­рон­ных сетей Real-ESRGAN и GFPGAN и с их помощью вдох­нем вто­рую жизнь в сни­мок из ста­рого бук­лета.
 

Просто сделай мне красиво!

Ес­ли ты занимал­ся фотог­рафи­ей вооб­ще и циф­ровой фотог­рафи­ей в час­тнос­ти, то не понас­лышке зна­ком с уси­лиями, которые надо при­ложить к исходно­му матери­алу, что­бы зас­тавить его «заиг­рать крас­ками». Сов­ремен­ный софт поз­воля­ет при­менять к рас­тро­вым изоб­ражени­ям эффекты и филь­тры, которые в недале­ком прош­лом были дос­тупны лишь кинос­туди­ям. Одна­ко, что­бы в пол­ной мере вос­поль­зовать­ся все­ми воз­можнос­тями гра­фичес­ких редак­торов, прос­то уста­новить Photoshop, GIMP или Paint.NET недос­таточ­но. Пот­ребу­ются спе­циаль­ные зна­ния в области обра­бот­ки изоб­ражений, навыки прак­тичес­кого исполь­зования при­емов кор­рекции цве­та и устра­нения дефек­тов, арте­фак­тов и дру­гих страш­ных слов. Поэто­му если ты не пла­ниро­вал пос­вятить свою жизнь (или как минимум канику­лы) фото­искусс­тву, то для получе­ния качес­твен­ной фотог­рафии до недав­него вре­мени тебе понадо­билась бы помощь про­фес­сиона­лов.

В пос­ледние годы тех­нологии совер­шили зна­читель­ный ска­чок в сфе­ре обра­бот­ки изоб­ражений, приб­лизив­ший воз­можнос­ти прог­рам­мных инс­тру­мен­тов к реали­зации магичес­кой кноп­ки «Прос­то сде­лай мне кра­сиво!». Как ты уже догадал­ся, я имею в виду ней­росети, воп­лощен­ные в про­ектах Real-ESRGAN и GFPGAN. Пер­вый из них, Real-ESRGAN, был соз­дан для выпол­нения «сле­пого суперу­вели­чения» (Blind Super-resolution, BSR) изоб­ражений низ­кого раз­решения с утра­чен­ной информа­цией о деталях. Основной вари­ант его прак­тичес­кого при­мене­ния сос­тоит в четырех­крат­ном уве­личе­нии исходной кар­тинки.

Вто­рой, GFPGAN, ори­енти­рован на «сле­пое вос­ста­нов­ление лица» (Blind Face Restoration, BFR), то есть вос­ста­нов­ление изоб­ражений челове­чес­ких лиц, которые (изоб­ражения, а не лица) под­вер­глись пов­режде­ниям и иска­жени­ям неиз­вес­тной при­роды. При сов­мес­тном исполь­зовании с Real-ESRGAN он допол­нитель­но про­рисо­выва­ет отдель­ные мел­кие детали, которые «ожив­ляют» лица.

Об­щая часть GAN в наз­вани­ях про­ектов, озна­чающая генера­тив­но‑сос­тязатель­ные сети (Generative Adversarial Network), сооб­щает нам о том, что оба осно­ваны на ней­рон­ных сетях, которые обу­чены генери­ровать реалис­тичные изоб­ражения.

www

Вот ссыл­ки на сай­ты этих про­ектов:

За­меча­тель­ная осо­бен­ность этих прог­рам­мных про­дук­тов в том, что для получе­ния резуль­тата дос­таточ­но пре­дос­тавить исходный матери­ал, запус­тить про­цесс и нем­ного подож­дать. Никаких допол­нитель­ных ука­заний отно­ситель­но спо­собов получе­ния резуль­тата не тре­бует­ся, все дей­стви­тель­но про­исхо­дит «по щучь­ему велению, по моему хотению». А сам резуль­тат луч­ше уви­деть на кон­крет­ном при­мере. Для испы­тания я взял фотог­рафию Сти­ва Джоб­са и Джо­на Скал­ли из статьи Деборы Уайз «Взлет, падение и сно­ва взлет ком­пании Apple», опуб­ликован­ной в информа­цион­ном бук­лете ле­ген­дарной выс­тавки «Информа­тика в жиз­ни США», про­ходив­шей в 1988–1989 годах в круп­ных городах СССР.

Фотография в скане информационного буклета — исходный материал для обработки
Фо­тог­рафия в ска­не информа­цион­ного бук­лета — исходный матери­ал для обра­бот­ки

Пе­ред началом работы приш­лось обре­зать фотог­рафию и при­дать ей более естес­твен­ную ори­ента­цию, повер­нув по часовой стрел­ке в обыч­ном гра­фичес­ком редак­торе. Пос­ле это­го мож­но прис­тупать к магичес­ким прев­ращени­ям. Прев­ращение пер­вое — четырех­крат­ное уве­личе­ние с помощью Real-ESRGAN. Резуль­тат я умень­шил в четыре раза и помес­тил рядом с ори­гина­лом, что­бы мож­но было срав­нить на глаз. Тебе не кажет­ся, что ней­рон­ная сеть еще и выс­тирала и выг­ладила этим пар­ням их рубаш­ки и брю­ки?

Оригинал фотографии (слева) и результат обработки инструментом Real-ESRGAN (справа)
Ори­гинал фотог­рафии (сле­ва) и резуль­тат обра­бот­ки инс­тру­мен­том Real-ESRGAN (спра­ва)

Вро­де бы прог­ресс уже дос­тигнут. Но на фотог­рафи­ях людей основное вни­мание при­тяги­вают лица, и, сог­ласись, было бы неп­лохо деталь­нее про­рабо­тать волосы, бро­ви, гла­за, губы... Веро­ятно, в этом смог бы помочь какой‑нибудь худож­ник. Но вмес­то это­го мы вос­поль­зуем­ся вто­рым про­дук­том — GFPGAN, который уме­ет дей­ство­вать в одной связ­ке с Real-ESRGAN. Итак, вто­рое прев­ращение — про­работ­ка лиц на фотог­рафии.

Лица после простого увеличения (вверху) и после проработки инструментом GFPGAN (внизу)
Ли­ца пос­ле прос­того уве­личе­ния (ввер­ху) и пос­ле про­работ­ки инс­тру­мен­том GFPGAN (вни­зу)

По‑моему, это пол­ный успех! Скри­пач худож­ник не нужен!

 

Необходимое оборудование

Ре­зуль­тат хорош, слов нет, но какой ценой его мож­но дос­тичь? Ты, веро­ятно, в кур­се, что для про­мыш­ленно­го исполь­зования ней­рон­ных сетей необ­ходимы серь­езные вычис­литель­ные мощ­ности — клас­терные плат­формы с боль­шими хра­нили­щами дан­ных и мощ­ными гра­фичес­кими про­цес­сорами. Подой­дет, нап­ример, май­нин­говая фер­ма вре­мен «бит­коино­вой лихорад­ки». Но если ты не замахи­ваешь­ся на самос­тоятель­ное обу­чение ней­рон­ных сетей, а прос­то жела­ешь под­готовить к печати нес­коль­ко фотос­нимков, то воз­можны вари­анты. Нап­ример, вос­поль­зовать­ся одним из мно­жес­тва появив­шихся в интерне­те сер­висов, пред­лага­ющих заг­рузить фотог­рафию и через 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»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии