Counting Out Time: Class Agnostic Video Repetition Counting in the Wild個人筆記

參考https://mp.weixin.qq.com/s/olVWrq0Dca2Kulbc8xwplA
由於上述公衆號文章寫的有些部分不夠詳細,比如repnet的transformer是什麼,這裏寫一個自己讀repnet和transformer論文的個人筆記

repnet論文:
http://openaccess.thecvf.com/content_CVPR_2020/papers/Dwibedi_Counting_Out_Time_Class_Agnostic_Video_Repetition_Counting_in_the_CVPR_2020_paper.pdf

transformer論文:
https://arxiv.org/abs/1706.03762

1.repnet

本文的四大貢獻:
1.repnet,用於視頻動作計數的神經網絡
2.從沒有標籤的視頻生成和增強合成含有重複動作視頻的一種方法
3.在合成數據集上訓練的repnet在重複動作計數和週期檢測任務大大超越已知所有基準方法
4.Countix,含有大量重複動作視頻的數據集(超越之前最大的同類數據集的90倍)

數據:
類似kinetics較大的視頻數據集的標籤一般爲動作語義標籤,用於動作識別任務,這些視頻數據集的收集大多是通過關鍵詞搜索,從而導致只適用於分類視頻內容;
repnet的數據集Countix(視頻數量大約是目前同類數據集的90倍以上)主要從兩方面產生:1.從kinetics中手動挑選含有重複動作的視頻並計數 2.合成
在這裏插入圖片描述
使用時間自相關矩陣的優點 1.極限的bottleneck,即把每個512維特徵轉化成1維特徵,有利於之後將合成數據泛化爲真實數據 2.將模型解釋能力融入到模型結構中(從自相關矩陣而不是高維特徵進行推理)

Repnet:encoder部分爲image encoder,從而得到每張輸入圖片的特徵;然後使用這些特徵構造自相關矩陣S;然後將S矩陣輸入到週期預測器模塊輸出兩個元素,一個是週期長度預測(動作重複的頻率),另一個是週期性得分(顯示某一幀是否在視頻的某個週期內)

Encoder:包含3個部分 1.每幀輸入爲1121123的2d ResNet50提取771024特徵 2.將這些特徵傳給3d卷積(512 333) 3.降維:對空間兩個維度採用Global 2d max-pooling,此操作直接省去了追蹤圖片中roi的步驟

TSM:相似度函數爲負的歐式距離的平方;在得到所有配對的距離後,在對每行做softmax(tsm爲極限的information bottleneck,從而提供了正則化的效果-因爲參數相對減少了);同時tsm也使得模型時間維度上可解釋的
在這裏插入圖片描述
Period predictor:
在這裏插入圖片描述
Period predictior部分在最後分類前,處理每幀的操作的權重和結構都是一樣的
首先把6464的tsm經過一個2d的33卷積核,再對每幀的輸出進行multi-headed attention(使用4 heads with each head being 128 dimension);(截止不再共享權重)再接兩個512 fc+一個分類層
Per frame period length爲預測的該幀所在週期的單個週期長度
Per frame periodicity prediction爲該幀是否在週期中

Loss:
Per frame period length爲多分類問題,長度取值可爲2-N/2,N爲輸入clip長度
Per frame periodicity prediction爲0,1二分類問題(這裏只是判斷是否在某一個動作或事件的週期中,並不特指某個動作的週期)

inference:
每幀Per frame period length的預測爲li,每幀Per frame periodicity prediction的預測爲pi,定義per-frame count爲pi/li,然後把所有的pi/li求和得到總體重複動作的計數估計;若測試集視頻數據集的整個視頻都是週期的一部分,pi恆定爲1;同時在輸入幀固定的情況下,改變輸入幀的幀頻,嘗試得到最好的分數

合成的帶有重複動作的視頻
在這裏插入圖片描述
使用真實視頻產生帶有重複動作的視頻:1.更加真實 2.數據量非常大,保證數據多樣性
如上圖所示,隨機取一個視頻,隨機取一個clip,可以將clip直接重複n次,或將clip與倒着的clip連接重複多次再加clip;在得到重複動作的視頻片段後,隨機截取位於clip前後不帶有重複動作的視頻片段得到一個完整的合成視頻(可爲0),然後賦予每幀對應的標籤
在這裏插入圖片描述
若不採用camera motion augmentation,在訓練合成數據集時損失下降的非常快,在真實數據集上的測試也不好

