【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失
代碼:
【Pytorch神經網絡實戰案例】28 GitSet模型進行步態與身份識別(CASIA-B數據集)_LiBiGor的博客-CSDN博客1 CASIA-B數據集本例使用的是預處理后的CASIA-B數據集, 數據集下載網址如下。 http://www.cbsr.ia.ac.cn/china/Gait%20Databases%20cH.asp該數據集是一個大規模的、多視角的步態庫。其中包括124個人,每個人有11個視角(0,18,36,...,180),在3種行走條件(普通、穿大衣、攜帶包裹)下采集。1.1 CASIA-B數據集的兩種形式CASIA-B數據集有視頻和輪廓兩種形式。1.1.1 案例講解本例直接..https://blog.csdn.net/qq_39237205/article/details/124141716
1 步態識別思路
1.1 步態識別的本質
步態特征的距離匹配,對人在多拍攝角度、多行走條件下進行特征提取,得到基于個體的步態特征,再用該特征與其他個體進行比較,從而識別出該個體的具體身份。
1.2 步態識別的主體思路
1.2.1 神經網絡的角度看待步態識別的數據集
在步態識別中,需要將一組圖片作為一個樣本。
從神經網絡的角度來看,步態識別的組圖片也只是在代表圖片[H,W,C]的基礎之上,多出一個張數的維度而已。
1.2.2 步態識別模型的數據處理的三種方式
整體處理:將輸入數據當作一個完整的3D圖片數據,來計算輸入數據在三維空間里所表現的整體特征。如對整體的輸入數據做3D卷積。
分散處理:將輸入數據當作由多張圖片組成的序列數據,先對單張圖片進行特征處理,再對序列數據特征進行處理。在分散處理的過程中,又可以分為重視序列順序關系(如基于慣性的步態識別)和不重視序列順序關系兩種做法。
混合處理:先對單張圖片進行基于人形特征的預處理(如提取人形輪廓數據、人的姿態數據),再將預處理后的數據當作原始輸入,進行二次處理(可以使用整體處理或分散處理)。混合處理模式更為細致,也更為靈活。
1.2?CASIA-B數據集
CASIA-B是使用最廣泛的步態數據集, 包含124人的RGB和輪廓形式的多視角步態數據。從11個不同的視角進行采集,范圍從0到180度,增量為18度。該數據集考慮了三種不同的行走條件,即正常行走(NM)、穿外套行走(CL)和攜包行走(BG),每個人每個視角分別有6、2和2個步態序列。
CASIA-B最常用的測試協議是受試者無關協議,該協議使用前74名受試者的數據進行訓練,其余50名受試者進行測試。然后將測試數據拆分為一個注冊集,其中包括NM步態數據中的前四個步態序列,驗證集由其余序列組成,即每個受試者每個視角的剩余2個NM、2個CL和2個BG序列,結果主要針對所有視角報告。
2 GaitSet模型
GaitSet模型屬于混合處理方式,該模型的二次處理部分使用了分散處理。
2.1 預處理
GaitSet模型的預處理部分,需要對視頻中抽離的圖片進行基于人物識別的語義分割,得到基于人形的黑白輪廓圖,如圖所示。
?2.1.1 輪廓圖的優點
通過將輪廓圖看作單通道圖片,實現基于人的多幀圖片被當作多通道圖片進行處理,即其形狀可以描述為[批次個數,幀數,高度,寬度] 與RGB狀為[批次個數,通道數,高度,寬度]相似。
2.2 特征處理
2.2.1?GitSet模型分散處理
GitSet模型采用分散處理,對每一張圖片計算特征,再對多個特征做聚合處理。
2.2.2?GitSet模型分散處理的核心部分
①多層全流程管線(Multlayer Global Pipeline,MGP)是一個類似FPN結構的網絡模型,通過兩個分支進行下采樣處理,并在每次下采樣之后進行特征融合。
②水平金字塔池化(HorizontalPyramid Matching,HPM)按照不同的水平尺度對特征數據進行池化,并將池化結果匯集起來,從而豐富數據的鑒別特征。
2.2.3?GitSet模型分散處理的訓練
在訓練時,將模型計算出的特征用三元損失(Triplet Loss)進行優化,使其計算出的特征與同類別特征距離更近,與非同類別特征距離更遠。
在使用時,具體步驟如下。
(1)對人物視頻進行抽幀采樣。
(2)對采樣數據進行處理,生成輪廓圖。
(3)將多張輪廓圖輸入模型得到特征。
(4)將該特征與數據庫中已有的特征進行比較,找到與其距離最近的特征,從而識別出人物身份。
3?完整GitSet模型流程圖
4?多層全流程管線
主要分為兩個分支:一個是主分支,另一個是輔助分支。
4.1 主分支
主分支用于對從視頻分離出來的多幀數據,基于全部圖片的特征進行處理。
采用兩次卷積+一次下采樣的操作進行特征計算與降維處理。
4.2 輔助分支
輔助分支用于對從視頻分離出來的多幀數據,某于幀的特征進行處理。
輔助分支與主分支的處理同步,并對每次下采樣后的數據講行特征提取,將提取后的幀特征融合到主分支的特征處理結果里。
4.3?多層全流程管線處理流程圖
(1)在主分支中,對每一幀數據進行卷積外理。
(2)在主分支中,對卷積處理的結果進行下采樣處理。
(3)將下采樣結果分為兩份,一份用于主分支,另一份用干輔助分支。
(4)在主分支中,對下采樣結果進行基于帖特征的提取。
(5)在主分支中,對第(4)步的結果做卷積損作。
(6)在輔助分支中,繼續對下采樣結果做卷積操作。
(7)在輔助分支的卷積操作之后,進行一次下采樣,并對下采樣結果講行基于特征的提取。
(8)在主分支中,也同步做一次下采樣。
(9)將第(6)和(7)步的結果融合起來。
(10)繼續重復第(5)~(9)步的步驟。重復次數與網絡規模和輸入尺寸右關其中第(4) 和(7) 步基于幀的特征提取部分使用了多特征集合池化(Set Pool in a)方法。經過測試發現直接使用取最天值池化的方法效果更好,而且該方法更為簡單。
第(9) 步融合特征的方式使用的是直接相加, 也可以用cat函數將其拼接在一起, 在本例中,使用的是簡單相加。
卷積神經網絡的不同層能夠識別不同的特征,通過深層卷積的組合,可以增大模型在圖片中的理解區域。同時在主管道中,融合了從不同層提取的幀級特征,使得模型計算的特征中含有更豐富的整體特征。?
5 水平金字塔池化
水平金字塔池化是來自行人再識別(Person Re-l dentification) 任務中的一種技術。它充分地利用了行人的不同局部空間信息,使得在重要部件丟失的情況下,仍能正確識別出候選行人, 增強了行人識別的健壯性(參見arXiv網站上編號為“1811.06186”的論文)。
5.1?行人再識別任務
行人再識別任務是從圖片或者視頻序列中找到特定行人的任務。
該任務屬于圖像檢索任務中的一種,常常與行人檢測、行人跟蹤任務一起被應用在智能視頻監控、智能安保等領域。
5.2?HPM模型的做法和原理
5.2.1?HPM模型的做法
將圖片按照不同的水平尺度分成多個部分, 然后將每個部分的全局平均池化和全局最大池化特征融合到一起。
5.2.2?HPM模型的結構
這種做法相當于引入了多尺度的局部信息互助作用來緩解不對齊引起的離群值問題。其中每個局部的信息通過全局平均池化與全局最大池化策略結合得到的融合特征更具有判別能力。
全局平均池化:可以感知空間條的全局信息,并將背景上下文考慮進去。
全局最大池化:實現提取最具判別性的信息并忽略無關信息(如背景、衣服等)。??
5.2.3?HPM模型在步態識別實例的作用
使用HPM模型作為整個網絡的最后部分, 對全連接層的特征進行優化,提升了特征的整體鑒別性。
6 三元損失
三元損失是根據3張圖片組成的三元組計算而得的損失 ,常用于基于樣本特征進行匹配的模型中,如人臉識別、步態識別、行人再識別等任務的模型中。
6.1 三元損失算法圖解
在每次提取特征時,同步輸入與該樣本相同類別和不同類別的兩個樣本。利用監督學習使該樣本特征與相同類別的樣本特征間的差異越來越小,與不同類別的樣本特征間的差異越來越大。
如上圖所示,通過監督學習,可以讓輸入樣本經過網絡計算之后的特征與相同類別的樣本特征距離更近,與不同類別的樣本特征距離更遠。
三元損失訓練的模型,最終將使相同類別的特征會更加相似,解決樣本特征指向不明確的問題。
6.2 三元損失的使用
在使用三元損失時,常會直接將一批次的輸入數據進行內部兩兩交叉,并從中分出正向樣本(類內距離)和負向樣本(類間距離)。這種方式可以保證與其他損失計算的接口統一,而又不需要額處開發選取正/負樣本的功能。
6.2.1?三元損失中的間隔margin
?6.2.2?三元損失的模式hard與full
full模式(默認):?對所有的正向樣本和負向樣本進行損失值的計算。
hard模式:只對最小的正向樣本和最大的負向樣本進行損失值的計算, 目的在于優化特征并使其指向偏離最大的樣本,運算量會更小。
總結
以上是生活随笔為你收集整理的【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorboard --logdir
- 下一篇: 数据结构之二叉树:折纸问题——11