優化該二分圖即在所有邊中選擇一組邊使得最終二分圖的總權重最大,所以目標函數可寫為:
約束條件:
其中Ec為二分圖優化之後肢體c的權重,我們要取其中總權重之和最大的;Fig.11: 算法效果
問題分解與簡化
為擴展到多人所有骨點的最優化問題,即定義Z為K 維匹配問題,這是一個NP-hard問題,為了提高最優化效率,如圖所示,本文採用兩種方法降低二分圖優化算法的複雜度。
首先,如圖所示,剔除跨骨點之間的連接構成稀疏二分圖,代替全連接二分圖;然後根據肢體將稀疏後的二分圖拆解得到圖所示的多個簡化二分圖。因此,整體優化問題轉化為對各個簡化後的二分圖進行最優化。而最優化的目標函數為所有簡化二分圖的權重之和達到最大:
優化之後將各個簡化二分圖中共同的骨點進行整合得到最終多人人體姿態估計。這樣做的優點是將NP-hard問題轉化為多個較容易求解的二分圖最優化,可以有效逼近全局最優解,同時降低算法複雜度,提高算法的運行效率,達到實時多人姿態估計的目的。
Fig.13: 站長的算法筆記(可添加站長微信領取)
實驗所使用的顯卡為NVIDIA TITAN XP,CPU為Intel i7-6900K。圖像大小為1920× 1080,通過下採樣方法額外獲得1280 × 720 和720 × 480 兩個低解析度的視頻。
首先分析運行效率與人數的關係,在相同視頻流和相同分辨情況下,計算自頂向下與自底向上運行時間與人數關係,計算結果如圖14所示。由圖可知,自頂向下隨著人數的增加耗時幾乎呈線性增加,而自底向上的運行耗時幾乎不隨人數增加而遞增。卷積神經網絡預測關節點的耗時也幾乎不隨人數增加而增加。因此我所使用的自底向上算法的運行效率不受行人數量的影響,對人數不確定的情況依然可以實時進行多人姿態估計。
Fig.14: 實驗的運行耗時
最後,對三種解析度視頻採用兩種不同方法進行耗時分析,結果如表所示,隨著解析度的降低,處理速度越來越快。若對視頻所有幀都進行關節點檢測,在最高解析度情況下每秒可處理23幀,人眼感覺不到卡頓,基本達到實時。如果採用間隔檢測結合跟蹤,幀率可提高十幾幀,完全達到實時要求。
以下是我採用深度學習算法(Openpose)最終的實驗結果:
Fig.15: 一次旅遊haha
總體而言,效果還算很nice的,關節點都檢測出來了,Great!(羞澀的我)
能閱讀到這裡,說明你也是個踏踏實實的做研究的人了。此時,我們娛樂時間到了,讓我們來段測試視頻放鬆放鬆下:
六階段雙分支網絡結構在關節點預測精度上略高於現有傳統的的人體姿態估計算法。本次站長採用的算法利用自底向上的思想,首先預測出所有骨點位置,並將骨點連接形成圖結構,通過圖優化實現多人體姿態估計。算法運行效率方面,由於網絡同時預測出關節點位置和關節點之間的空間關係,為多人姿態估計算法提供更加稀疏的二分圖,降低二分圖優化複雜度而達到了實時的效果。
參考文獻