Transformer在视觉领域上使用的难点
在nlp中,输入transformer中的是一个序列,而在视觉领域,需要考虑如何将一个2d图片转化为一个1d的序列,最直观的想法就是将图片中的像素点输入到transformer中,但是这样会有一个问题,因为模型训练中图片的大小是224*224=50176,而正常的bert的序列长度是512,是bert的100倍,这个的复杂度太高了。
输入序列长度的改进
如果直接输入像素点复杂度太高的话,就想着如何降低这部分的复杂度
使用网络中间的特征图
比如用res50最后一个stage res4 的feature map size只有14*14=196,序列长度是满足预期的
孤立自注意力
使用local window而不是整张图,输入的序列长度可以由windows size来控制
轴自注意力
将在2d图片上的自注意力操作改为分别在图片的高和宽两个维度上做self-attention,可以大大降低复杂度,但是由于目前硬件没有对这种操作做加速,很难支持大规模的数据量级。