Chen Gao et al./arXiv.org, 2021
Ми сприймаємо світ завдяки стереоскопічному зору, яке в свою чергу виникає через те, що у нас є два очі. Завдяки цьому мозок отримує два зображення, які, хоча і схожі один на одного, трохи різняться, тому що "зняті" з трохи різних ракурсів.
Інженери вже кілька десятиліть працюють над створенням пристроїв для перегляду об'ємних зображень і відеороликів, і ці розробки можна розділити на дві основні частини: апаратні та програмні. Перші-це пристрої, безпосередньо відповідають за перегляд об'ємного контенту. Серед них можна виділити екрани світлового поля і VR-окуляри. Програмні розробки в основному зосереджені на створенні і зберіганні об'ємних даних. Наприклад, в минулому році розробники з Google створили масив камер і навчилися поєднувати кадри з нього так, щоб потім зняте відео можна було переглядати з різних ракурсів.
Але на поточний момент практично всі відеоролики зняті на одну камеру, тому їх не можна перетворити в об'ємні таким способом. Розробники з Політехнічного університету Віргінії і Facebook під керівництвом Цзя-Біня Хуана (Jia-Bin Huang) створили алгоритм, який отримує звичайне 2D-відео і синтезує для нього кадри з довільних нових ракурсів.
Новий алгоритм заснований на нейромережі NeRF (Neural Radiance Field), розробленої іншими дослідниками в 2020 році. Вона дозволяє зберігати інформацію про 3D-сцену і рендерити її 2D-зображення з довільного кута. Алгоритм рендерить зображення попіксельно, посилаючи промені через сцену: вона отримує від користувача точку і напрямок спостереження. Пропустивши промінь, нейромережа видає отримані уздовж нього значення щільності і кольору, на основі яких задається колір пікселя 2D-зображення. Потім процес повторюється для безлічі напрямків, в результаті чого утворюється повний кадр.
NeRF-моделі навчаються на безлічі кадрів одного і того ж об'єкта, знятих з різних ракурсів. У випадку з відеороликом завдання ускладнюється, тому що для кожного моменту часу є тільки один кадр з одного ракурсу. У новій роботі автори запропонували паралельно навчати дві окремі моделі: для рухомих і нерухомих частин сцени. Статична модель аналогічна звичайній Nerf-моделі, за винятком того, що при її навчанні з кадрів видаляли фрагменти з рухомими об'єктами.
Для навчання динамічної моделі і вирішення проблеми нестачі кадрів дослідники запропонували створювати для кожного кадру і відповідного моменту часу t по два додаткових кадри, "знятих" в моменти t+1 і t-1. Для цього алгоритм передбачає 3D-потік між сусідніми моментами часу, який за своєю суттю аналогічний поняттю оптичного потоку з тією різницею, що він відображає рухи для 3D-даних, тоді як оптичний потік відображає рух між 2D-кадрами.
Це, а також функції втрат, що підвищують якість навчання динамічної моделі, дозволило навчити алгоритм якісно відтворювати кадри з нових ракурсів для відео з рухомими об'єктами. Крім того, він дозволяє відокремити рух основної частини сцени від руху динамічних об'єктів. Наприклад, в демонстраційному ролику можна побачити, як алгоритм дозволив перетворити відео, на якому оператор йшов паралельно з танцюючим чоловіком, в статичне, "зняте" з одного місця. Автори порівняли роботу свого алгоритму з аналогом, створеним іншою групою дослідників в 2020 році, і влаштованим іншим чином, і показали, що нова розробка дає більш плавні переходи між ракурсами і менше артефактів геометрії, але при цьому робить кадри трохи більш розмитими.