Генеративните състезателни мрежи (GANs) правят значителни крачки в сферата на синтеза на изображения, създавайки изображения, които често са неразличими от реалния живот. От генериране на фотореалистични лица до проектиране на измислени среди, GAN са трансформиращи в различни области като изкуство, игри и компютърна визия. Въпреки това, контролът и манипулирането на тези генерирани изображения остават предизвикателство досега.

Наскоро екип от изследователи от Института за информатика Макс Планк и Google AR/VR представиха подход, който позволява интерактивна точкова манипулация върху генеративния колектор на изображения, уместно наречен DragGAN. Статията е Drag Your GAN: Интерактивна точкова манипулация върху генеративния колектор на изображенияот Pan et al.

Какво е DragGAN?

Терминът „плъзгане“ се отнася до интерактивно движение през изображение, което започва от манипулатор (началната точка) и завършва в цел (крайната точка). По този начин можете да манипулирате конкретни точки върху изображение, като ги плъзнете на нови места.

DragGAN е нов подход, който позволява на потребителите да „плъзгат“ всякакви точки от изображението, за да достигнат целевите точки по интерактивен за потребителя начин прецизно. Той позволява манипулиране на пространствени атрибути, включително поза, форма, изражение и оформление в различни обекти. Най-важното е, че плъзгането не изкривява или изкривява обекта в изображението. Обектът се препозиционира въз основа на плъзгане.

Свързани с тях дейности

Концепцията на DragGAN се основава на няколко области на основополагащи и авангардни изследвания в генеративни модели, фокусирани върху интерактивно генериране на изображения и проследяване на точки. Този раздел обобщава някои от значимите проучвания, които информираха статията DragGAN.

Генеративни модели за създаване на интерактивно съдържание

Преобладаващите настоящи методи за контролируем синтез на изображения разчитат на генеративни състезателни мрежи (GANs) или дифузионни модели.

Безусловните GANs като StyleGAN трансформират нискоразмерни произволни латентни вектори във фотореалистични изображения. Въпреки че могат да генерират реалистични изображения с висока разделителна способност, тези модели по своята същност не улесняват контролируемото редактиране на генерираните изображения.

Условни GAN бяха предложени за справяне с това ограничение. Тези мрежи получават условен вход (като карти за сегментиране или 3D променливи) заедно с латентния вектор с произволна извадка, което позволява генериране на фотореалистично изображение с повече контрол.

Бяха разработени множество методи за манипулиране на входни латентни вектори, за да се получи по-голям контрол върху безусловните GAN. Те включват намиране на значими латентни насоки чрез контролирано обучение или използване на предишни 3D модели и изчисляване на значими семантични насоки в латентно пространство по неконтролиран начин. Няколко скорошни техники дори позволяват контрол на грубата позиция на обекта чрез въвеждане на междинни топлинни карти. Независимо от това, тези методи позволяват предимно редактиране на подравнени по изображение семантични или груби геометрични атрибути.

За разлика от тези техники, DragGAN позволява прецизен контрол върху пространствените атрибути с помощта на точково базирано редактиране. Един предишен метод, GANWarping, също използва точково редактиране, но беше ограничен до редактиране на изображения извън разпространението и не гарантира, че получените изображения ще бъдат реалистични.

3D-съзнаващи GANпроменят GAN архитектурата, за да активират 3D контрол. Въпреки това контролът обикновено е ограничен до глобална поза или осветление, за разлика от по-подробния контрол, активиран от DragGAN.

Дифузионните модели, все по-популярен генеративен метод, постепенно обезшумяват произволно избран шум, за да създадат фотореалистично изображение. Докато тези модели могат да постигнат висококачествен синтез на изображения, те често са по-бавни от GAN и трябва да позволят фин контрол върху пространствените атрибути на изображенията.

Проследяване на точки

Действието на плъзгане може да се разглежда като движещо се изображение. Докато плъзгането се движи, целевата точка се проследява. Проследяването на точки във видеоклипове е по-често срещано от интерактивното въвеждане, включващо оценка на оптичния поток между последователни кадри. Този класически проблем оценява полетата на движение между две изображения. С прости думи, движението на обект във видеоклип.

