- 不做改动,直接将Transformer应用于视觉领域。
- 在小规模数据上可能略输CNN,但是在大规模数据上同等或者更优。
- 首先将图片划分成一个一个patch
- 将每个patch展平(展开成一维),然后通过线性层,映射到相同的维度。
- 加上可学习的位置向量,丢入Transformer Encoder层(类似Bert)
- 在序列最前面加上一个输入,用来提取全部序列的特征,并且在分类时候作为分类输入。
patch_size越小,计算复杂度越高,但是效果通常更好。
在实现时,一般直接使用卷积操作,而不是真的拆开然后展平。
通过实验也发现,一维位置编码也能学到二维位置信息。
混合模型:
首先由CNN提取特征,然后将CNN的每一层输入特征当成特征输入VIT。