github:
gaitset是一種針對步態識別問題提出的模型,其切入角度新穎,模型靈活性高,速度快,且效能優秀。下面先介紹一下步態識別任務的基本資訊(內容**於網路查詢和本**的introduction、related work部分),然後再介紹gaitset架構。
步態識別任務和傳統行人reid任務類似,即給定註冊樣本和驗證樣本,找出驗證樣本中和註冊樣本具有相同身份的那些樣本。常用資料集如ou-isir mvlp/lp、casia-b等。步態識別中每個目標的樣本是一段連續序列,且一般是剪影圖(silhouette,或者譯為輪廓圖),其示例如下圖(figure1)。
步態識別可以在一定距離下進行識別,且不需要目標的配合(這相比人臉識別、指紋識別等具有更廣泛的應用場景,比如犯罪預防、社會治安等)。不過,步態識別會受一些外部因素的干擾,如目標行走速度、衣著、相機視角、幀率等。
當前主流的步態識別方法分為兩類:基於模板(template-based)和基於序列(sequence-based)。前者將所有步態剪影圖壓縮為單張或步態模板,而後提取其步態特徵並進行匹配(識別);後者則是直接將剪影序列作為輸入來提取特徵(比如基於3d cnn或lstm)。顯然,後者引入了更豐富的空間資訊,且加入了時序資訊,不過與此同時帶來了較高的計算代價。
2.1 casia-b(
casia-b是乙個比較經典的步態識別資料集(2006),其包含124個目標(subjects),每個目標有3種步**況和11個角度。3種步**況指「normal(nm)」、「walking with bag(bg)」、「wearing coar or jacket(cl)」,其中每個目標有6段nm序列、2段bg序列、2段cl序列。11個角度是指0°、18°、…、180°。因此,這124個目標中,每個目標都有11×(6+2+2)=110段序列。經我觀察,每段序列長度不定,一般80~100幀。
另外,該資料集沒有官方的劃分訓練集和驗證集,一般的做法是使用三種劃分方法:
(a)small-sample training(st):訓練集24個目標,驗證集100個目標;
(b)medium-sample training(mt):訓練集62個目標,驗證集62個目標;
(c)large-sample training(lt):訓練集74個目標,驗證集50個目標。
並且,在測試集中,將4段nm序列作為gallery,剩餘的2段nm、2段bg、2段cl作為三組probe。
2.2ou-mvlp(上文中提到,當前步態識別方法主要是template-based和sequence-based。template-based方法會導致時序資訊得不到利用,sequence-based方法則會由於引入了時序約束從而丟失了靈活性。本文的gaitset並不屬於上面的兩類,而是一種將步態序列視為一組無序集合來處理的方法。這種處理的好處是:
(a)靈活(對輸入目標步態圖的次序、連續性、場景等沒有約束);
(b)速度快(模型直接計算步態特徵而非計算步態間的相似度,也就是每乙個樣本的特徵只需要計算一次);
(c)效果好(詳見後文的結果圖)。
至於為何能將步態序列視為無序集合,作者做了如下推理:
通過觀察,處於不同位置的剪影圖其外觀也不同(見figure1)。即使我們將這些剪影圖打亂順序,還是可以單憑外觀特徵來將其重新排列回原本的順序。因此,作者假設,剪影圖的外觀中已經包含了其位置資訊,不需要在輸入時候再強加順序資訊了。gaitset模型的整體設計架構可以分成三個部分,整體框架見figure 2(乍一看圖比較複雜,其實思路很清晰):
(a)幀級特徵提取(frame-level):用cnn網路提取幀級特徵,維度(n,c,w,h);
(b)集合特徵聚集(set-level):將幀級特徵聚合為集合級特徵,維度(c,w,h);
(c)區別性特徵對映(discriminative):將集合級特徵對映為最終的m維特徵,使其更具有區分性從而便於計算相似度。
set pooling用於將幀級特徵聚合為集合特徵,即將(n,c,w,h)維度的特徵聚合為(c,w,h)維度。該功能(函式)需要滿足兩點:1)排列不變性,即該函式的輸出與輸入變數的順序無關(因為gaitset就是將輸入視為無序集合);2)輸入集合大小任意,即該函式可以接受任意尺寸的n作為輸入維度。
作者提出了set pooling的備選策略:
(a)統計函式:max()、mean()、median();
(b)聯合函式:將上述統計函式進行結合,比如對其輸出進行拼接(concatenate)並用conv1×1來學習更好的結合權重;
(c)注意力機制:為上述的聯合函式再引入注意力機制,其結構見figure 3。
注:經過實驗,作者最終選用max()函式作為set pooling的實現方法,因為其結構簡明且效果也足夠好。
5.3 multilayer global pipeline
mgp的設計動機是,cnn中不同層具有不同的感受野,作者使用mgp結構來彙總不同層下的集合資訊來提取特徵。其結構和網路的主體部分相似,只是會不斷加入主體網路不同層下的集合資訊。
gaitset在casia-b和ou-mvlp上都取得了很好的結果,另外作者也做了消融實驗來驗證其架構的合理性。下面呈現其在casia-b上的結果以及消融實驗結果。
另外,作者也通過實驗驗證了gaitset擁有較強的實用性,具體為:
(a)當輸入步態圖不完整而是斷斷續續時,模型效果受影響較小;
(b)當輸入步態圖包含不同視角時,有助於提公升模型效能;
(c)當輸入步態圖包含不同步**況時(nm、bg、cl),模型仍能提取有效特徵。
本文中作者用一種新穎的視角來看待步態識別問題,gaitset能「有效且高效」地提取「空間和時間」特徵,從而獲得了優秀的效能。最後作者也證明,gaitset的實用性也很強,其寬鬆的輸入限制可以使其獲得更廣泛的應用場景。作者對問題的推理假設很精彩,行文思路也比較清晰嚴謹,這些都是我們初學者值得學習的地方。
另外,作者也積極借鑑了其它學者的研究成果,比如將無序集合的思想引入到步態識別中(該思想最初引入到cv領域是2023年的pointnet,目的是解決點雲問題,後來zaheer et al. 2017進一步公式化了定義在集合上的深度學習任務並描述了排列不變函式(permutation invariant functions,本文的set pooling就是該類函式)),比如借鑑person reid中的hpmatching框架並針對步態識別問題做改進。
總之,我認為這是一篇很有學習價值和應用價值的文章。
2019技術路線
2019技術路線 1.用對用好cpu架構中的numa core thread cache memory,使現有系統延遲更低。2.系統現有結構解耦優化,用好檔案對映 訊息佇列,更優雅地劃分模組。3.編譯器優化實踐。理解pgo profile guided optimizations ltcg link...
2019裝修記錄
主要是了解,沒有確定要直接購買這裡的東西。交了一些定金,大體定下那些訂單多的內容。整裝 太貴的設計師請不起,一般的設計師感覺不夠用,所以索性我們自行設計了。水電 迪康工人上過一次門,大致把衛生間調理了一下。裝修的大頭,一直徘徊在歐派和其他品牌 柏輝 大成等 中間。光是歐派的店,都問了四五家之多,看中...
2019自學總結
自2018年閱讀量超過40本但發現實際成長卻有限後,2019調整了學習的模式,不再以閱讀為主要的學習方式,而改為開源專案 紙質閱讀 極客時間 imooc的模式,現在已經進入到2020年,來總結一下2019年的學習成果吧。其中 unix網路程式設計 和 tcpi ip詳解 都是重量級的大部頭,閱讀時間...