<menu id="kei0a"><strong id="kei0a"></strong></menu>
  • <menu id="kei0a"></menu>
  • <dd id="kei0a"></dd>
  • <menu id="kei0a"><strong id="kei0a"></strong></menu>
    科技魔方

    Meta研究將頭部運動數據作為監控信號進行AR/VR用戶行為識別

    AR/VR

    2021年12月14日

      隨著Oculus和HoloLens等頭戴設備的出現,AR/VR技術正在開始蓬勃發展。就像過去幾十年的電腦智能手機一樣,AR/VR設備有望從根本上改變我們的日常生活和社會。為了實現這個未來,需要解決的一個基本挑戰是以自中心(egocentric)動作識別,亦即通過頭戴式攝像頭實現對用戶活動的機器理解。

      隨著現代計算機視覺技術的進步,現在人們熟悉的動作識別方法是使用數百萬手動分類為自中心動作的視頻片段,并以有監督的方式訓練卷積神經網絡(CNN)。然而,這種方法至少有兩個局限性。第一,注釋足夠大的視頻剪輯來訓練CNN非常昂貴;第二,即使擁有無限的預算,我們都無法涵蓋人類所有的潛在動作。

      要解決所述限制,一個富有前景方法是使用自監督學習(SSL)來訓練CNN,而所述領域已經取得了快速的進展。SSL不依賴人工注釋,而是利用數據中存在的固有屬性來訓練各種下游任務的表示,例如對數據增強的不變性、數據的多模態等等。受其啟發,Meta和印第安納大學的團隊在名為《How You Move Your Head Tells What You Do: Self-supervised Video Representation Learning with Egocentric Cameras and IMU Sensors》的論文中嘗試將頭部運動數據作為自我監控信號來進行自中心行為識別。

      為了利用頭部運動數據的潛力并實現自中心視頻表示的SSL,團隊需要回答幾個基本問題:頭部運動數據是否具有自中心視頻表示無法捕獲的唯一信息?如果是這樣,利用頭部運動中的有用信號進行自中心視頻表征學習的有效方法是什么?最后,學習到的表示是否比在僅視頻數據上使用SSL進行訓練的表示更有效?

      在研究中,Meta和印第安納大學的團隊系統地回答了所述研究問題。實驗表明,頭部運動可以提供額外的優勢,即使是完全監督學習都是如此。

      然后,研究人員設計了一種簡單但有效的SSL方法,通過根據視頻對和頭部運動數據的對應關系進行分類來學習以自中心的視頻表示。團隊使用這種方法在EPIC-KITCHENS數據集訓練了相關模型,并展示了對廚房任務操作進行分類的結果表示的有效性。另外,研究人員同時利用相同的表征來識別由狗狗頭部運動引起的自中心動作,從而證明學習到的表征可以泛化到訓練領域之外。

      SSLtask formulation

      受標記數據集限制的啟發,團隊希望針對AR/VR學習使用SSL的自中心視頻表示,特別是利用AR/VR可用的多模態數據,亦即由帶有IMU傳感器的頭戴式攝像頭捕獲的以自中心視頻和頭部運動。SSL通常利用代理任務來訓練表示,無需人工注釋。例如,可以通過最大化相同圖像的兩個不同增強視圖之間的一致性來學習具有對比損失的圖像表示。

      換句話說,給定一對隨機增強的圖像,如果它們來自同一圖像,則傾向于認為它們的表示相似,而不是來自不同的圖像。對多模態情況的擴展是對兩種模態(如音頻和視頻)之間的對應關系進行訓練。受所述視聽SSL框架的啟發,研究人員提出了一個二進制分類任務,以匹配頭戴式攝像頭捕獲的自中心視頻和頭部運動IMU信號之間的對應關系,從而學習AR/VR中的自中心視頻表示。

      SSL loss

      訓練表示使用上述SSL任務,研究人員隨機抽取一批與頭戴式IMU傳感器捕獲的頭部運動信號同步的短視頻片段(在實驗中為2秒)。然后,提取視頻和IMU的特征向量,計算兩兩相似性,并只有當它們來自同一剪輯時才傾向于認為相似性高。具體地說,給定來自CNN的N對視頻和頭部運動特征向量,最小化以下對比損失函數L。

      在SSL訓練之后,可以使用視頻表示vi(如果需要,還可以使用頭部運動表示mi)來執行動作識別等下游任務。

      團隊使用EPIC-KITCHENS數據集進行所有實驗,但最后一個除外。最后一個實驗使用了以狗為中心的活動數據集,以展示所述方法在訓練數據集之外的泛化能力。對于EPIC-KITCHENS數據集,選擇伴隨頭部(camera)運動的相應IMU信號的視頻剪輯,并根據視頻ID對train:validation:test=30044:3032:4379進行數據分割,分割中沒有重疊的主題。這種分割有65個獨特的測試動詞,這意味著隨機猜測基線可以達到1.5%的準確率。然而,由于動作分布有偏差,主要動作(take)占測試集的27%。

      對于使用以狗為中心的活動數據集的實驗,研究人員選擇與頭部運動相關的活動類別:行走、搖晃、向左看和向右看。這四個動作幾乎是平衡的,而大多數行走類占據了數據集的30%。這個數據集很小(總共216個視頻剪輯,只選擇了86個),所以團隊根據狗的ID分成了一半和一半,并進行了2倍交叉驗證,同時報告了平均準確度。

      為了訓練等式1中描述的SSL丟失表示,研究人員使用SlowFast50作為視頻的主干CNN表示,VGG16表示頭部運動IMU信號。視頻CNN的時空輸入大小為256×256×48,分別對應于寬度、高度和幀大小(幀速率為24fps)。原始IMU片段用396×6的矩陣表示,分別對應于時間(頻率為198Hz)和通道(加速度計和陀螺儀的XYZ)。

      團隊的目標是利用頭部運動來學習更好的自中心動作識別視頻表示。然而,由于視頻是一種具有高保真度信息的豐富模式,是否還有空間讓頭部運動信號改善動作識別的視頻表示?

      為了回答這個問題,研究人員進行了兩個初步實驗。第一個實驗是從頭部運動信號中訓練動作分類器,并與僅視頻分類器進行比較。團隊期望基于視頻的分類器能夠達到更高的動作分類精度。然而,如果某些類別只能通過頭部運動信號正確分類,這意味著頭部運動確實比視頻有優勢,至少在某些類別是這樣。

      表1和表2展示了前五個頻繁動作(動詞)的分類結果。來自視頻的分類器平均具有更高的精度。然而,一些動作剪輯僅根據頭部運動進行正確分類(表2)。此外,團隊通過平均兩個分類器的概率向量(即softmax函數后的輸出)添加了一個簡單的集成模型,并確認了總體精度的提高(表1)。結果顯示了頭部運動信號優于視頻。

      第二個實驗是看現有的視頻表示是否已經捕捉到頭部運動信息,例如CNN在動力學上預訓練的功能。這個問題非常重要,因為如果在沒有頭部運動的情況下預訓練的視頻表示已經包含了可以從頭部運動中提取的所有信息,你將不能通過使用頭部運動向視頻表示添加任何附加值。為了回答這個問題,團隊使用來自Kinetics或EPIC-KITCHENS的預訓練權重初始化視頻CNN,并比較在兩種不同設置下匹配視頻和頭部運動之間對應關系的SSL任務的準確性。

      在第一個設置中,研究人員使用凍結的預控制視頻CNN訓練模型(圖1),只更新頭部運動CNN權重。在第二個設置中,更新視頻和頭部運動CNN權重。團隊比較了SSL對應分類任務的ROC-AUC精度,包括未更新視頻CNN權重和更新視頻CNN權重兩種設置(表3)。

      可以看到,經過動力學預訓練的CNN和EPIC-Kitchen的性能都有所提高。團隊解釋是,如果頭部運動信息已經嵌入到預訓練視頻表示中,更新視頻CNN權重將不會提供任何精度增益。性能的提高表明,仍然有空間通過利用頭部運動來改進視頻表示。請注意,研究人員使用ROC-AUC而不是普通精度,因為大多數對是負對應,即始終分類為負可實現高普通精度。

      在使用SSL任務(等式1)訓練模型(圖1)之后,可以利用學習到的視頻CNN作為下游任務的通用視頻表示主干,如自中心的動作分類。為了測試使用SSL學習的視頻表示的有效性,研究人員在學習的視頻表示的基礎上訓練了一個多類邏輯回歸線性分類器。團隊同時使用動力學和EPIC-KITCHENS動作分類的全監督訓練,在學習的表征之上訓練相同的線性分類器,并比較結果(表4)。

      使用SSL學習的表示的分類器達到了41.94%的準確率。這高于動力學表示的準確度(27.01%),低于EPIC-KITCHENS的完全監督對應值(55.61%)。盡管團隊的SSL表示預訓練因此是有效的,但它依然落后于充分訓練。

      接下來,團隊希望看看使用所述SSL任務(等式1)學習的表示是否泛化到廚房的培訓領域之外。為了測試這一點,其使用EPIC-KICTHEN提供的預訓練SSL表示,在以狗為中心的活動數據集上訓練線性分類器。表5中顯示了結果?;趧恿W表示的分類器的準確率為46.98%,SSL表示的準確率為54.21%。這表明了所述SSL方法在訓練領域之外的有效性。

      總的來說,研究人員通過利用多模態自我中心視頻流和IMU傳感器捕獲的頭部運動,探索了一種用于AR/VR視頻表示的自我監督學習(SSL)。盡管視頻擁有更豐富的信息,但使用頭部運動信息仍有改進視頻表示的空間。

    +1

    來源:映維網

    推薦文章

    肉H文老师好紧好大好爽
    <menu id="kei0a"><strong id="kei0a"></strong></menu>
  • <menu id="kei0a"></menu>
  • <dd id="kei0a"></dd>
  • <menu id="kei0a"><strong id="kei0a"></strong></menu>