参考:b站博主:技术喵,神经网络(八) 计算机视觉中的Transformer
DERT,在2020,Transform已经应用在目标检测中,但我不知道具体怎么衔接的,于是有了下文
相似性:CNN通常是在空间域上 || RNN在时间域上
不同点:CNN的滤波器(注意力只看周围)是并行(更有效率) || RNN需要迭代、无法并行
convolutional neural network可认为是低级的注意力机制,相关性集中在它的邻居,但没有全局观。
解决CNN没有全局观——>增加深度——>效率变差
RNN无法处理真正的long term dependency(时域上的限制,遗忘)
Transformer也是时间域上的,multi-heads为不同空间上(维度)的一个注意力机制,
它无法处理三维(长、宽、高),其中高指的是feature maps的数量,即特征数量。每个特征都是一个二维的数据。
本篇核心是如何衔接,两种方案
第一种Visual Attention Layer
Attention Augmented Convolutional Network:object detection/segmentation and pose estimation(目标检测 目标语义分析)
思想:把这个attention当做一个layer层,然后嵌到卷积神经网络中。
分两条线(蓝紫色、绿黄色为注意力机制,最后灰色部分为平时的卷积神经网络,最后合并)
图看不懂,可参考视觉的注意力计算
上图中间的产物其实是序列模型中一个token结果QKV之后的结果,上图展示的是第一个token以及最后一个token求取过程
做法:
图片(H , W),我们把它扁平化就变差一维n=HW,
图片的高,就变成了序列模型中embedding之后的特征维度(n,emb_dim)
所以使用注意力机制是针对每一个特征维度,(假设图片33)对扁平化后的9个点做加权求和。
multi-head为2时,对应蓝色和紫色部分,下一步:最终的矩阵将会加入1X1 卷积将不同head得到的attention结果进行混合。
需要弥补CNN对全局位置信息的能力,同时又不能破坏CNN特有的平移性,这里采用相对位置编码。
这篇文章加入了位置信息,position embedding,详细请看链接不细讲了。
第二种 Vision Transformer
不和卷积网络一起使用,或者CNN只在第一步做embedding的时候使用
embedding意识是抽取图像特征。
自回归模型(AR模型):一种处理时间序列的方法,用x1至xt-1来预测本期xt的表现
论文一:image Transformer,任务:image generation
每个token为a single channel of one pixel
论文二:
论文三:Vision Transformer(ViT)
思想:直接把图像分开,切成小块块(想那个移动拼图游戏),再加上position encoding
为什么都是将图片扁平化,而且有效呢?
原因:position encoding位置信息
转载:https://blog.csdn.net/qq_41329791/article/details/116802374