SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation

概括

  • 论文地址:https://arxiv.org/pdf/1908.00821.pdf
  • 论文代码:[GitHub](https://github. com/cardwing/Codes-for-Lane-Detection)

这篇论文用于检测车道线,作者提出Self Attention Distillation(SAD)模块,可用于现有任何网络结构,提升检测效果但不增加inference time。在模型ENet-SAD上的结果,与现有方法有可比性,但是参数量小于1/20,并且速度快于20倍。

  1. 已验证网络结构有:ENetResNet-18ResNet-34ResNet-101
  2. 测试数据集:TuSimpleCULaneBDD100K

动机

作者发现当网络学习到一定程度,不同特征层都会对车道线附近的区域产生更多兴趣。如图在block2、block3、block4中,车道线附近区域特征已被高亮显示:


SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第1张图片

给已训练好一半的模型添加SAD模块,让浅层特征来学习(mimic)高层特征的表达,从而加强网络的整体特征表达能力。从图中显示,添加SAD后(after SAD),浅层block的特征表达得到加强,继而高层block的征表达也得到加强。这种底层特征模仿高层特征的学习过程,属于自注意力蒸馏(Self Attention Distillation)。

  • 知识蒸馏(Knowledge distillation):用于把大网络学习到的内容(knowledge)迁移到小网络中。具体有两个目标要学习,一是小网络输出与真值的相似,二是让小网络与大网络的输出相似。
  • 注意力蒸馏(Attention distillation):用于把大网络学习到的注意力特征图(attention map)迁移到小网络中。具体在知识蒸馏基础上,再对网络中间层特征进行迁移,以保证大小网络中间的注意力特征图相似。
  • 自注意力蒸馏(Self Attention Distillation):抛弃大网络,单独在小网络中对不同层学习到的注意力特征图进行迁移学习。

Self Attention Distillation

  1. 注意力特征图包含两种类型:一种是activation-based attention maps,另一种是gradient-based attention maps,二者区别为是否使用激活函数。
  2. Activation-based attention distillation,主要是把长、宽、通道三维特征转换为长、宽两维特征,其中m代表第m个卷积层:



    通过考虑各通道上激活后的特征值,来确定空间上特征的分布状况,获得attention map。主要方式有三种:


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第2张图片

    作者发现第二种方式获取的attention map更好,并设置p的值为2:
    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第3张图片
  3. 作者基于SAD(Self Attention Distillation),得到AT-
    GEN(attention generator),把它引入到网络的个层级上:


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第4张图片

    其中AT-GEN,先把网络中的指定特征经过G得到attention map,再上采样(Bilinear)到目标大小,最后通过softmax激活。


损失函数

  1. 相邻层attention map的损失函数:



    这里使用的是L2函数。

  2. 网络总损失函数:


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第5张图片

    segmentation loss由交叉熵函数和IoU组成;existence loss为二分类交叉熵函数。

实验

  1. 是否使用自注意力蒸馏效果图对比:


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第6张图片
  2. 可视化结果的后处理:

    对输出的概率图先进行9x9卷积的光滑处理,显示取阈值大于0.5的像素,然后每隔20行取最大响应值,最后连接这些最大响应值。
    具体参考论文X.Pan,J.Shi,P.Luo,X.Wang,andX.Tang.Spatialasdeep: Spatial CNN for traffic scene understanding. In Association for the Advancement of Artificial Intelligence, 2018.
  3. 与其它方法对比:
    三个指标,accuracy、F1-measure、IoU


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第7张图片
  • TuSimple


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第8张图片
  • CULane(F1-measure)


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第9张图片
  • BDD100K


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第10张图片
  1. 消融实验
  • SAD路径:


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第11张图片

    证明相邻层的蒸馏效果最好。

  • 蒸馏方向对比,作者发现自低向上效果好于自顶向下。
  • SAD vs Deep Supervision:
    block2-4


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第12张图片

    即使深监督有明显效果提升,但是SAD效果更好。

  • 何时加入SAD:


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第13张图片

    SAD加入太早,网络学习效率低。但是不管何时加入,最终效果都差不多。

  1. 可视化结果对比:
  • 在TuSimple(a)和CULane(b)上效果,其中底下数字为accuracy:


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第14张图片
  • 在BDD100K上效果,其中底下数字为accuracy,线条亮度值与概率值大小相关:


    SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation_第15张图片

你可能感兴趣的:(SAD---Learning Lightweight Lane Detection CNNs by Self Attention Distillation)