姿態估計 Hourglass 網路

2021-09-11 07:50:04 字數 2518 閱讀 6481

本文是 eccv2016 的工作,主要是介紹了乙個在當時是新的姿態估計的網路結構。這裡主要是對整個網路的結構和思想進行乙個梳理,可以進一步明白後序一些基於此網路結構的工作(例如eccv2018 cornernet),不涉及到 姿態估計領域 的一些見解和討論,所以本文主要就是分為兩節,引出課題和介紹 hourglass 網路。

在姿態估計領域同樣有著多個嚴峻的挑戰。乙個好的估計系統必須對遮擋還有嚴重的變形有很好的魯棒性,能檢測出一些奇特的姿勢,包括對光照和衣服等變化的影響具有不變性。

本文提出 「stacked hourglass」 的網路來進行姿態估計,它可以獲取到所以尺度影象的資訊,因為網路結構的下取樣和上取樣操作,從結構上看像乙個沙漏(hourglass) 而得名,像其他卷積方法一樣,我們也將輸入下取樣到乙個很小的解析度,再上取樣,並將統一尺寸的特徵結合起來。另一方面,hourglass 網路由於它更對稱的拓撲結構又不同於之前的一些網路設計。

本文級聯了多個 hourglass 的結構並結合了中間監督的使用,重複的雙向推理對網路最後的效能至關重要。

隨著 deeppose 工作的提出,人們把姿態估計的目光從一些傳統方法轉向了深度網路。 deeppose 是直接對人體的關節點的座標 x,y 進行回歸。

單個 「horglass」 模組結構如下圖所示:

這裡的 「hourglass」 結構很像 fcn,結構最大的不同點就是更加對稱的容量分布(包括特徵從高解析度到低解析度,從低解析度到高解析度),可能其他工作,fcn 或者 holistically-nested 結構都是高解析度到低解析度(down-top)容量比較大(結構較複雜),低解析度到高解析度(top-down)就結構簡單。 這裡的結構也與一些做分割,樣本生成,去噪自編碼器,監督/半監督特徵學習等的結構很像,但是操作的本質不同, 「hourglass」 沒有使用 unpooling 操作或者是解卷積層,而是使用了最簡單的最近鄰上取樣和跨層連線來做 top-down(上取樣)。還有乙個不一樣的點是,本文工作堆疊了多個 「hourglass」 的結構來構建整個網路。

這裡為什麼要做多個 「hourglass」 結構的級聯?

文中指出相互關鍵點之間也是有關係的,知道了雙肩就更好**肘,知道了肘的位置就更好的**手的位置,而每乙個 「hourglass」 結構都很會產生乙個熱力圖**,這樣級聯起來,上乙個 「hourglass」 學習並**的關節點之間的聯絡也可以為下一級所用。

2.1 hourglass design

hourglass 結構的設計主要是源於想要抓住每個尺度資訊的需求。例如一些區域性資訊對識別一些特徵(例如臉,手等)很重要,而對於最後姿態的估計需要對整個身體有乙個好的理解,這就要抓住很多區域性的特徵資訊並結合起來。人的朝向,他們四肢的排列,相鄰關節的關係都是在不同尺度影象中最好辨認的。 而 hourglass 則是乙個簡單的,最小化的設計,有這個能力捕捉全部的特徵資訊並做出最後的畫素級別的**。

有的工作採用多分支的結構來達到整合多解析度的目的,本文則是採用單一網路+跨層連線來保留每乙個解析度的空間資訊,hourglass 結構最低會將特徵圖降到 4x4 的解析度。

top-down 階段: 採用卷積層 + maxpooling

因為要跨層連線,進行點加(element-wise addtion),所以它們對應解析度的通道數都是一樣的,這就成了更加對稱的結構。 最後輸出端用連續兩個 1x1 的卷積層來產生最後的輸出。

2.2 layer implementation

上面提出的 「hourglass」 只是乙個形狀像沙漏的結構,內部的實現細節還是很靈活的,文中也對一些結構進行了探索,例如從 googlenet,resnet 中學習的用連續的 3x3 代替 5x5,殘差結構, inception 結構等 ,最終定下的設計是使用:殘差結構,最大的卷積核不超過 3x3, 瓶頸結構。

整個網路如果直接使用 256x256 的解析度將會需要很大的 gpu 記憶體,所有最高的解析度以及最後輸出的解析度都是 64x64,這並不影響最後的結果。 整個網路從乙個卷積核大小是 7x7,stride=2 的卷積層開始,後面跟乙個殘差模組和乙個 max-pooling,讓解析度直接從 256 降到 64. 沙漏模組之前還是兩個殘差模組,所有的殘差模組的輸出都是 256 個通道。

2.3 stacked hourglass with intermediate supervision

上面提到為什麼做多個 「hourglass」 結構的級聯,並且每乙個級聯**的 heatmaps (上圖中藍色區域)都會與真值對比產生乙個 loss,最後將這些 loss 都加在一起,文中通過實驗證明了這樣做比只考慮最後乙個 loss 的結果要好很多,這種考慮網路中間部分輸出的訓練就是中間監督(intermediate supervision)

標記姿態估計

在三維空間中,可通過標記角點的精確位置來估計攝像機與標記之間的變換。此操作稱為二維到三維的姿態估計。該估計過程會在物體與攝像機之間找到乙個歐氏空間的變換 該變換僅由旋轉和座標平移構成 先來觀察右圖 圖中的c表示攝像機中心,點p1 p4是現實座標系中的三維點,而p1 p4是將點p1 p4投影到攝像機的...

人臉姿態估計

由於需要在採集的集中選擇與待識別人臉姿態最接近的與之進行對比,因此考慮使用人臉姿態估計計算人臉在三維空間的角度,然後找出與之最接近的角度。在網上查閱資料發現大多都是演算法介紹,缺少原始碼,最終在github上找到乙個基於dlib68點檢測和opencv計算角度的專案 head pose estima...

頭部姿態估計

通常認為人體頭部可以建模為乙個無實體的剛體物件。根據這種假設,在姿勢上人類的頭部被限制為3個自由度,其特徵分別是俯仰,坡度和偏航角在下圖中體現。人臉姿態估計,顧名思義,給定一張人臉影象,確定其姿態,姿態由什麼構成呢?很簡單 pitch,yaw,roll 三種角度,分別代表上下翻轉,左右翻轉,平面內旋...