基于沙漏網絡架構的視訊生成算法
技術概述
描述這個技術是做什麼的/什麼情況下會使用到這個技術,學習該技術的原因,技術的難點在哪裡。控制在50-100字内。
在視訊生成預測的方法中,傳統的視訊生成方法會出現複合誤差的傳遞,生成嚴重拖影。使用基于沙漏網絡架構的視訊生成算法來進行人體姿态估計(技術難點),利用神經圖靈機對人體姿态進行預測(技術難點),最後将姿态和背景結合生成視訊,進而獲得更精确的生成視訊。應用于視訊制作等領域中。
技術詳述
描述你是如何實作和使用該技術的,要求配合代碼和流程圖較長的描述。可以再細分多個點,分開描述各個部分。

實作一: 利用3D沙漏網絡架構來進行人體姿态估計
1.1沙漏網絡架構背景說明
準确的姿态估計是了解人類在圖檔或者視訊中行為的關鍵。對于一張單獨的 RGB 圖像, 我們希望可以準确定位出一些身體重要的關鍵點。對于人體姿态的了解及姿體結構對于高層任務,例如人機互動等是很重要的。
在姿态估計領域同樣有着多個嚴峻的挑戰。一個好的估計系統必須對遮擋還有嚴重的變形有很好的魯棒性,能檢測出一些奇特的姿勢,包括對光照和衣服等變化的影響具有不變性。
本文提出 “stacked hourglass” 的網絡來進行姿态估計,它可以擷取到是以尺度圖像的資訊,因為網絡結構的下采樣和上采樣操作,從結構上看像一個沙漏(hourglass) 而得名,像其他卷積方法一樣,我們也将輸入圖檔下采樣到一個很小的分辨率,再上采樣,并将統一尺寸的特征結合起來。另一方面,hourglass 網絡由于它更對稱的拓撲結構又不同于之前的一些網絡設計。
下面是單個的Hourglass Network工作原理。串聯的Stacked Hourglass相比單個網絡主要是複用全身關節資訊來提高單個關節的識别精度。
上圖就是原論文裡給出的HourGlass Model,跟2.2節中的網絡結構(c1-c7)相比,有兩個顯著不同:(1)右邊就像左邊的鏡像一樣,倒序的複制了一份(c4b-c1b),整體上看起來就是一個沙漏(2)上面也複制了一份(c4a-c1a),而且每個方塊還通過加号與右邊對應位置的方塊合并。
我們來分析下c4b這個網絡層,它是由c7和c4a合并來的,這裡有兩塊操作:
(1)c7層通過上采樣将分辨率擴大一倍,上采樣相當于pool層的反操作,為了将feature map的分辨率擴大,比如c7的kernel size為 4x4 ,那麼上采樣後得到的kernel size 為 8x8 。
(2)c4a層與c4層的大小保持一緻,可以看作是c4層的“副本”,它的kernel size 是c7的兩倍,剛好與被上采樣後的c7大小一緻,可以直接将數值相加,那麼就得到了c4b
用python僞代碼寫下來上述操作如下:
c7_up = up_sample(c7) # 1x4x4x256 -> 1x8x8x256
c4_a = residual(c4) # 1x8x8x256 -> 1x8x8x256
# c4_a相當于c4的副本,但是經過了一個residual處理
c4b = c4_a + c7_up # 1x8x8x256
接下來就是c3b這個網絡層,同樣的,先對c4b進行上采樣,然後與c3a合并,python僞代碼如下:
c4_up = up_sample(c4_b) # 1x8x8x256 -> 1x16x16x256
c3_a = residual(c3) # 1x16x16x256 -> 1x32x32x256
c3b = c3_a + c4_up # 1x16x16x256
1.2:沙漏式設計
Hourglas結構的設計主要是源于想要抓住每個尺度資訊的需求。例如一些局部資訊對識别一些特征(例如臉,手等)很重要,而對于最後姿态的估計需要對整個身體有一個好的了解,這就要抓住很多局部的特征資訊并結合起來。人的朝向,他們四肢的排列,相鄰關節的關系都是在不同尺度圖像中最好辨認的。 而 hourglass 則是一個簡單的,最小化的設計,有這個能力捕捉全部的特征資訊并做出最後的像素級别的預測。所有關節的預測是一起的,放在一個大的高維矩陣裡,上圖是為了示範才分開畫的。
[ px1_of_c1b ]->[socre_of_neck,score_of_wrist,socre_of_knee,... ]
[ px2_of_c1b ]->[score_of_neck,score_of_wrist,score_of_knee,... ]
# px1_of_c1b,px2_of_c1b 是特征層c1b上的兩個像素
# score_of_neck 是預測該點為頸部關鍵點的得分
1.3:層實作
上面提出的 “hourglass” 隻是一個形狀像沙漏的結構,内部的實作細節還是很靈活的,文中也對一些結構進行了探索,例如從 GoogLeNet,ResNet 中學習的用連續的 3x3 代替 5x5,殘差結構, Inception 結構等 ,最終定下的設計是使用:殘差結構,最大的卷積核不超過 3x3, 瓶頸結構。
1.4 :堆疊沙漏與中間監督
堆疊沙漏與中間監督上面提到為什麼做多個 “hourglass” 結構的級聯,并且每一個級聯預測的 heatmaps (上圖中藍色區域)都會與真值對比産生一個 loss,最後将這些 loss 都加在一起,文中通過實驗證明了這樣做比隻考慮最後一個 loss 的結果要好很多,這種考慮網絡中間部分輸出的訓練就是中間監督
給定單幀,我們希望獲得人體重要關節點的像素級定位。而傳統的沙漏網絡是基于單張圖檔進行人體姿态估計,沒有利用時間上前後幀的資訊。用上時間上前後幀的資訊可以更精确的對人體姿态進行估計,是以,我們的沙漏網絡在傳統的沙漏網絡上增加了時間依賴性。一個好的姿态估計系統要有很好的魯棒性,主要展現在已下幾個方面:
1.能夠對嚴重的遮擋或者變形的圖檔進行很好的人體姿态估計。
2.對圖檔中不常見的人體姿态能夠做出很好的人體姿态估計。
3.對圖檔中的光線和衣着打扮等對人物的外貌改變,不能影響網絡對人體姿态的估計。
為了增強圖檔效果,我們将圖檔進行了+/-30度的不同程度地旋轉操作,同時也對圖檔尺度進行0.75-1.25倍的變換.
實作二:利用神經圖靈機進行人體姿态預測
通過引入一個使用注意力程式進行互動的外部存儲器(external memory)來增強神經網絡的能力。神經圖靈機可以與圖靈機或者馮·諾依曼體系相類比,但每個組成部分都是可微的,可以使用梯度下降進行高效訓練。
相比LSTM,神經圖靈機擁有外部存儲,可以更好的存儲長時記憶,增強預測能力。
2.1:神經圖靈機(NTM)介紹
神經圖靈機通過将神經網絡與外部記憶資源耦合而對該神經網絡的能力進行了延展——它們可以通過注意(attention)過程與外部記憶資源互動。
這種組合的系統類似于圖靈機或馮·諾依曼結構,但它是端到端可微分的,使得其可以有效地使用梯度下降進行訓練。
初步的結果表明神經圖靈機可以根據輸入和輸出樣本推理得到基本的算法,比如複制、排序和聯想回憶(associative recall)。
RNN 相比于其它機器學習方法的突出之處在于其在長時間範圍内學習和執行資料的複雜轉換的能力。此外,我們都知道 RNN 是圖靈完備的,是以其有能力模拟任意程式,隻要連接配接方式合适即可。
标準 RNN 的能力被擴充以簡化算法任務的解決方案。這種豐富性主要是通過一個巨大的可尋址的記憶實作的,是以通過類比于圖靈的通過有線存儲錄音帶實作的有限狀态機(finite-state machine)的豐富性,其被命名為神經圖靈機(NTM)。
和圖靈機不同,神經圖靈機是一種可微分的計算機,可以通過梯度下降訓練,進而為學習程式提供了一種實用的機制。
關鍵在于,該架構的每個元件都是可微分的,使其可以直接使用梯度下降進行訓練。這可以通過定義「模糊(blurry)」的讀寫操作來實作,其可以或多或少地與記憶中的所有元素進行互動(而非像普通的圖靈機或數字計算機那樣處理單個元素)。
2.2神經圖靈機的優勢所在:
神經圖靈機擁有外部存儲,可以更好的存儲長時記憶,增強預測能力。
技術使用中遇到的問題和解決過程
要求問題的描述和解決有一定的内容,不能草草概括。要讓遇到相關問題的人看了你的部落格之後能夠解決該問題。
技術路線:
程式設計語言使用python,機器學習架構使用tensorflow
問題1:
現有視訊生成預測模型由于是實作像素級的預測,會出現複合誤差傳遞問題,使得模型生成視訊失真嚴重,不能很好地對視訊進行預測。
解決方法:我們希望能通過分級處理,來避免複合誤差傳遞。利用3D沙漏網絡來生成人體姿态,結合背景來生成視訊。
問題2:
利用LSTM來生成人體姿态,其所能記憶時長有限。
解決方法:引入神經圖靈機,增加外部記憶,用來更好的預測人體姿态估計。
預期成果:
生成的視訊能夠直覺看出人物運動趨勢。
總結
在視訊生成預測的方法中,傳統的視訊生成方法會出現複合誤差的傳遞,生成嚴重拖影。使用基于沙漏網絡架構的視訊生成算法來進行人體姿态估計,利用神經圖靈機對人體姿态進行預測,最後将姿态和背景結合生成視訊,進而獲得更精确的生成視訊。可将此模型應用于視訊修複,視訊平滑,電影制作等領域中。神經圖靈機擁有外部存儲,可以更好的存儲長時記憶,增強預測能力。生成的視訊能夠直覺看出人物運動趨勢。
列出參考文獻、參考部落格(标題、作者、連結)。
Newell, Alejandro, Kaiyu Yang, and Jia Deng. “Stacked hourglass networks for human pose estimation.” arXiv preprint arXiv:1603.06937 (2016).
C. L. Philip Chen, C. Y. Zhang*, L. Chen and M. Gan, “Fuzzy Restricted Boltzmann Machine for the Enhancement of Deep Learning,” IEEE Transactions on Fuzzy Systems, vol.23, no.6, pp.2163-2173, Dec. 2015.
C. Y. Zhang, C. L. Philip Chen, M. Gan and L. Chen, “Predictive Deep Boltzmann Machine for Multi-Period Wind Speed Forecasting,” IEEE Transactions on Sustainable Energy, vol.6, no.4, pp.1416-1425, Oct. 2015.
Stacked Hourglass Networks - 堆疊沙漏網絡結構詳解