本發明屬于計算機視覺和機器學習領域,涉及一種基于結構指導深度學習的人體姿態估計方法和系統。
背景技術:
人體姿態估計是定位出圖像中人體部位關節點所在位置的過程。人體姿態估計在計算機視覺領域有著非常重要的作用,是人機交互,虛擬現實,智能監控等應用的基礎。由于圖像中人的衣著,形狀,姿態,背景等的多樣性以及存在一些自我遮擋和其他人或物體遮擋的情況,準確地預測出圖像中的人體部位關節點非常具有挑戰性。
人體姿態估計方法主要有兩種:傳統的基于模型的方法和最近隨著深度學習興起的基于卷積神經網絡的方法。傳統的基于模型的方法主要是建立人體模型,然后人工提取特征,并用模型來建立特征間的聯系,較為典型的模型有PS模型,主要用樹結構來建立人體模型。由于基于人工提取特征的方法的準確率和魯棒性比較差,難以預測復雜的姿態,所以近年來人們開始使用在計算機視覺許多任務中都顯示出很好效果的深度學習技術來進行姿態估計。
目前,基于深度學習的人體姿態估計主要是直接通過一個卷積神經網絡來回歸出人體的關節點位置。具體是輸入圖像,進過卷積神經網絡的訓練得到關節點熱點圖,然后采用后續處理在熱點圖中找到最終的關節點位置。該方法雖然借助了深度學習技術,但是由于沒有充分利用人體自身的信息,一些復雜姿態,遮擋以及一些多人的干擾情況都無法得到解決。為了解決現有技術中存在的問題,需要提出一種新的方法。
技術實現要素:
本發明的主要目的在于解決現有技術存在的問題,提供一種基于結構指導深度學習的人體姿態估計方法和系統。
本發明一方面提供一種基于結構指導深度學習的人體姿態估計方法,包括如下步驟:
步驟1:輸入數據預處理;
步驟2:結構指導卷積神經網絡預測;
步驟3:融合卷積神經網絡預測;
步驟4:輸出處理。
進一步地,所述步驟1進一步具體為:首先將圖片進行縮放,使得其較長一邊的長度為一個固定值;其次,將較短一邊進行零填充,使得整個圖片為正方形;然后進行隨機左右翻轉;接著按一定的角度將圖片進行旋轉操作。在上述對圖片操作的同時,需要對真實的標記關節點位置作對應的處理。
進一步地,所述步驟2進一步具體為:將預處理后的圖片通過結構指導的卷積神經網絡來進行學習和 預測。這里結構指導指的是在一般的卷積神經網絡中融入人體骨架的結構信息,來指導神經網絡的學習。一般的人體姿態估計的神經網絡的回歸目標函數為:
表示一張由真實標記關節點為中心產生的真實標記的熱點圖。作為優選,其分布為高斯分布yk代表第k真實標記的關節點,(xk,yk)是yk在圖像中坐標點的值。(i,j)是真實標記的熱點圖中的每個像素點在圖中的位置。σ1是高斯分布的標準差。
結構指導的卷積神經網絡加入了骨架結構信息,這部分的目標函數為:
表示由兩個相鄰的真實標記關節點的連線為中心產生的高斯分布的真實標記熱點圖。pi表示相鄰關節點之間的連線,1是這些連線相應的序號,這些連線對應于不同的人體模型,作為優選,可以采用樹形結構的人體模型,相應的連線即位樹形結構人體模型的邊;dist((i,j),pl)表示真實標記的熱點圖中的每個點(i,j)到pl的距離。σ2是該高斯分布的標準差。
用l1表示關節點對應的熱點圖的損失函數,用l2表示關節點連線對應的熱點圖的損失函數:
其中,X是輸入圖像,y是真實標記的關節點,p是相鄰真實標記的關節點的連線,D是整個訓練數據集;(i,j)表示熱點圖中的每個像素點的坐標;k和l分別表示y的序號和p的序號。Hi,j,k(X,w)表示神經網絡預測輸出的相應的第k關節點的熱點圖,Pi,j,l(X,w)表示神經網絡預測輸出的相應的第1關節點連線的熱點圖,w表示卷積神經網絡的參數。
結構指導卷積神經網絡的總的損失函數loss1為:
loss1=l1+l2.
進一步地,所述步驟3進一步具體為:將結構指導卷積神經網絡的低層級特征層和高層次特征層進行融合,送入另外一支卷積神經網絡中進行學習和預測,低層次特征層包含更多的圖像細節,高層次特征層則提供預測的初步結果。
結構指導神經網絡引入了人體結構約束信息,提供給融合卷積神經網絡一個初步結果,并指導融合卷積網絡的學習.融合卷積神經網絡的目標函數為損失函數loss2為:
loss2=l1
整個神經網絡總的損失函數losst為:
losst=loss1+λloss2
λ是平衡loss1和loss2的常數。
進一步地,所述步驟4進一步具體為:將融合卷積神經網絡的最終輸出的熱點圖進行后續處理,得到最終關節點的位置。分別對每個關節點對應的熱點圖處理,即可得到預測出的全部的人體關節點的位置。
根據本發明的另一方面,提供一種基于結構指導深度學習的人體姿態估計系統,包括如下模塊:
數據采集模塊,主要是通過相機得到包含有人體的圖片;
計算機處理模塊,包括:a.圖像預處理子模塊,b.結構指導卷積神經網絡子模塊,c.融合卷積神經網絡子模塊,d.定位關節點子模塊和e.可視化子模塊。
a.圖像預處理子模塊:將輸入圖像首先進行預處理,包括縮放,裁剪,零填充,翻轉和旋轉等操作。需要注意的是,對于測試圖片,或者實際使用時只需要做縮放,裁剪和零填充以滿足圖片為正方形即可,不需要翻轉和旋轉.
b.結構指導卷積神經網絡子模塊:將預處理后的圖片送入卷積神經網絡進行學習,通過在卷積神經網絡中加入人體結構信息,進行指導學習,最終預測出人體關節點和關節點之間連線的熱點圖。
c.融合卷積神經網絡子模塊:將結構指導卷積神經網絡模塊的低層級特征層和高層次特征層進行融合作為輸入,通過另一支卷積神經網絡學習,輸出最終的人體關節點的熱點圖。
d.定位關節點子模塊:通過對神經網絡輸出的人體關節點熱點圖進行后續處理,得到最終的關節點標。對每個關節點的熱點圖進行處理,最終得到全部的人體關節點的位置。
e.可視化子模塊:該模塊主要用在測試或者實際應用中。神經網絡訓練完成后,即可用來測試和實用。對一張輸入圖片,神經網絡預測出人體的各個關節點位置。將關節點疊加顯示在輸入圖片上呈現可視化的預測結果。
本發明將人體的骨架信息融于深度卷積神經網絡中來指導神經網絡的學習,從而可以隱含地學習出人體模型,克服了利用神經網絡直接預測帶來的準確率低,魯棒性差的缺點,提高了關節點的預測準確率。由于結構信息的引入,本發明對復雜姿態以及一些遮擋情況均能有效預測出準確位置。
附圖說明
附圖說明用于提供對本發明技術方案的進一步理解,并構成說明書的一部分,與本發明的實施一起用于解釋本發明的技術方案,并不構成對本發明技術方案的限制。附圖說明如下:
圖1是本發明方法的流程圖。圖2是本發明系統的硬件組成圖。
具體實施方式
以下結合附圖,對本發明的優選實施例進行詳細的描述:應當理解,優選實施例僅為了說明本發明, 而不是為了限制本發明的保護范圍。
如圖1所示,本發明基于結構指導深度學習的人體姿態估計方法,包括如下步驟:
步驟1:輸入數據預處理。
首先將圖片進行縮放,使得其較長一邊的長度為一個固定值,優選地為256;其次,將較短一邊進行零填充,使得整個圖片為正方形;然后,進行隨機左右翻轉;接著,按一定的角度將圖片進行旋轉操作,優選地,每10度旋轉一次,最大旋轉180度。在上述對圖片操作的同時,需要對真實的標記關節點位置作對應的處理。
步驟2:結構指導卷積神經網絡預測。
將預處理后的圖片通過結構指導的卷積神經網絡來進行學習和預測。作為優選,結構指導神經網絡共有14個卷積層,用Conv1到Conv14表示。優選地,其各層參數設置具體為:
其中,核表示卷積操作核的大小,步長表示卷積操作的步長,個數表示卷積核的輸出個數;對池化層Pooling有類似的含義。Dropout層沒有這些參數。k+1表示總的熱點圖數,包括所有k個關節點的和所有1個關節點連線的熱點圖。
這里結構指導指的是在一般的卷積神經網絡中融入人體骨架的結構信息,來指導神經網絡的學習。一般的人體姿態估計的神經網絡的回歸目標函數為:
表示一張由真實標記關節點為中心產生的真實標記的熱點圖。作為優選,其分布為高斯分布yk代表第k真實標記的關節點,(xk,yk)是yk在圖像中坐標點的值。(i,j)是真實標記的熱點圖中的每個像素點在圖中的位置。σ1是高斯分布的標準差,可由驗證集得出合適數值,作為優選可從{1.5,2.5}中選擇。
結構指導的卷積神經網絡加入了骨架結構信息,這部分的目標函數為:
表示由兩個相鄰的真實標記關節點的連線為中心產生的高斯分布的真實標記熱點圖。pl表示相鄰關節點之間的連線,1是這些連線相應的序號,這些連線對應于不同的人體模型,作為優選,可以采用樹形結構的人體模型,相應的連線即位樹形結構人體模型的邊;dist((i,j),pl)表示真實標記的熱點圖中的每個點 (i,j)到pl的距離。σ2是該高斯分布的標準差,可由驗證集得出合適的數值,作為優選可從{1.5,2.5}中選擇。
用l1表示關節點對應的熱點圖的損失函數,用l2表示關節點連線對應的熱點圖的損失函數:
其中,X是輸入圖像,y是真實標記的關節點,p是相鄰真實標記的關節點的連線,D是整個訓練數據集;(i,j)表示熱點圖中的每個像素點的坐標;k和l分別表示y的序號和p的序號。Hi,j,k(X,w)表示神經網絡預測輸出的相應的第k關節點的熱點圖,Pi,j,l(X,w)表示神經網絡預測輸出的相應的第1關節點連線的熱點圖,w表示卷積神經網絡的參數。
結構指導卷積神經網絡的總的損失函數loss1為:
loss1=l1+l2
步驟3:融合卷積神經網絡預測。
將結構指導卷積神經網絡的低層級特征層和高層次特征層進行融合,送入另外一支卷積神經網絡中進行學習和預測,低層次特征層包含更多的圖像細節,高層次特征層則提供預測的初步結果。作為優選,這里選擇Conv5和Conv13進行融合。作為優選,融合卷積神經網絡共有6個卷積層,整個融合卷積神經網絡的設置如下表:
其中,k的值為最終的需要預測的關節點個數。
結構指導神經網絡引入了人體結構約束信息,提供給融合卷積神經網絡一個初步結果,并指導融合卷積網絡的學習。融合卷積神經網絡的目標函數為損失函數loss2為:
loss2=l1
整個神經網絡總的損失函數losst為:
losst=loss1+λloss2
λ是平衡loss1和loss2的常數,可以通過驗證集選出最優的值。
步驟4:輸出處理。
將融合卷積神經網絡的最終輸出的熱點圖進行后續處理,得到最終關節點的位置。作為優選,這里采用一種簡單的搜索熱點圖中最大值的方法,搜索出的最大值作為最終的預測的關節點位置。分別對每個關 節點對應的熱點圖搜索最大值,即可得到預測出的全部的人體關節點的位置。
如圖2所示。本發明基于結構指導深度學習的人體姿態估計系統,包括如下模塊:
201數據采集模塊,主要是通過相機得到包含有人體的圖片;
202計算機處理模塊,包括:a.圖像預處理子模塊,b.結構指導卷積神經網絡子模塊,c.融合卷積神經網絡子模塊,d.定位關節點子模塊和e.可視化子模塊。
a.圖像預處理子模塊:將輸入圖像首先進行預處理,包括縮放,裁剪,零填充,翻轉和旋轉等操作.需要注意的是,對于測試圖片,或者實際使用時只需要做縮放,裁剪和零填充以滿足圖片為正方形即可,不需要翻轉和旋轉。
b.結構指導卷積神經網絡子模塊:將預處理后的圖片送入卷積神經網絡進行學習,通過在卷積神經網絡中加入人體結構信息,進行指導學習,最終預測出人體關節點和關節點之間連線的熱點圖。
c.融合卷積神經網絡子模塊:將結構指導卷積神經網絡模塊的低層級特征層和高層次特征層進行融合作為另一支卷積神經網絡的輸入,通過另一支卷積神經網絡學習,輸出最終的人體關節點的熱點圖。作為優選,這里選擇結構指導卷積神經網絡中的Conv5和Conv13進行融合。
d.定位關節點子模塊:通過對神經網絡輸出的人體關節點熱點圖進行后續處理,得到最終的關節點坐標值。作為優選,后續處理可以采用搜索最大值的方法。對每個關節點的熱點圖進行處理,最終得到全部的人體關節點的位置。
e.可視化子模塊:對一張輸入圖片,神經網絡預測出人體的各個關節點位置。將關節點疊加顯示在輸入圖片上呈現可視化的預測結果。
本領域的技術人員應該明白,上述的本發明的系統結構和各個步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置組成的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲在存儲裝置中由計算裝置來執行,或者將他們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本發明不限制于任何特定的硬件和軟件結合。
雖然本發明所示出和描述的實施方式如上,但是所述的內容只是為了便于理解本發明而采用的實施方式,并非用以限定本發明。任何本發明所屬技術領域內的技術人員,在不脫離本發明所揭露的精神和范圍的前提下,可以在實施的形式上以及細節上做任何的修改與變化,但本發明的專利保護范圍,仍須以所附的權利要求書所界定的范圍為準。