物来顺应,未来不迎,当时不杂,既过不恋。 ----曾国藩
论文: Bottleneck Transformers for Visual Recognition
GitHub:https://github.com/leaderj1001/BottleneckTransformers
https://github.com/lucidrains/bottleneck-transformer-pytorch
https://github.com/BIGBALLON/distribuuuu/blob/master/distribuuuu/models/botnet.py
谷歌出品,BotNet即将ResNet中的第4个block中的bottleneck替换为MHSA(Multi-Head Self-Attention)模块,形成新的模块,取名叫做Bottleneck Transformer (BoT) 。最终由BoT这样的block组合成的网络结构就叫做BotNet。
最终基于BotNet的Mask R-CNN的实例分割在coco数据集上取得了44.4% Mask AP ,49.7% Box AP。
在分类任务中,在 ImageNet上取得了84.7%的top-1准确性。并且比 EfficientNet快2.33倍。
视觉任务attention汇总:
MHSA模块:
LEFT:经典的 Transformer结构
Middle:BoT block结构
RIGHT:基于MHSA改进的resnet bottleneck
Transformer中的MHSA和BoTNet中的MHSA的区别:
- 归一化,Transformer使用 Layer Normalization,而BoTNet使用 Batch Normalization。
- 非线性激活,Transformer仅仅使用一个非线性激活在FPN block模块中,BoTNet使用了3个非线性激活。
- 输出投影,Transformer中的MHSA包含一个输出投影,BoTNet则没有。
- 优化器,Transformer使用Adam优化器训练,BoTNet使用sgd+ momentum
MHSA包含了位置的attention和内容的attention。
网络结构:
基于显存开销和计算量的考虑,只将ResNet的c5 block中的残差结构替换为MHSA结构。
实验结果:
总结:
BotNet,一个新的基于attention思想的网络结构,效果优于 SENets, EfficientNets。