paper:https://arxiv.org/pdf/2011.13256.pdf
code:https://github.com/open-mmlab/mmrazor?
這篇paper主要是商湯開源的mmrazor中提及在detection有效果,我之前記錄的幾篇sota文章雖然在各自的paper中在detection領域都有提及有增益,但實際上在我的測試中,可能由于模型容量或者其他原因,收益都幾乎不可見,但是這篇文章是商湯開源的,我認為應該具有比較好的含金量,因此再分析和實驗一波。
摘要:
kd被認為是一種簡單有效的方法用來訓練密集預測模型,許多的kd方法對其student和teacher的空間域的activation?maps,通常的方法是normalizing 每一個空間位置激活值,并逐點最小化或者比較之間的差異,與之前的方法不同,我們的建議是歸一化激活map,然后獲得一張soft probability(軟概率),然后最小化KL散度來比較兩個網絡之間的通道概率圖,kd過程中更注重最突出的每個通道的顯著性區域,這對密集預測很有價值,然后本方法在semantic和detection上進行了實驗,取得了sota的結果,在retinanet上提升了3.4.
Introduction
? ? Spatial distillation: 空間方向的蒸餾,可以理解成對所有通道的相同位置的點做歸一化,然后讓學生網絡學習這個歸一化后的分布,可以理解成對類別的蒸餾。
? ? Channel distillation: 通道方向的蒸餾,可以理解成對單個通道內做歸一化,然后讓學生網絡學習這個歸一化后的分布,可以理解成對位置的蒸餾。?
? ? 如上所示,使用kl散度來最小化通道的歸一化后的激活maps的分布,如上圖所示,每個通道的激活值更傾向于編碼的顯著性類別,比如car的通道就會更注重于car的類別,對于每個通道,student網絡更注重于模仿和學習那些具有顯著激活值得區域,從而在密集預測恩物中實現更準確地定位,比如detection,就更加注重于前景的對象的激活值學習。
? ? 本小節的結論是:paper展示了每個簡單歸一化每個通道可以提升spatial distillation的baseline,本文提出channel-wise kd方法能夠兼得的應用于各個人物和網絡結構,總結貢獻如下:
? ? 1、提出了一種新的channel-wise蒸餾范式,取得了sota效果在semantic和detection任務上
? ? 2、在不同的網絡結構中泛化性能很好,都取得了比較好的增益。
? ? 鑒于其簡單和有效性,認為該方法可以作為密集預測任務的有效方法
Method
1、常規的空間蒸餾方法
?2、Channel-wise Distillation
? ? 為了更好地利用每個通道的只是,使用軟對齊(softly align activations)teacher和studfent相應通道的激活值。首先,將通道的激活值轉化為概率分布,然后在使用figure2中的方法來衡量差異,比如kl散度,
? ??
? ? ? yt和ys分別代表相應通道的activation map,里面的c代表對應的通道,?代表將activation map轉化為概率的分布,概率轉換完成后可以消除大網絡和小網絡之間的絕對數值的大小差異,轉化方式如下圖所示:
? ? 上圖也提到,當student和teacher模型的channel不一致時,可以使用1x1的卷積進行適配,最后對進行soft后的概率分布進行kl散度計算,同時如上式代入溫度參數。
這里也提到了一個核心點,為什么kl散度是有效的,即當如果當 ? ( yT )越大,則? ? ( yS)同樣也越大,來最小化kl散度,但是相反的,? ( yT )越小,則? ? ( yS)則不會一直無窮小,因此,這樣能夠更加保證student學習到teacher的更顯著的概率map。
experiments:
本博客只給出paper的detection的結構,有興趣的同學自己去看其他的實驗結果和超參數優化。?