Подходите, базирани на задълбочено обучение, обучени върху синтетични данни с оптичен поток на земната истина, все повече надминават конвенционалните техники.

Един от най-често използваните базирани на дълбоко обучение методи е RAFT, който оценява оптичния поток чрез итеративен алгоритъм. Скорошен метод, наречен PIPs, съчетава този итеративен алгоритъм с конвенционален подход за „видео с частици“, което дава превъзходна производителност при проследяване на дълги разстояния.

В DragGAN авторите демонстрират, че проследяването на точки върху генерирани от GAN изображения може да бъде постигнато чрез съпоставяне на функции, заобикаляйки необходимостта от допълнителни невронни мрежи или модели за проследяване на точки. Това прави подхода по-ефективен, което улеснява интерактивното редактиране. Въпреки своята простота, методът превъзхожда най-съвременните методи за проследяване на точки, включително RAFT и PIPs.

Разбиране на метода

Методът на Drag Your GAN paper е сравнително ясен и може да бъде разбран на високо ниво, без да се навлиза в подробности. Първо ще обясня метода с малко графики. Второ, ще навляза в подробности и ще обясня изчисленията с работния процес.

Механизмът на DragGAN работи въз основа на два основни компонента, наблюдение на движението и проследяване на точки:

Надзор на движението насърчава GAN да генерира изображения в посоката на плъзгане, използвайки изместена загуба на пластир. С други думи, генеративният модел се насърчава да генерира изображения, по-близо до целевия пластир върху изображението. Генераторът се фокусира върху манипулирането на пространствени характеристики, а не върху външния вид.

Проследяване на точкизакотвя точките на обработка в генерираното изображение за всяко преместване на плъзгане, като гарантира, че точките остават последователни по време на манипулацията. Той прави това, като извършва търсене на най-близкия съсед на пластира за точката, т.е. намира най-близкия блок от пластира до точката на манипулатора от предишната смяна.

По-долу ще разширя тези два процеса, но първо ще изясня някои от ключовите терминология и концепции от работата върху StyleGan, на които разчита статията.

Разбиране на концепциите на StyleGAN

Сега нека да разгледаме подробностите за метода.

Разбирането на термини и концепции от литературата на StyleGan ни помага да разберем тънкостите и напредъка на хартията Drag your GAN.

Като начало, моделът StyleGAN2 използва 512-измерен латентен код 𝒛, извлечен от нормално разпределение. След това този латентен код се картографира към междинен латентен код 𝒘 чрез процес, наречен „мрежа за картографиране“. Този междинен латентен код е от същото 512-измерно пространство. Пространството, в което се намира 𝒘, обикновено се нарича пространство W.

След това 𝒘 се прехвърля към генератора G, създавайки крайното изходно изображение, означено като I = G(𝒘). По време на този процес междинният латентен код 𝒘 се дублира няколко пъти и се предава на различни слоеве на генератора G. Всеки слой влияе на различно ниво на атрибути в крайното изображение, което позволява фин контрол върху генерирания изход.

Освен това е възможно да се използват различни 𝒘 за различни слоеве. Това по-малко ограничено W+ пространство е идентифицирано като по-изразително, осигуряващо по-голямо разнообразие от потенциални резултати. Авторите установиха, че по-ниските слоеве съдържат пространствени свойства на изображението, докато по-високите слоеве съдържат стилистични.

Накратко,генераторът G се учи да картографира от нискоизмерно латентно пространство (пространството на 𝒘) към по-високоизмерно изображение пространство. Следователно, генераторът G може да се разглежда като моделиращ „колектор на изображения“, концепция, въведена от Zhu et al. през 2016 г.. Колекторът на изображенията е високомерно пространство от всички възможни изображения и чрез навигиране през това пространство GAN генерират нови, уникални изображения.

Надзор на движението

Наблюдаването на движението на точки за изображения, създадени от Generative Adversarial Networks (GANs), е относително неизследвана територия. Документът предлага ново и елегантно решение за наблюдение на движението, което избягва използването на допълнителна невронна мрежа. Вместо това функцията на загубата разчита на отличителните свойства на генератора.

