【Happy导语】该文是字节跳动AI实验室提出了一种注意力机制模块,性能优于SE、GE等常见注意力机制。也许该文并非首次将平方操作引入CNN中,不过它应该是首次将其做成一个模块并用于提升模型的性能。此外,作者提到所提方法比较适合于终端,所以推荐大家了解一下即可,不必过于深入。
Paper: https://arxiv.org/abs/1906.04979v1
该文提出了一种轻量型模块用于提升深度卷积网络的学习能力,同时引入的额外计算量可以忽略不计。作者首先从理论与实验角度说明:逐点平方操作有助于提升神经网络的学习能力;然后作者设计了四种类型的轻量型逐点平方操作模块,分别为Square-Pooling,Square-Softmin,Square-Excitation,Square-Encoding。
作者将这四种轻量型模块添加ResNet18、ResNet50、ShuffleNetV2上提升模型性能。实验结果表明:所提方法可以带来显著性的性能提升,媲美双线性池化、SE以及GE。所提高效模块尤其适合于手机端,比如采用配置Square-Pooling的ShuffleNetV2-0.5x可以取得1.45%的性能提升,推理耗时增加可忽略不计。
上图给出了该文提出的四种EslSquare模块示意图,关于它们背后的理论基础建议各位同学去查看原文。理论部分是最烦人的,也是不讨人喜的,所以略过咯。
为验证所提方法的有效性,作者在ImageNet数据集上进行了对比分析。直接上实验结果,下表给出了ResNet18配置不同模块时的性能对比。
下表给出了ResNet50配置不同模块时的性能对比。
下表给出了所提方法与其他类似方法在ResNet50上的性能对比。可以看到:所提方法在不增加参数量的同时具有更高的性能,优于SE、GE等常用模块。
最后给出了所提方法与SHuffleNetV2组合时的性能对比。优势还是比较明显的哈。
该文从理论与实验结果对逐点平方操作进行了探索,并提出了四种类型的轻量型模块用于提升模型的性能。所提方法具有媲美甚至优于双线性池化、SE以及GE的性能,同时不会引入额外的参数量;尤其需要注意的是:所提方法尤其适合于终端模型的性能提升。
谈点题外话,最近几年出现了大量的CNN架构,也出现了各式各样的SOTA。比如MixConv、RegNet、EfficientNet、MoGA等等,但在工业界实际应用中,大家会发现用的最多还是那些比较经典的,比如ResNet、MobileNetV2。所以那些能够真正落到实处的方法才是大家真正应该花精力去精度的,其他方法不建议花费太多精力。因为方法是研究不完的,每年每月每周每日都会出现各式各样的CNN架构。但万变不离其宗,抓住关键核心用好就足以胜任99%以上的工作。以上纯属个人从工业应用角度的一点点看法,非喜勿喷。