來自云從科技和上海交通大學(xué)的研究者近期提出一種新型框架 DenseBody,可直接從一張彩色照片中獲取 3D 人體姿勢和形狀,。該研究設(shè)計(jì)了一種高效的 3D 人體姿勢和形狀表示,,無需中間表示和任務(wù),端到端地實(shí)現(xiàn)從單個圖像到 3D 人體網(wǎng)格的生成,。
多年以來,,如何從單一圖像估計(jì)人體的姿勢和形狀是多項(xiàng)應(yīng)用都在研究的問題。研究者提出不同的方法,,試圖部分或者聯(lián)合地解決此問題,。本文將介紹一種端到端的方法,使用 CNN 直接從單個彩色圖像重建完整的 3D 人體幾何,。
該領(lǐng)域的早期研究使用迭代優(yōu)化方法從 2D 圖像估計(jì)人體姿勢和形狀信息,,一般通過不斷優(yōu)化估計(jì)的 3D 人體模型來擬合一些 2D 的觀測結(jié)果,比如 2D 關(guān)鍵點(diǎn) [4] 或者輪廓 [11],。
隨著深度學(xué)習(xí)的崛起,,很多研究試圖用 CNN 以端到端的方式解決該問題,其中有些已經(jīng)達(dá)到了更好的性能和更快的運(yùn)行速度,。但是,,用 CNN 直接預(yù)測完整的人體網(wǎng)格并不簡單,因?yàn)橛?xùn)練這樣的模型需要大量的 3D 標(biāo)注數(shù)據(jù),。
近期研究大都結(jié)合了某些參數(shù)化的人體模型,,如 SMPL [13],轉(zhuǎn)而去預(yù)測這些模型的參數(shù) [9],。[22,27] 借由關(guān)節(jié)或分割輸出的幫助改善性能,。這種基于模型的 3D 表示形式將 3D 人體形狀限制在低維線性空間里,使其更容易通過 CNN 模型學(xué)習(xí),,但由于線性模型的限制,,其性能可能無法達(dá)到最優(yōu)。
[39] 提議使用一種體積表示(volumetric representation)來估計(jì)人體形狀,,展現(xiàn)了一定的優(yōu)點(diǎn),,在此過程中預(yù)測的 3D 關(guān)節(jié)位置被作為中間結(jié)果輸出。
雖然 3D 表示有多種選擇,,但近期基于 CNN 的方法大都依賴于某些中間 2D 表示和損失函數(shù)來引導(dǎo)訓(xùn)練過程,。
在這些方法中,單個 RGB 圖像到 3D 人體網(wǎng)格的映射問題被分解為兩步:首先得到某些類型的 2D 表示,比如關(guān)節(jié)熱圖,、掩碼或 2D 分割,;然后基于這些中間結(jié)果預(yù)測 3D 表示 [16,5]。這些研究所選擇的中間表示以及解決這些子任務(wù)的神經(jīng)網(wǎng)絡(luò)的輸出質(zhì)量,,很大程度上會影響它們的最終效果,。
云從科技的這項(xiàng)研究提出了一種高效的方法,從單個 RGB 圖像中直接得到完整的 3D 人體網(wǎng)格,。
這個方法和其他研究的主要區(qū)別有以下兩個方面:首先,,該研究提出的網(wǎng)絡(luò)沒有結(jié)合任何參數(shù)化的人體模型,因此該網(wǎng)絡(luò)的輸出不會受到任何低維空間的限制,;其次,,該方法的預(yù)測過程是一步到位的,沒有依賴于中間任務(wù)和結(jié)果來預(yù)測 3D 人體,。該研究在多個 3D 人體數(shù)據(jù)集上評估了這一方法,,并將其與之前研究中的方法做了對比。
評估結(jié)果表明該方法的性能遠(yuǎn)超其他結(jié)果,,且運(yùn)行速度更快,。
該研究的主要貢獻(xiàn)如下:
提出了一個端到端的方法,從單個彩色圖像直接得到 3D 人體網(wǎng)格,。為此,,研究者開發(fā)了一種新型 3D 人體網(wǎng)格表示,。它能夠把 2D 圖像中的完整人體編碼為姿勢和形狀信息,,無需依賴任何參數(shù)化的人體模型。
把 3D 人體估計(jì)的復(fù)雜度從兩步降到了一步,。該研究訓(xùn)練了一個編碼器-解碼器網(wǎng)絡(luò),,可直接把輸入 RGB 圖像映射到 3D 表示,無需解決任何中間任務(wù),,如分割或 2D 姿態(tài)估計(jì),。
進(jìn)行了多次實(shí)驗(yàn)來評估以上方法的效果,并與現(xiàn)有的最優(yōu)方法進(jìn)行對比,。結(jié)果顯示,,該方法在多個 3D 數(shù)據(jù)集上實(shí)現(xiàn)了顯著的性能提升,運(yùn)行速度也更快,。
圖 1:示例結(jié)果,。
論文:DenseBody: Directly Regressing Dense 3D Human Pose and Shape From a Single Color Image
論文地址:https://arxiv.org/pdf/1903.10153.pdf
摘要:由于人體的高度復(fù)雜性和靈活性,以及 3D 標(biāo)注數(shù)據(jù)相對較少,,從 2D 圖像得到 3D 人體姿勢和形狀可謂是一個難題,。之前的方法大體上依賴于預(yù)測中間結(jié)果,比如人體分割、2D/3D 關(guān)節(jié),、以及輪廓掩碼,,將當(dāng)前問題分解成多個子任務(wù),從而利用更多 2D 標(biāo)簽或者結(jié)合低維線性空間內(nèi)的參數(shù)化人體模型來簡化問題,。
在本文中,,我們提出使用卷積神經(jīng)網(wǎng)絡(luò)(CNN),直接從單個彩色圖像得到 3D 人體網(wǎng)格,。我們設(shè)計(jì)了一種高效的 3D 人體姿勢和形狀表示,,可以通過編碼器-解碼器結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)獲得。實(shí)驗(yàn)表明我們的模型在多個 3D 人體數(shù)據(jù)集上達(dá)到了當(dāng)前最優(yōu)性能,,同時運(yùn)行速度更快,。數(shù)據(jù)集包括 Human3.6m、SURREAL 和 UP-3D,。
3. 本文提出的方法
3.1 3D 人體表示
之前的研究通常使用 SCAPE 和 SMPL 這樣的可變形模型和體素來表示 3D 人體幾何結(jié)構(gòu),。本文提出的方法則用 UV 位置映射圖來表示 3D 人體幾何結(jié)構(gòu),其有如下優(yōu)點(diǎn):首先,,它能保存點(diǎn)和點(diǎn)之間的空間鄰接信息,,相比一維的向量表示,該信息對精確重建更為關(guān)鍵,;其次,,相比體素這樣的 3D 表示,它的維數(shù)更低,,因?yàn)轶w素表示法中,,大量不在表面上的點(diǎn)其實(shí)用處不大;最后,,這是一個 2D 表示,,所以我們能直接使用現(xiàn)成的 CNN 網(wǎng)絡(luò),例如 Res-net 和 VGG,,使用計(jì)算機(jī)視覺領(lǐng)域的最新進(jìn)展,。
在人體重建領(lǐng)域,UV 映射圖作為一種物體表面的圖片表達(dá)方式,,經(jīng)常被用來渲染紋理圖,。在這篇論文里,我們嘗試使用 UV 映射圖來報(bào)答人體表面的幾何特征,。大多數(shù)的 3D 人體數(shù)據(jù)集提供的三維標(biāo)注是基于 SMPL 模型的,,SMPL 模型本身提供了一個自帶的 UV 映射圖,把人體切分成了 10 個區(qū)域,。
DensePose 里面提供了另一種人體切分的方式,,并提供了一個 UV 映射圖,,將人體切分成了 24 個區(qū)域。我們實(shí)驗(yàn)了兩種切分方式,,SMPL 的 UV 映射圖獲得了更好的實(shí)驗(yàn)結(jié)果,。因此,在我們的方法中,,我們采用這個 UV 映射圖來存儲整個人體表面的三維位置信息,。
圖 2 展示了不同分辨率下 UV 位置映射圖的頂點(diǎn)變形和重采樣時引入的誤差??紤]到當(dāng)前最優(yōu)方法的全身精度誤差(surface error)和關(guān)節(jié)精度誤差(joint error)在幾十毫米的數(shù)量級,,我們選擇了 256 的分辨率,它引入的 1 毫米全身精度誤差可以忽略不計(jì),。另外,,256 分辨率的 UV 映射圖能夠表示六萬多個頂點(diǎn),遠(yuǎn)多于 SMPL 的頂點(diǎn)數(shù),。
圖 2:在不同的 UV 位置映射圖分辨率下,,由于變形和重采樣引入的全身精度誤差和關(guān)節(jié)精度誤差,單位為毫米,。
3.2 網(wǎng)絡(luò)和損失函數(shù)
我們的網(wǎng)絡(luò)采用編碼器-解碼器結(jié)構(gòu),,輸入是 256*256 的彩圖,輸出是 256*256 的 UV 位置映射圖,,其中編碼器部分使用 ResNet-18,,解碼器是由四層上采樣和卷積層組成。
不同于以前的方法中需要仔細(xì)設(shè)計(jì)和融合多種不同損失函數(shù)的做法,,我們直接針對預(yù)測的 UV 位置映射圖進(jìn)行監(jiān)督和設(shè)計(jì)損失函數(shù) (見表 2),。為了平衡不同的身體區(qū)域?qū)τ?xùn)練的影響,我們采用了權(quán)重掩模圖來調(diào)整損失函數(shù),。此外,,關(guān)節(jié)點(diǎn)附近的點(diǎn)的權(quán)重也進(jìn)行了加重,。
表 1:不同方法中采用的損失函數(shù),。
圖 3:不同方法的框架與 DenseBody 對比。
3.3 實(shí)現(xiàn)細(xì)節(jié)
所有的圖像都先做了對齊,,使人位于正中,。然后通過裁剪和縮放調(diào)整到 256x256,使得緊湊的邊界框和圖像邊緣之間距離適中,。圖像經(jīng)過了隨機(jī)的平移,、旋轉(zhuǎn)、翻轉(zhuǎn)和色彩抖動,。我們要注意,,數(shù)據(jù)增強(qiáng)的操作大都不簡單,,因?yàn)閷?yīng)的真值數(shù)據(jù)也要進(jìn)行相應(yīng)的形變。
而當(dāng)隨機(jī)形變后的人體超過了 256x256 的畫布,,則該增強(qiáng)操作無效,。我們用正交投影來得到位置映射圖的 x-y 坐標(biāo),以避免深度信息的誤差傳播,。真值數(shù)據(jù)的深度信息要經(jīng)過適當(dāng)縮放,,以控制在 sigmoid 輸出的值域里。
我們使用 Adam 優(yōu)化器,,學(xué)習(xí)率為 1e-4,,mini-batch 的大小為 64,訓(xùn)練直到收斂為止(大概 20 個 epoch),。在單個 GTX 1080Ti GPU 上訓(xùn)練大約 20 個小時,。代碼實(shí)現(xiàn)基于 Pytorch。
4. 實(shí)驗(yàn)
表 2:在 SURREAL 上的實(shí)驗(yàn)結(jié)果,,全身精度誤差和關(guān)節(jié)精度誤差以毫米為單位,。
表 4:UP-3D 上的實(shí)驗(yàn)結(jié)果。全身精度誤差和關(guān)節(jié)精度誤差以毫米為單位,。
表 5:在單個 GTX1080TI 上的前向運(yùn)行時,,以毫秒為單位。1 表示在 TITAN X GPU 上運(yùn)行,。