數據集:
重複動作次數檢測任務:
QUVA repetition dataset:包含了真實的帶有重複動作的視頻,包含了遮擋,相機移動,重複動作的速度變化;測試集由100個動作種類未知的視頻與對應的重複次數;數據較少,容易過擬合,泛化性不好
metric:Off-By-One(OBO) count error(如果預測的重複次數和真實重複次數誤差小於等於1,則判斷爲預測準確),Mean Absolute Error(MAE) of count(作用於整個數據集)
在這裏插入圖片描述
週期性檢測任務:
PERTUBE dataset:主要用於週期性檢測,即每幀都有是否屬於一個重複動作的一部分的標籤;將週期性檢測問題轉化爲二分類問題
metric:precision,recall,F1 score,overlap

操作細節:
encoder的權重初始化爲imagenet預訓練的resnet50,訓練400k個step,lr=6*10^-6,ADAM,batchsize=5,64 frames per clip,訓練均在合成的數據上(Countix數據均爲真實數據,非增強後的數據)

消融實驗發現:
tsm對於減少上述兩種誤差標準非常有用;在合成的數據上訓練的模型對於真實數據的預測效果也非常的好;使用transfromer的效果由於lstm,或在tsm上直接進行2d卷積然後進行預測;每個batch中多加合成的數據有利於預測效果

錯誤:
左右腳顛球,模型會判斷左腳和右腳是不一樣的,但人在計數顛球個數時會考慮左右腳的總和

應用:
1.檢測重複動作的速度變化
2.預測重複過程的頻率(心動週期)
3.提取不同週期的同個時期的圖像
4.預測超長時間的週期,詳見project網站
5.有助於自監督視頻特徵學習




Transfromer:
在這裏插入圖片描述
Encoder部分:N=6,每個encoder部分包含6層,每層包含兩個子層,第一個爲multi-head self-attention(多頭注意力機制),第二個爲postionalwise fc前向網絡;且對每個子層進行residual connection和layer normalization,LayerNorm(x + Sublayer(x)),所有的sublayer的輸出爲512維
Decoder部分:N=6,每個encoder部分包含6層;和encoder相比中間插入了一個對encoder的輸出做multi-head attention的子層(同時也有residual connection和layer normalization的操作)
Attension:注意力函數可以看作爲將一個查詢(query)和一組鍵值組合(key-value)映射到一個輸出(output);query,key-value pairs,output均爲向量;輸出由加權平均得到,權重由查詢和對應的鍵值通過方程計算得到
Scaled Dot-Product Attenion
在這裏插入圖片描述
Q(query matrix),K(keys matrix),V(values),一個query或一組keys爲dk維向量,一組values爲dv維向量
PS1:常用的attention函數爲additive attention和dot-product(multiplicative) attention,dot-product就是這裏用的,除了除以了dk的根號,additive attention主要是使用一個一層的前向網絡;兩種注意力機制理論複雜度相同,但乘法注意力因爲高度優化的乘法代碼更加的高效
PS2:除以dk的根號是因爲,當dk非常大的時候,query matrix乘以keys matrix會得到非常大的值,使得softmax函數傾向於擁有非常小梯度的區域;假設q,k的元素均爲independent random variables with mean 0 and variance 1,qk的mean爲0,variance爲dk,qk除以根號dk後的variance就爲1

Multi-head attention
在這裏插入圖片描述
Q,K,V matrix均爲dmodel維,對Q,K,V進行h 次不同的線性映射,分別轉換爲dk,dk,dv維,再將一組線性映射後的V,K,Q輸入到常規的scaled dot-product attention中得到輸出,再進行concat和一次線性映射轉換會dmodel維
multi-head attention(多頭注意力)可以顧及到在不同位置的不同表徵子空間的信息,將dmodel維特徵轉換爲dk維,相當於bottleneck,總體計算計算量與單頭注意力相似
dk=dv=dmodel/h=64
在這裏插入圖片描述
Transformer中attention的應用
1.在encoder-decoder部分,由上圖可知queries來自之前的decoder層,keys和values來自encoder的輸出,這樣使得decoder可以顧及輸入序列中的所有輸入;大致模仿了sequence2sequence中的encoder-decoder機制
2.在encoder部分,爲自注意力層;各query,keys,values均爲之前encoder的輸出

Position-wise Feed-Forward Networks
在這裏插入圖片描述
上述feed-forward的函數在每個position一樣,但在不同層參數不同;輸入輸出的維度均爲512

Postional encoding
Transformer不包含循環或卷積,所以在decoder和encoder部分都要加入位置信息
在這裏插入圖片描述
dmodel=512,i爲維度,pos爲position

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章