Motion Supervision използва картите на функциите Fслед 6-ия слой на StyleGAN2. Тези специфични характеристики достигат най-доброто място между резолюцията и дискриминацията. За да съответства на разделителната способност на крайното изображение, F се преоразмерява с помощта на процес, наречен билинейна интерполация. Фигура 3 от оригиналния документ изобразява целта за навигиране на ръкохватка към целева точка. Надзорът се прилага върху малък участък около pi (показан в червено), измествайки го към ti (показан в синьо) на стъпки.

Уравнение 1 в статията математически дефинира загубата при наблюдение на движението. Интересното е, че при изчисляване на градиента, използвайки тази загуба, градиентът е предотвратен от обратно разпространение. Това насърчаваpiда премине към следващата стъпка, без да позволява обратното движение. Ако е налице двоична маска M, немаскираният регион се поддържа стабилен със загуба на реконструкция, посочена от втория член в уравнението. Тази загуба се използва за оптимизиране на латентния код w за единична итерация по време на всяка стъпка за наблюдение на движението.

Пространствените атрибути на изображението се влияят главно от w за първите шест слоя, докато останалите до голяма степен влияят на външния вид. Следователно само w за първите шест слоя се актуализира, като другите се поддържат фиксирани, за да се запази външният вид. Тази селективна оптимизация предизвиква леко движение в съдържанието на изображението, което води до по-естествени и превъзходни резултати в различни набори от данни.

Проследяване на точки

След прилагане на наблюдението на движението имаме нов скрит код w, нови карти на функции F и ново изображение Аз. Следователно трябва да намерим точните нови местоположения на точките на манипулатора. За да се справи с това, методът актуализира всяка точка на манипулиране pi, като гарантира, че следи съответната точка на обекта.

Традиционно проследяването на точки се извършва чрез модели за оценка на оптичния поток или видео методи на частици. Тези техники обаче могат да повлияят на ефективността и да въведат грешки при натрупване, особено когато се работи с артефакти на псевдоними, присъщи на GAN.

За да преодолеят тези предизвикателства, авторите представят нов подход за проследяване на точки, който отново използва дискриминационните характеристики на GAN. Функциите на генератора улесняват проследяването чрез търсене на най-близкия съсед в рамките на функционална корекция за целевата точка.

Авторите използват функция L1 норма за търсене на най-близкия съсед, често използвана за измерване на грешки. Когато процесът на наблюдение на движението води до нов латентен код, функции и изображения, методът използва L1 норма функция за измерване на разстоянието между новите и оригиналните характеристики.

По-конкретно, авторите дефинират пластира около pi като Ω2(pi, r2)представляващ набор от точки, чиито разстояния от pi са по-малко от r2. След това проследената точка се получава чрез търсене на най-близкия съсед на fi в рамките на Ω2(pi, r2). Накратко, pi се актуализира, за да проследява обекта в радиус от центъра на предишния пластир.

Операцията се извършва върху картата на характеристиките F след 6-ия блок на StyleGAN2. Тези карти на функции имат разделителна способност 256 x 256, така че авторите използват билинейна интерполация, за да ги преоразмерят, за да съответстват на изображението, където е необходимо.

Експериментиране и резултати

Изследователите тестваха DragGAN върху различни набори от данни, включително животни, хора, автомобили и пейзажи. Беше установено, че техният подход ефективно премества дефинираните от потребителя точки на управление към целевите точки, постигайки разнообразни манипулационни ефекти в много категории обекти.

Манипулиране на забележителност на лицето

Първият експеримент се въртеше около манипулиране на ориентири на лицето и критични точки върху изображение на лице като нос, уста и очи. Тази задача е надежден тест поради точността на настоящите инструменти за откриване на лицеви ориентири в компютърното зрение.

Ето как са го направили:

  1. Генериране на изображения: С помощта на StyleGAN, модел на генератор, способен да произвежда висококачествени изображения, на случаен принцип се създават две изображения на лица.
  2. Откриване на забележителности: След това забележителностите бяха открити на тези изображения с помощта на съществуващи CV техники.
  3. Манипулиране на изображения: След това тези изображения бяха подложени на техниките за манипулиране на DragGAN. Целта беше да се променят ориентирите на първото изображение, за да имитират тези на второто изображение.
  4. Измерване: Ефективността на тази операция беше оценена чрез измерване на средното разстояние между ориентирите в двете изображения.

