【CVPR 2021】Refine Myself by Teaching Myself : Feature Refinement via Self-Knowledge Distillation
- 論文位址:
- 主要問題:
- 主要思路:
- 具體實作:
-
- 基本符号:
- Self-Teacher Network:
- Self-Feature Distillation:
- 實驗結果:
-
- 分類:
- 分割:
- 聯系作者:
- 我的公衆号:
論文位址:
https://arxiv.org/abs/2103.08273
主要問題:
作者認為訓練教師模型太耗時間,是以從自我蒸餾入手。作者把自我知識蒸餾歸結為兩類:基于資料增強的蒸餾方法(b)和基于子網絡(c)的蒸餾方法。但是現有蒸餾方法無法保留語義分割/目标檢測要求的局部資訊,是以作者提出了FRSKD,通過利用輔助自教師網絡傳輸分類器網絡的精細知識,使用軟标簽和特征圖來進行自我知識蒸餾。
主要思路:
蒸餾時原始的分類器提供原始特征作為輔助自學網絡(藍色塊)的輸入,然後自學網絡将細化的特征圖提取到原始的分類器(橙色線)。
具體實作:
基本符号:
假設 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋅ ⋅ ⋅ , ( x N , y N ) } D=\{(x_1,y_1),(x_2,y_2),\cdot\cdot\cdot,(x_N,y_N)\} D={(x1,y1),(x2,y2),⋅⋅⋅,(xN,yN)}是标注好的執行個體, F i , j F_{i,j} Fi,j是分類模型第 j j j個子產品對應第 i i i個輸入樣本的輸出的特征圖, c j c_j cj是它的通道數
Self-Teacher Network:
自教師網絡的主要目的是為分類器網絡本身提供一個完善的特征圖及其軟标簽。自教師網絡的輸入是分類器網絡的特征圖, F 1 , ⋅ ⋅ ⋅ , F n F_1,\cdot\cdot\cdot,F_n F1,⋅⋅⋅,Fn。作者通過修改分類任務的 B i F P N BiFPN BiFPN結構來對自學網絡進行模組化,即從 P A N e t PANet PANet和 B i F P N BiFPN BiFPN繼承了自上而下的路徑和自下而上的路徑結構。
PANet:
BiFPN:
在自上而向下的路徑之前,首先應用一個側連卷積層:
L i = C o n v ( F i ; d i ) L_i=Conv(F_i;d_i) Li=Conv(Fi;di)
假設 d i = w × c i d_i=w×c_i di=w×ci,其中 w w w是一個 w i d t h width width參數(建立模型的時候就固定了,通常 w < 1.0 w<1.0 w<1.0用來降維并減小計算量)
top-down path和bottom-up path分别通過如下方式聚合不同特征:
P i = C o n v ( w i , 1 P ⋅ L i + w i , 2 P ⋅ R e s i z e ( P i + 1 ; d i ) ) P_i=Conv(w^P_{i,1}\cdot L_i+w^P_{i,2}\cdot Resize(P_{i+1};d_i)) Pi=Conv(wi,1P⋅Li+wi,2P⋅Resize(Pi+1;di))
T i = C o n v ( w i , 1 T ⋅ L i + w i , 2 T ⋅ P i + w i , 3 T ⋅ R e s i z e ( T i − 1 ; d i ) ) T_i=Conv(w^T_{i,1}\cdot L_i+w^T_{i,2}\cdot P_i+w^T_{i,3}\cdot Resize(T_{i-1};d_i)) Ti=Conv(wi,1T⋅Li+wi,2T⋅Pi+wi,3T⋅Resize(Ti−1;di))
其中 P i P_i Pi 表示top-down path的第 i i i層, T i T_i Ti 表示bottom-up path的第 i i i層
與 B i F P N BiFPN BiFPN類似,前通連接配接根據層的深度具有不同的結構。在圖2中,在最淺的bottom-up path層 T 1 T1 T1和最深的top-down path層 T 4 T_4 T4的情況下,為了計算效率分别直接利用側層 L 1 L_1 L1和 L 4 L4 L4作為輸入,而不是使用top-down path的特征
在這些設定中,為了建立一個自上而下的結構來連接配接所有最淺層、中間層和最深層,作者添加了用于正向傳播的兩個對角連接配接:(1)從最後一個橫向層 L 4 L_4 L4 到top-down path的倒數第二層的連接配接;(2)從 P 2 P_2 P2 到bottom-up path的第一層 T i T_i Ti 的連接配接
此外作者對參數還應用了快速歸一化融合的方法,例如 w P w^P wP和 w T w^T wT。作者使用雙線性插值進行上采樣,并且使用最大池進行采樣(即上面的 R e s i z e Resize Resize操作)
為了提升計算效率, 作者使用點卷積來進行卷積運算根據第
最後作者在top-down path的頂部附加全連接配接層來預測輸出類,自學網絡提供其軟标簽 p t ^ = s o f t m a x ( f t ( x ; θ t ) ) \hat{p_t}=softmax(f_t(x;\theta_t)) pt^=softmax(ft(x;θt))用來做自蒸餾,其中 f t f_t ft就是 S e l f − T e a c h e r N e t w o r k Self-Teacher Network Self−TeacherNetwork,它的參數是 θ t \theta_t θt
Self-Feature Distillation:
作者提出的模型(FRSKD)利用了自學網絡的輸出,重定義的特征圖 T i T_i Ti以及軟标簽 p t p_t pt。特征蒸餾誘導分類器網絡來模拟改進的特征圖。對于特征蒸餾,作者采用了Paying more attention to attention中注意力轉移的方法,其Loss定義如下:
L F ( T , F ; θ c , θ t ) = ∑ i = 1 n ∣ ∣ ϕ ( T i ) − ϕ ( F i ) ∣ ∣ 2 L_F(T,F;\theta_c,\theta_t)=\sum^n_{i=1}||\phi(T_i)-\phi(F_i)||_2 LF(T,F;θc,θt)=∑i=1n∣∣ϕ(Ti)−ϕ(Fi)∣∣2
其中 ϕ \phi ϕ是channel-wise pooling+L2 normalization操作,用于抽取特征圖的空間資訊, θ c \theta_c θc是分類模型的參數
是以 L F L_F LF使得模型能能夠從 S e l f − T e a c h e r N e t w o r k Self-Teacher Network Self−TeacherNetwork的重定義特征圖中學習局部資訊,并模仿重定義的特征圖或者利用特征圖的變換資訊
跟其他自蒸餾方法類似,對于 s o f t − l a b e l soft-label soft−label使用KL損失:
L K D ( x ; θ c , θ t , K ) = D K L ( s o f t m a x ( f c ( x ; θ c ) K ) ∣ ∣ s o f t m a x ( f t ( x ; θ t ) K ) ) L_{KD}(x;\theta_c,\theta_t,K)=D_{KL}(softmax(\frac{f_c(x;\theta_c)}{K})||softmax(\frac{f_t(x;\theta_t)}{K})) LKD(x;θc,θt,K)=DKL(softmax(Kfc(x;θc))∣∣softmax(Kft(x;θt)))
其中 f c f_c fc是分類模型, K K K是蒸餾的溫度超參數
對于真實标簽使用 L C E L_{CE} LCE作為損失函數
是以最終的優化目标為:
L F R S K D ( x , y ; θ c , θ t , K ) = L C E ( x , y ; θ c ) + L C E ( x , y ; θ t ) + α L K D + β L F L_{FRSKD}(x,y;\theta_c,\theta_t,K)=L_{CE}(x,y;\theta_c)+L_{CE}(x,y;\theta_t)+\alpha L_{KD}+\beta L_F LFRSKD(x,y;θc,θt,K)=LCE(x,y;θc)+LCE(x,y;θt)+αLKD+βLF
實驗結果:
分類:
分割:
聯系作者:
微信号:Sharpiless
作者的其他首頁:
B站:https://space.bilibili.com/470550823
CSDN:https://blog.csdn.net/weixin_44936889
AI Studio:https://aistudio.baidu.com/aistudio/personalcenter/thirdview/67156
Github:https://github.com/Sharpiless