论文笔记-IntRA-KD: Inter-Region Affinity Distillation for Road Marking Segmentation
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还能够规避掉天空中一些东西带来的误检等(如路灯灯光。。)