1. 程式人生 > 其它 >Focal and Global Knowledge Distillation for Detectors

Focal and Global Knowledge Distillation for Detectors

一. 概述

論文地址:連結

程式碼地址:連結

論文簡介:

  • 此篇論文是在CGNet上增加部分限制loss而來
  • 核心部分是將gt框變為mask進行蒸餾

註釋:僅為閱讀論文和程式碼,未進行試驗,如有漏錯請不吝指出。文章的疑惑和假設僅代表個人想法。

二. 詳細

2.1 Focal Distillation

2.1.1 mask計算

此篇文章在目標檢測蒸餾中對FPN層進行限制,正常的操作如下公式(1)所示:

\[L_{f e a}=\frac{1}{C H W} \sum_{k=1}^{C} \sum_{i=1}^{H} \sum_{j=1}^{W}\left(F_{k, i, j}^{T}-f\left(F_{k, i, j}^{S}\right)\right)^{2} \]

此篇文章將gt的mask引入到蒸餾中:

如下公式(2),目標為1,背景為0,獲得mask矩陣\(M_{i,j}\)

\[M_{i, j}= \begin{cases}1, & \text { if }(i, j) \in r \\ 0, & \text { Otherwise }\end{cases} \]

但是會出現一個問題,小目標的mask區域太小,比例嚴重失調會導致小目標的蒸餾效果比較差,解決方法是進行歸一化操作,如下公式(3)所示,引用一個尺度(縮放)量\(S_{i,j}\) , 前景尺度目標大小倒數,目標越大mask越大,但數值越小。背景為mask=0的倒數。也就是每個gt數值和為1,全部背景為1。

疑惑一:

假設前景gt為10,那麼前景數值和為10,背景和為1,會不會導致比例失調?

\[\begin{gathered} S_{i, j}= \begin{cases}\frac{1}{H_{r} W_{r}}, & \text { if }(i, j) \in r \\ \frac{1}{N_{b g}}, & \text { Otherwise }\end{cases} \\ N_{b g}=\sum_{i=1}^{H} \sum_{j=1}^{W}\left(1-M_{i, j}\right) \end{gathered} \]

假設一: 假設修改為前景和為1,背景和也為1。前景每個gt數值和相同。如下公式(4)所示,\(N_{gt}\)

為gt的數量

\[\begin{gathered} S_{i, j}= \begin{cases}\frac{1}{H_{r} W_{r} N_{gt}}, & \text { if }(i, j) \in r \\ \frac{1}{N_{b g}}, & \text { Otherwise }\end{cases} \\ N_{b g}=\sum_{i=1}^{H} \sum_{j=1}^{W}\left(1-M_{i, j}\right) \end{gathered} \]

2.1.2 注意力特徵計算

這部分參考attention機制,蒸餾也要針對性的對channel和spatial進行學習

以下公式(5)是針對上面兩個注意力的計算方式,注意得加絕對值!沒有可解釋的,就是基礎操作。

\[\begin{gathered} G^{S}(F)=\frac{1}{C} \cdot \sum_{c=1}^{C}\left|F_{c}\right| \\ G^{C}(F)=\frac{1}{H W} \cdot \sum_{i=1}^{H} \sum_{j=1}^{W}\left|F_{i, j}\right| \end{gathered} \] \[\begin{gathered} A^{S}(F)=H \cdot W \cdot \operatorname{softmax}\left(G^{S}(F) / T\right) \\ A^{C}(F)=C \cdot \operatorname{softmax}\left(G^{C}(F) / T\right) \end{gathered} \]

2.1.3 loss融合

直接看下面的公式(7),前景和背景分開進行監督,公式比較簡單,\(M_{i,j}\)表示mask,\(S_{i,j}\) 表示mask的尺度,\(A_{i,j}^S/A_k^C\) 表示teacher的注意力特徵。

\[\begin{aligned} &L_{f e a}=\alpha \sum_{k=1}^{C} \sum_{i=1}^{H} \sum_{j=1}^{W} M_{i, j} S_{i, j} A_{i, j}^{S} A_{k}^{C}\left(F_{k, i, j}^{T}-f\left(F_{k, i, j}^{S}\right)\right)^{2} +\beta \sum_{k=1}^{C} \sum_{i=1}^{H} \sum_{j=1}^{W}\left(1-M_{i, j}\right) S_{i, j} A_{i, j}^{S} A_{k}^{C}\left(F_{k, i, j}^{T}-f\left(F_{k, i, j}^{S}\right)\right)^{2} \end{aligned} \]

疑惑二: 將上面的公式合併,明顯看出 \(\alpha/\beta\) 就表示前景和背景的比例,這明顯印證了疑惑一的問題。再從論文圖表(7)中調參發現,這兩個引數對實際的精度影響不大 \(\pm0.3\) 的精度差異,是否可直接使用假設一的方案,直接去除此兩個引數。

由於公式(7)僅對teacher的注意力特徵進行了使用,並未對student的注意力特徵進行監督,所以引出下面的公式(8)直接監督

\[L_{a t}=\gamma \cdot\left(l\left(A_{t}^{S}, A_{S}^{S}\right)+l\left(A_{t}^{C}, A_{S}^{C}\right)\right) \]

疑惑三: 為什麼公式(7)需要使用teature注意力特徵而不使用student的注意力特徵?論文沒有給出答案,issue上作者也沒有給出答案

假設三:

  • 公式(7)中直接去除 \(A_{i,j}^S/A_k^C\) 是否合適?
  • 將公式(8)合併到公式(7)中,比如下式的公式(9)所示,當然可以有其他形式
\[L_{f e a}=\alpha \sum_{k=1}^{C} \sum_{i=1}^{H} \sum_{i=1}^{W} M_{i, j} S_{i, j}\left(A_{i, j, t}^{S}-A_{i, j, s}^{S}\right)\left(A_{k, t}^{C}-A_{k, s}^{C}\right)\left(F_{k, i, j}^{T}-f\left(F_{k, i, j}^{S}\right)\right)^{2}+\ldots \ldots \]

2.2 Global Distillation

此部分來自於CGNet,不做過多介紹,理解較為容易

三. 題外話

3.1 一些可能的筆誤

此論文的開源專案基於mmdetection實現,其中試驗的YOLOX蒸餾試驗有點瑕疵:

  • 第一個問題

以下是此論文的專案readme,YOLOX-m的baseline是45.9,但實際YOLOX官方精度是46.9,差一個點已經是非常大了。

作者說用mmdet跑出來YOLOX-m就是這個精度,本人比較懷疑,因為之前跑的YOLOX-S/nano都沒問題,YOLOX-m正在試驗下週一出結果。

結果: 確實像作者說的達不到官方的精度,本人替換focus到conv,其它未改變,mAP45.2比作者的還低0.7

Student Teacher Baseline(mAP) +FGD(mAP) config weight code
YOLOX-m YOLOX-l 45.9 46.6 config baidu af9g
  • 第二個問題

論文中YOLOX-m和repo中的精度不一致,論文45.1,repo是45.9,論文是筆誤?

YOLOX-L的精度mmdet已經試驗為49.4,為啥這裡是48.5?這也是筆誤?

3.2 論文觀後感

之前見過類似的做法,用作弱監督中。但未看到將mask用作蒸餾之內,這讓我開眼界了。

剛開始看論文的效果確實不錯,因為本人對YOLOX較為熟悉,所以仔細看了一下這部分,發現上述問題,作者也沒重視。。。

以後實際專案嘗試一下,這次僅僅作為閱讀論文