1. 程式人生 > >Summary——Unite the People: Closing the Loop Between 3D and 2D Human Representations

Summary——Unite the People: Closing the Loop Between 3D and 2D Human Representations

這篇文章主要做兩件事:

  1. 造了一個體態估計資料集:UP-3D。主要藉助了改進的SMPLify方法和人工分揀。
  2. 體態估計:用UP-3D資料集分別預測人體31部分分割,91個landmarks。這意味著訓練集大小降低一個量級,訓練時間也降低一個量級,卻能夠保持良好的效能。

第一部分,構造資料集,下面是兩個準備工作:

(1)由2D圖片人物,用SMPLify方法生成的3D模型,是通過最小化目標函式實現的,這個目標函式包含一些項,可用來表現人物的姿態和體型。

本文也用SMPLify方法生成3D模型,但是對目標函式作了改造:

在目標函式上加以上一項,使得該方法生成的人的體型更加準確了。

而由於本文認為第二項的噪聲更大,所以第二項用的是L1距離。注意,第一項和第二項是不同的,看下面的示意圖:

                                                                          

順帶提一嘴,這張圖是我用win10自帶的畫圖畫的,現在畫圖已經這麼智慧了嗎哈哈哈哈哈哈。紅色的是3D模型的投影圖片\widehat{S},藍色的被遮蓋的圖片剪影S,此時S大於\widehat{S}

若圖片剪影大於3D模型的投影,且二者位置如圖,顯然此時第一項為0,第二項不為0了。

至於加入該項會對SMPLify方法有什麼影響?原本關節點間的長度是衡量人體型的唯一標準,這能表現出一個人的高大或者矮小,卻不能表現人的胖瘦程度,而用3D模型的投影和2D剪影做匹配,就能反映出這個資訊。

在這裡S表示的2D人物剪影,是用演算法自動生成的(至於什麼演算法論文正文沒有提到),為了更可靠,在此基礎上人工為2D剪影和人體分割的六個部分做了註釋。

(2)有了3D模型和與之對應的人物圖片集合,這裡再調節一下一些真值的關鍵點,是用下面的公式調整的:

                                        

猜測:本文假定人體的關節點的長度和size(不知道size和shape是不是都代表體型)之間呈偏態分佈,就在這裡用correct mean找到解,由我們已經推測出的人體size調整關節點的位置。

有了以上的準備就可以構造資料集了,步驟如下:

                                      

為四個現成的圖片資料集,LSP,LSP-extended和MPII-HumanPose,FashionPose生成3D的人體模型 ——》調整生成的關鍵點真值——》人工分揀表現良好的圖片加入資料集——》將這個初步資料集起名為UPI-3D。

有關人工分揀的部分,如下表所示,也就是這四個資料集裡的總共27000+張圖 ,以及生成的對應3D模型,真正能夠被人工挑選進UPI-3D資料集裡的,也就只有5000+張圖,其中1000+是作為測試集而存在的。

第二部分,用UPI-3D做體態估計。

現在我們有了一個數據集,就可以用它來做體態估計的網路訓練了,當然這也是蒐集該資料集的最終目的。本文後半部分的體態估計實驗,分別對人體的分割,關鍵點估計和3D人體進行預測。

在預測的時候,使用的是別人的網路DeeperCut CNN,沒有做任何改動,在UPI-3D上訓練,然後做了預測。

訓練DeeperCut CNN時,做了三次訓練作對比:

(1)原始資料集(LSP + LSP-extended + MPII-HumanPose = 52000+張圖片)

(2)UPI-P14h(有14個人工標註的關鍵點的訓練集,5500+張圖片)

(3)UPI-P91(SMPL生成的91個landmarks,也是5500+張圖片)

                                  

這裡最主要的結果,就是UP資料集作為訓練集時,數量比原始資料集減少了一個數量級,得到的效果卻是差不多的,有時甚至是更好一些,這意味著我們如果用UP資料集做體態估計,所用的時間會少得多,而得到的效果卻毫不遜色。

除此之外,在UPI-3D資料集上,又融合了Fashion Pose資料集作為補充,該資料集的關鍵點標註和以上三個資料集不同,它沒有脖子關節,頭頂的關鍵點是由鼻子代替的。為了融合該資料集,這裡調整fitting目標:為關鍵點加上鼻子,並將頭頂關鍵點從目標函式中移走。大功告成之後,就成為了真正的UP資料集,比起原來的UPI-3D資料集多了1500+張圖片。

最後的最後,關於closing the loop:

通過訓練3Dfitting的結果提升了,於是可以用提升的結果來擴大資料集。資料集擴大了以後,可以再次訓練,進一步提高3D飛艇結果,提升的結果再來擴大資料集。資料集擴大了以後,可以再次訓練,進一步提高3D飛艇結果,提升的結果再來擴大資料集。資料集擴大了以後,可以再次訓練,進一步提高3D飛艇結果,提升的結果再來擴大資料集。資料集擴大了以後,可以再次訓練,進一步提高3D飛艇結果,提升的結果再來擴大資料集。資料集擴大了以後,可以再次訓練,進一步提高3D飛艇結果,提升的結果再來擴大資料集。資料集擴大了以後,可以再次訓練,進一步提高3D飛艇結果,提升的結果再來擴大資料集。資料集擴大了以後,可以再次訓練,進一步提高3D飛艇結果,提升的結果再來擴大資料集。

哈哈哈,我把這句話複製了幾次,也就是說這是一個良性迴圈的過程,3Dfitting結果提升和資料集擴大相互促進。但是本文只是提了一嘴,沒有具體這麼做過。