paper: Inter-Region Affinity Distillation for Road Marking Segmentation
code: Codes-for-IntRA-KD
Abstract
- IntRA-KD是商湯&港中文&南洋理工在CVPR2020的一篇road marking分割的任務,可以看作是ICCV2019上的SAD的改進(參考個人筆記),目前公布的代碼中,並沒有IntRA-KD的訓練中生成inter region affinity和訓練KD的部分,似乎是還有動作?
- 首先看一下IntRA-KD的整體方法流程,如下圖:

Details
-
何為Inter-Region Affinity?如何構造Inter-Region Affinity?
-
Inter-Region Affinity可以簡單理解為,用一個affinity graph表征不同類型的road mark(region)的特征分布(node)之間的相似度(edge),問題建模流程如下:

-
如上圖,其關鍵步驟為如下三點:
- 用gt生成smoothing的AOI(area of region),即構造region
- AOI-grounded moment pooling,即統計每個region的特征分布
- 構造initer-region affinity distillation
-
-
生成smoothing AOI
- 如果直接用原始的gt,會把類別周邊的信息徹底拋棄掉,所以作者為了獲取相對更大一些的area of interest,對原始gt做了平滑操作(應該是一個average pooling或conv操作),如下:

- 最后的效果圖如下:

- 如果直接用原始的gt,會把類別周邊的信息徹底拋棄掉,所以作者為了獲取相對更大一些的area of interest,對原始gt做了平滑操作(應該是一個average pooling或conv操作),如下:
-
統計AOI region的特征分布
- 作者這里用了moment的方法,暫時個人是將其理解為統計特征分布的均值、方差和skewness(偏度?目標形狀的傾斜程度),具體計算用如下公式:

- 示意圖如下:

- 作者這里用了moment的方法,暫時個人是將其理解為統計特征分布的均值、方差和skewness(偏度?目標形狀的傾斜程度),具體計算用如下公式:
-
inter region affinity蒸餾
- 這一步的作用,應該就是為了使得,不同類別之間分布相似度差距越來越大,相同類別之間分布相似度越來越小
- 所以,先計算不同類別之間的moment的cosine相似度,公式為

- 再者,將上面計算的特征相似度和gt之間的特征相似度計算loss,作為知識蒸餾的loss,如下:

-
網絡訓練
- 添加IntRA-KD進行訓練,整體的訓練loss如下:
- 其中,\(L_{seg}\)是分割的cross entropy loss,\(L_m\)即inter-region affinity distillation loss,如上面所示,\(L_\alpha\)是attention map distillation loss(和SAD那篇文章中一樣)
- 添加IntRA-KD進行訓練,整體的訓練loss如下:
-
其他實現細節
- 將圖像的上面一部分crop掉(裁剪了將近一半),因為那一部分多是天空之類的,沒有車道線,然后再resize(ApolloScape的高2710裁剪為1010,CULane的高590裁剪為350,LLAMAS的高717裁剪為384)
- ResNet101作為teacher network(添加了pyramid pooling module),ERFNet和ENet都可以作為student network,並且對ERFNet做了更多的消融實驗
- 評判標准,和SAD中的一樣,ApolloScape使用mIoU,CULane使用F1-measure,LLAMAS使用mAP
- 不同知識蒸餾方法的結果對比


寫在后面
- 整個InterRA-KD方法的思路相對非常清晰,在SAD的基礎上增加一個IntRA的loss,不過之前沒接觸過KD,還不清楚KD的訓練流程
- 對圖像crop這個小trick可以采用,能夠降低網絡輸入大小,同時這樣的硬性crop還能夠規避掉天空中一些東西帶來的誤檢等(如路燈燈光。。)