Целта беше да се оцени колко добре методът DragGAN може да манипулира ориентирите на лицето в едно изображение, за да съответства на тези на друго.

Реконструкция на сдвоено изображение

Вторият експеримент се фокусира върху възможностите на DragGAN за генериране на поредица от изображения или реконструкция на сдвоени изображения. Това изпитване възпроизвежда метода за оценка, използван от Endo 2022, основното базово сравнение на документа.

При реконструкцията на сдвоено изображение полето на оптичния поток, което описва движението на пикселите във видео последователност, се използва като псевдопотребителски вход. Използвайки този подход, изследователите имаха за цел да оценят способността на DragGAN да възстановява едно изображение от друго въз основа на въвеждане от потребителя.

Резултатите от тези експерименти показват как DragGAN работи в реалистични сценарии, осигурявайки емпирична основа за оценка на твърденията на статията. Този подход съчетава задълбочена методология със съответните базови линии, за да подчертае потенциалното въздействие на техните изследвания в областта на генеративното манипулиране на изображения.

The Takeaway

Методологията DragGAN бележи напредък в синтеза и манипулирането на изображения. Заслужава обаче да се отбележи, че DragGAN има ограничения, като например трудности при генериране извън разпространението (напр. неестествени човешки пози) и проследяване на точки в области на изображения без текстури. И все пак приносът му към екосистемата GAN е неоспорим и проправя пътя за бъдещи подобрения и изследвания в синтеза на изображения.

Можете да проверите пълната изследователска статия тук или да посетите страницата на проекта за повече информация тук.

Екстра: Пуснете свой собствен DragGan

Този раздел от публикацията в блога ще предостави кратък технически преглед на това как да внедрите демонстрацията на DragGAN. Ще ви преведа през необходимите предварителни условия и изисквания и процеса на настройка на визуализатора в Docker, изтегляне на предварително обучени тежести и стартиране на DragGAN GUI.

Настройка на околната среда

Преди да започнем, уверете се, че имате CUDA графична карта. Ако случаят е такъв, моля, придържайте се към изискванията на NVlabs/stylegan3. Настройката обикновено включва следните стъпки:

conda env create -f environment.yml
conda activate stylegan3
pip install -r requirements.txt

Стартиране на Gradio Visualizer в Docker

Предоставеното изображение на Docker е базирано на хранилището на NGC PyTorch. Преди да продължите, уверете се, че сте клонирали това репо и сте изтеглили предварително обучения модел.

python scripts/download_model.py

За да експериментирате с визуализатора в Docker, изпълнете тези команди:

docker build . -t draggan:latest 
docker run -p 7860:7860 -v "$PWD":/workspace/src -it draggan:latest bash

За потребители, които искат да използват своето Nvidia GPU ускорение в рамките на Docker, добавете командния таг ` — gpus all`, както е показано:

docker run - gpus all -p 7860:7860 -v "$PWD":/workspace/src -it draggan:latest

След това можете да стартирате визуализатора Gradio:

cd src && python visualizer_drag_gradio.py - listen

Това ще създаде споделена Gradio връзка, достъпна от вашата терминална конзола.

Моля, имайте предвид, че изображението на Docker изисква приблизително 25 GB дисково пространство!

Изтегляне на предварително обучени тежести StyleGAN2

За да изтеглите предварително тренираните тежести, стартирайте:

python scripts/download_model.py

За тези, които се интересуват от изследването на StyleGAN-Human и набора от данни Landscapes HQ (LHQ), можете да изтеглите тегла от дадените връзки и да ги поставите в директорията `./checkpoints`.

Изпълнение на GUI на DragGAN

За да стартирате DragGAN GUI, изпълнете:

sh scripts/gui.sh

GUI ви позволява да променяте изображения, генерирани от GAN. Ако искате да редактирате реално изображение, първо извършете GAN инверсия с помощта на инструменти като PTI. След това заредете новия скрит код и теглата на модела в GUI.

И накрая, можете да стартирате демонстрацията на DragGAN Gradio универсално както на Windows, така и на Linux с:

visualizer_drag_gradio.py

Вече сте готови да изследвате света на GAN с DragGAN!