自拍也能變爲他拍,魔幻修圖界又出新招式,但效果實在感人。

智能手機的出現,讓攝影變成了一項大衆藝術,也讓越來越多的人愛上「自拍」。但自拍照常常存在構圖問題,比如不自然的肩膀姿勢、佔據一小半鏡頭的手臂,或者極其詭異的視角。

要想解決這個問題,可以選擇隨身攜帶三腳架或自拍杆,也可以選擇隨身攜帶一個朋友作爲攝影師(該方法對單身狗極其不友好)。

或者,你還可以選擇相信後期修圖的藝術。近日,來自 Adobe 研究院、UC 伯克利、魯汶大學的研究者開發了一種「自拍」變「他拍」的新技術,通過識別目標的姿勢並生成身體的紋理,在給定的自拍背景中完善和合成人物。

在這篇論文中,研究者提出了一種叫做 「Unselfie(非自拍)」的圖片轉換方法,能夠將自拍照中的人物,轉變爲手臂、肩膀、軀幹都比較放鬆舒展的“他拍圖像”。它會把所有舉起的手臂調整爲向下,然後調整服裝細節,最後填充好所有暴露出來的背景區域。

除了用來修飾社交媒體上的自拍照,這項技術還有很多應用方式,如果你急需一張證件照,而無人能幫你拍攝,那這項技術就能派上用場。

當然,這個方法目前還不太成熟,除了效果一般之外,偶爾還有翻車的時候,比如生成這樣的圖像:

「自拍」轉「他拍」的三大挑戰

總的來說,「自拍」轉「他拍」存在三大挑戰:

沒有成對的訓練數據(自拍 - 他拍圖像對);

一個自拍姿勢可能對應多個他拍姿勢;

改變姿勢會在背景中留下空洞,因此在轉換過程中要填補這些空洞。

研究者嘗試用之前的幾種方法來解決挑戰,但實驗結果表明,這些方法會產生明顯的僞影,其紋理細節也會由於外觀信息的高度壓縮而丟失。

因此,他們提出藉助合成「自拍 - 他拍」圖像對和自監督學習的方法來解決上述問題。

具體來說,研究者提出了一種利用他拍圖像合成對應自拍圖像的方法,他們利用非參數化最近姿態搜索模塊來檢索最接近給定他拍圖像的自拍圖像,然後合成對應的自拍照。他們還在推理過程中應用了一個最近姿態搜索模塊。給定一個自拍姿態輸入,模型會檢索出與之匹配度最高的他拍姿態,然後利用這個姿態來合成最後的他拍效果。合成的輸出的結果不止一個,用戶可以從中選擇,這就解決了上面提到的挑戰 2。

利用上述步驟合成的成對數據可以直接用來訓練一個有監督的人像生成網絡,但實驗結果顯示,明顯的僞影問題依然沒有解決。之前的各種方法對於合成的成對訓練數據與真實自拍測試數據之間的像素級 domain gap 非常敏感(如下圖 3 所示)。

受到 CVPR 2019 論文《Coordinate-based texture inpainting for pose-guided image generation》的啓發,研究者使用基於座標的修補方法在 UV 空間中修補身體紋理,空間中大部分是不變的原始身體姿態,因此在面臨合成數據的瑕疵時更具魯棒性。此外,基於座標的修補方法可以重新利用可見像素,從而獲得更清晰的結果。

爲了應對挑戰 3,研究者使用了一個基於合成網絡的門控捲積層來完善身體外觀和填補背景空白,並保持人體與背景之間的平滑過渡。

總的來說,爲了解決「unselfie」任務,研究者提出了下圖所示的三段式 pipeline:

首先在數據庫中搜索最相近的他拍姿勢,然後執行基於座標的身體紋理修補,最後使用合成模塊來細化結果,並在背景上合成它們。

實驗結果

研究者在定性評估、用戶研究和定量評估三方面將他們提出的方法與以往類似方法進行了比較。

下圖 7 表明,與之前的 DPIG 和 PATN 方法相比,Unselfie 方法生成了更逼真的人體姿勢和背景。

研究者在 Amazon Mechanical Turk (AMT)上對該方法以及 DPIG、VUNET 和 PATN 方法進行了用戶研究。結果顯示,該方法優於其他方法(如下表 1 所示)。

由於沒有對應自拍照的 ground truth 他拍照,因而不能使用 SSIM 之類的指標。所以,爲了定量比較該方法與其他基準方法的成像結果,研究者使用了 FID 和 KID 兩項指標。結果顯示,定量比較中的 FID 和 KID 結果與用戶研究保持一致,該方法顯著優於其他方法。

方法侷限

不過,該方法在以下幾個方面依然存在侷限。

首先,如下圖 10(左)所示,對於具有挑戰性的自拍姿勢或角度來說,最近姿態搜索模塊可能難以找到與之匹配的他拍姿態,這導致合成圖像中的手臂或肩膀相較於頭部區域過細或過寬。

這一問題在 top-1 結果中出現的比例少於 10%,並且用戶通常可以從 top-5 結果中找到良好的兼容姿勢。

圖 10:失敗示例。

此外,圖 10 示例也暴露出了背景合成的侷限。不過,針對此問題,研究者在下圖 11 中也展示了利用已有模型對圖像背景進行修復的示例,從而證明了在大規模數據集上訓練的圖像修復模型的好處。

圖 11:背景修復。

最後,系統在 DensePose 檢測中容易出錯。如上圖 10(右)所示,DensePose 沒有檢測到她的手臂在前方。所以,合成模塊在結果中依然保留了她的手臂。

相關文章