当前位置: 首页 > news >正文

Transformer(二)(VIT,TNT)(基于视觉CV)

目录

1.视觉中的Attention

 2.VIT框架(图像分类,不需要decoder)

2.1整体框架

2.2.CNN和Transformer遇到的问题

2.3.1CNN

2.3.2Transformer

2.3.3二者对比

2.4.公式理解

3TNT

参考文献


1.视觉中的Attention

      对于人类而言看到一幅图可以立即区分背景和主体,我们希望计算机也可以清楚区分背景和主体,这样就可以专注在主体上提取特征。 

 2.VIT框架(图像分类,不需要decoder)

2.1整体框架

      如下图所示,transformer框架需要输入为序列形式,但图像是高维的,所以首先要对图像预处理,简单理解,假设下图是一个30*30*3的输入,将其分为9块,每块大小为10*10*3,再对其做一个卷积处理,变成300*1。 

      同样图像处理也要考虑到位置编码(Position Embedding),有两种方式,一种是直接再一维空间用1,2,3,4....,一种是在二维空间用(1,1),(1,2)...。一维,二维对结果影响不大(仅图像分类)。但编码方式,也是一个创新点。

      下图框架为分类任务,多加了一部分,简单理解,目的在于整合所有输入量,最后用其进行分类

       和文本处理,区别在于多了一个图像的数据处理,要将高维变成序列形式,

       最后说下下图右的框架,Norm是归一化处理,Multi-Head Attention是多头注意力机制,MLP是全连接层。

2.2.CNN和Transformer遇到的问题

2.3.1CNN

      以Resnet50为例,首先回忆一下感受野的概念,即当前层神经元(特征图)可以看到的原图的区域,我们假设conv1,conv6,conv11,conv16,此时我们想做一个分类任务,区分这个女生好不好看,对于conv1它的感受野为红色小框,显然特征过小,conv4为绿色小框,此时已经能看到眼睛,但还是不足以做出判断,conv11为黄色框,此时已经能看到较多的局部特征,但还不足以准确判断,最后来到conv16,此时足以看到整个脸,可以进行判别,但我们发现想要得到一个全局信息这个过程需要多层嵌套才能实现,比较麻烦。 

      对比一下,CNN通常第一层卷积用3*3的核也就是说只能看到原图3*3大小的区域,可能要最后一层才能看到全局,而transformer可以实现第一层就看到全局。

2.3.2Transformer

transformer对于CNN需要极大数据集才能得到好的结果。

2.3.3二者对比

2.4.公式理解

      E为全连接层,目的是对输入数据进行预处理,就是将高维图像变成序列形式,假设P*P=196,就是图像分割的块数,像上面将图分为9块的意思,C=256是每一块含有的向量,D=512,目的是将256映射成512,N=196是位置信息编码,+1是因为图像分类任务要多一个输入,LN是归一化处理,MSA是多头自注意力机制,MLP是全连接层。类似于残差链接 。可以对比流程图理解。

3TNT

假设VIT每一个patch是16*16.TNT希望这个patch更小。

     

      基于这个思想,TNT将数据预处理,分为外部和内部两块,外部和VIT一样,内部就是对外部的信息再次细分,比方说外部一个patch是16*16,内部就用4*4的块进行分割,下面超像素的概念就是不想按照1*1大小进行分割,多选择几个像素点分割。

      在实际应用中,如下图所示,将一个图分为4块(外部),VIT中是直接预处理后变成一个4维向量输入了,而在TNT中,假设第3块(外部),进行了一个内部分割,然后重构后也变成一个4维向量,将其加入外部的4维向量。同样内外部都做位置编码时效果最好。

      从可视化角度看,TNT在不同层下得到的结果更好,从T-SNE看,TNT更集中,效果更好。

参考文献

1.【VIT算法模型源码解读】1-项目配置说明1.mp4_哔哩哔哩_bilibili

http://www.lryc.cn/news/121361.html

相关文章:

  • Scratch 详解 之 线性→代数之——求两线段交点坐标
  • Python-组合数据类型
  • vue3+vue-simple-uploader实现大文件上传
  • 自适应变异麻雀搜索算法及其Matlab实现
  • ETL技术入门之ETLCloud初认识
  • uniapp项目如何运行在微信小程序模拟器上
  • 数据挖掘全流程解析
  • 详细介绍如何对音乐信息进行检索和音频节拍跟踪
  • Java课题笔记~ HTTP协议(请求和响应)
  • 在x86下运行的Ubuntu系统上部署QEMU用于模拟RISC-V硬件环境
  • 网络爬虫选择代理IP的标准
  • RxJava 复刻简版之三,map 多次中转数据
  • 06 Word2Vec模型(第一个专门做词向量的模型,CBOW和Skip-gram)
  • Axure RP9小白安装教程
  • 腾讯云CVM服务器2核2g1m带宽支持多少人访问?
  • 8.12学习笔记
  • 计算机体系中的不同的缓存存储层级说明
  • HCIP 链路聚合技术
  • 网页爬虫中常用代理IP主要有哪几种?
  • Js小数运算精度缺失的解决方法
  • 25 | 葡萄酒质量数据分析
  • 在 Windows 上安装 OpenCV – C++ / Python
  • 前后端交互开发模式yapi使用
  • Ajax同源策略及跨域问题
  • JavaScript:解构赋值【对象】
  • 微服务与Nacos概述-2
  • 解决MySQL与Redis缓存一致性的问题
  • 王道机组难题分析
  • 数学建模(一)前继概念
  • C# 随机法求解线性规划问题 蒙特卡洛