川普的退休生活?不,是AI演算法的宅舞演繹。

一、前言

大家好,我是 Jack 。

最近看到了一個很好玩的演算法,人體的動作遷移。

給定一張或者多張人物 A 的影像,和一段人物 B 的影片,就可以通過動作遷移演算法自動合成一段人物 A 做任務 B 動作的影片

看看阿川老師模仿阿坤老師等人的舞姿:

點擊查看影片

要不是馬保國被封殺了,絕對給大家來一段「松果彈抖閃電鞭」。

準備好素材和電腦,今天繼續手把手教學

演算法原理、環境搭建、效果實現,一條龍服務,盡在下文!

二、Impersonator++

Impersonator++ 的前身是去年發表的 Impersonator。這項工作,上海科技大學的 LiuWen 、Zhixin Piao 等人,探索了三年

去年的 Impersonator 早已入選電腦視覺高峰會 ICCV 2019。

又經過了一年多的努力,增強版 Impersonator++ 誕生了。

Impersonator++ 解決了去年演算法的泛化性較差,尺度太較小(256 x 256), 以及自動化程度不夠高等問題。

Impersonator++ 不僅可以做人體的動作遷移,人體影像合成的其它任務都可以 Cover,例如新視角合成、外觀遷移。

它們在重演、角色動畫、虛擬試裝、電影以及遊戲製作等領域具有巨大的應用潛力

動作遷移(模仿)的目標是把 source human image 的動作,變換成 reference human image 的動作。

新視角合成,就是對視角進行轉換,比原圖是一張正面圖,去合成他的背面圖。

外觀遷移是交換兩張影像中人物的外觀(如衣服,褲子,鞋子等,但是不包含臉部)。

研究者針對上個版本的問題,探索提出了第二個版本 Liquid Warping GAN with Attention。

整個處理流程分為三個步驟:Body Mesh Recovery、Flow Composition、Liquid Warping GAN。

Body Mesh Recovery 階段是對所有圖片進行三維重建,生成每幀人物的 3D Mesh,然後進行渲染。

Flow Composition 階段是分離前景和背景,並計算運動需要的一系列旋轉矩陣,以備後動作渲染。

Liquid Warping GAN 階段是生成結果的過程,利用到了背景修復 Inpainting 演算法,同時利用 LWB 或 AttLWB 生成頭髮、衣服等細節紋理。

想要更好的修復效果,可以使用多幀影像作為 Source Image。

更詳細的技術細節,可以直接看 paper:

//arxiv.org/pdf/2011.09055.pdf

三、效果測試

Github 項目地址:

//github.com/iPERDance/iPERCore

強烈建議使用 Linux 搭建環境,我自己在 Windows 上測試發現存在一些問題,與作者微信聯繫,他們表示近期會修復。[已修復]

沒有 GPU 的,也可以白嫖 Google Colab,環境都是配好的,直接挨個 cell 運行即可體驗。

Google Colab 地址:

//colab.research.google.com/drive/1bwUnj-9NnJA2EMr7eWO4I45UuBtKudg_?usp=sharing

如果沒梯子,那隻能用 Linux 伺服器搭建開發環境了,或者等 Windows 修復。

Linux 環境配置,沒啥問題,直接安裝 CUDA 10.1 以上版本,並安裝 gcc 7.5+ 和 ffmpeg。

然後下載程式碼,進入工程目錄,使用如下指令安裝依賴:

python setup.py develop

搞定後,下載演算法需要的權重文件,項目的權重文件需要梯子才能下載,否則很慢。

為了方便大家,我將論文權重文件,上傳到了百度網盤,需要的自取(提取碼:jack):

//pan.baidu.com/s/1E0hcRotocz85I2Oua0wiew

將權重文件解壓到 assets 目錄即可。

都配置好後,直接運行命令:

python demo/motion_imitate.py --gpu_ids 0 \
   --image_size 512 \
   --num_source 2   \
   --output_dir "./results" \
   --assets_dir "./assets"  \
   --model_id   "donald_trump_2" \
   --src_path   "path?=./assets/samples/sources/donald_trump_2/00000.PNG,name?=donald_trump_2" \
   --ref_path   "path?=./assets/samples/references/akun_2.mp4,name?=akun_2,pose_fc?=300"

命令參數的詳細說明,在 motion_imitate.py 文件里寫的很詳細,這裡就不再累述。

運行命令,大功告成。

四、絮叨

我知道,看了這篇文章,你一定又有了很多大膽的想法。

這個演算法會佔領新一輪的鬼畜區嗎?拭目以待。

我是 Jack ,我們下期見。

文章持續更新,可以微信公眾號搜索【JackCui-AI】第一時間閱讀,本文 GitHub PythonPark”>//github.com/Jack-Cherish/PythonPark 已經收錄,有大廠面試完整考點,歡迎 Star。