【王树森】Vision Transformer (ViT) 用于图片分类(个人向笔记)

news2024/11/16 1:30:29

图片分类任务

  • 给定一张图片,现在要求神经网络能够输出它对这个图片的分类结果。下图表示神经网络有40%的信心认定这个图片是狗
    在这里插入图片描述
  • ResNet(CNN)曾经是是图像分类的最好模型
  • 在有足够大数据做预训练的情况下,ViT要强于ResNet
  • ViT 就是Transformer Encoder网络

Split Image into Patches

  • 在划分图片的时候,需要指定两个超参数
    • patch size: 一个patch的大小,如 16 × 16 16×16 16×16
    • stride: 如果划分的时候没有重叠,那么stride就等于大小 16 × 16 16×16 16×16
      在这里插入图片描述

Vectorization

  • 把每一个patch(张量),拉伸成一个向量,即直接展平:加入patch是一个 d 1 × d 2 × d 3 d_1×d_2×d_3 d1×d2×d3 的张量,那么向量就是 d 1 d 2 d 3 × 1 d_1d_2d_3×1 d1d2d3×1
    在这里插入图片描述
  • 对每个向量做线性变换,将其降维,变换矩阵的参数都是共享的:
    在这里插入图片描述
  • 由于图片的相对位置是有意义的,所以我们还要加上位置信息,即要对位置进行编码。在下面的两张图中,显然左右两张图是不一样的。但是如果不加位置编码,则它们对于 Transformer 来说就是一样的
  • 我们需要把位置编码加到刚刚变换后的向量里面,现在每个 z z z 即是 patch 内容的表征,又是相对位置关系的表征。论文中表明如果不用位置编码,会掉 3 个百分点的准确率。而用何种位置编码的结果都差不多在这里插入图片描述
  • 我们还会用到一个 CLS,这和上节课的 BERT 是类似的。把 CLS 也做一个 Embedding 和其他向量一起加入多头自注意力的计算。可以堆叠多个多头自注意力层和全连接层
    在这里插入图片描述
  • 我们把这些多头自注意力层和全连接层简化为一个 Encoder 网络,输出从 c 0 c_0 c0 c n c_n cn 一共 n + 1 n+1 n+1 个向量,其中向量 c 1 c_1 c1 c n c_n cn 没有用,可以直接忽略掉。有用的是向量 c 0 c_0 c0,可以把它看作是从图片中提取的特征向量,用作分类任务:
    在这里插入图片描述
  • c 0 c_0 c0 输入 Softmax 分类器,p 的维度取决于有多少个种类:
    在这里插入图片描述
  • 已经搭建好了神经网络,那么我们训练的第一步就是随机初始化神经网络参数,然后在数据集 A 上做一个预训练,其中 A 一定要大
    在这里插入图片描述
  • 在得到预训练的参数后,我们再用一个比较小的数据集 B 进行训练,这个步骤被称为微调,其中数据集 B 是任务的数据集
    在这里插入图片描述
  • 最后在测试集上进行测试,评价模型的表现
    在这里插入图片描述

Image Classification Accuracies

  • 当预训练的数据集不够大的时候,其实 Transformer 的表现并不是很好,弱于 ResNet
  • 当预训练集的大小为中等时,Transformer 的效果与 ResNet 相当
  • 当预训练集的大小为大时,Transformer 准确率会比 ResNet 高 1%
  • 如果预训练数据集更大,那么 Transformer 的准确率还会提升
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2093128.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

S7-200编程软件STEP 7打开时界面乱码显示Translation Required

遇到的问题 如题,两个月没有打开过S7-200编程软件(软件版本是V4.0 STEP 7 MicroWIN SP9,电脑系统是Windows 11),这一次打开就发现它的那个界面乱码了,原来时中文汉化的地方全都变成了Translation Required…

笔记整理—内核!启动!—uboot部分(1)

常规启动时,各镜像都在SD卡中的各种分区中,内核放在kernel分区,从SD卡到DDR的连接处(内核不需要进行重定位,直接从链接处启动)。uboot从sd卡分区读使用movi命令。 使用fastboot指令可以查看分区情况&#x…

通过Dot1q终结子接口实现VLAN间互访

如图1所示,SwitchA为支持配置子接口的三层交换机,SwitchB为二层交换机,SwitchA通过一个三层以太网接口与SwitchB互连。用户主机被划分到两个VLAN:VLAN2和VLAN3。由于业务需要,不同VLAN的用户要求互通。 图1 通过Dot1q…

AI革命:清华大学揭秘大模型工具学习的未来

🌟 未来已来:大模型工具学习开启智能新时代 🌟 清华大学THUNLP最新研究,探索AI工具使用的无限可能 文末有报告免费下载,需要的朋友自行下跳。 亲爱的读者朋友们,人工智能的浪潮已经不可阻挡地涌入我们的…

LabVIEW VI并行执行设置

要在多个程序中运行同一个VI(Virtual Instrument),通常需要确保VI的重入性(Reentrancy)设置正确。在LabVIEW中,可以使用“重入性”(Reentrancy)选项来允许同一个VI同时在多个地方调用…

RAG噪声的设计及其对大模型问答的作用分析

有趣的大模型中RAG噪声的作用分析 大模型(LLMs)在多个任务上表现出色,但存在依赖过时知识、幻觉等问题。RAG作为一种提高LLM性能的方法,通过在推理过程中引入外部信息来缓解这些限制。 Figure 1 展示了一个来自 NoiserBench 的示…

Docker技术

一、Docker简介 1.什么是docker Docker是管理容器的引擎,为应用打包、部署平台,而非单纯的虚拟化技术。 它具有以下几个重要特点和优势: 1. 轻量级虚拟化 :Docker 容器相较于传统的虚拟机更加轻量和高效,能够快速启…

【高中数学/极值/判别式法】已知实数a和b,b在(0,1)区间,a-b=1,则1/(a-1)+1/(5-4b)的最小值是?

【问题】 已知实数a,b,b在(0,1)区间,a-b1,则1/(a-1)1/(5-4b)的最小值是? 【来源】 《解题卡壳怎么办 高中数学解题智慧点剖析》P34 余继光 苏德矿合著 浙江大学出版社出版 【破题点】 将a-1用b取代,发现结果是二次式相除&…

24-8-31-读书笔记(十六)-《契诃夫文集》(十一)([俄] 契诃夫 [译] 汝龙 )

文章目录 《契诃夫文集》(十一)([俄] 契诃夫 [译] 汝龙 )目录阅读笔记记录总结 《契诃夫文集》(十一)([俄] 契诃夫 [译] 汝龙 ) 8月最后一天了,心里很多的感慨&#xff0…

Bluetooth: gatt server example 解读

在 core spec 中有 Example ATT Server contents,这里对此进行解读; Assigned_Numbers.pdf 需要提前准备,可以从 SIG 下载; Step-1 从这个服务看,server handle 是1, 但是第一个 characteristic clare handle是 4,所以不能预设handle 是按顺序连续的; Step-2 Servic…

强推第一本给程序员看的AI Agent教程终于来啦!全方位解析LLM-Agent

AI Agent火爆到什么程度? 🍀OpenAI创始人奥特曼预测:未来各行各业,每一个人都可以拥有一个AI Agent。 🍀比尔盖茨在2023年曾预言:AI Agent将彻底改变人机交互方式,并颠覆整个软件行业。 &#x…

MATLAB生成COE文件

MATLAB代码 % 参数设置 N 4096; % 数据点数量 t linspace(0, 2*pi, N); % 时间向量 width 12; % 位宽% 正弦波,幅度在0到5之间 sine_wave 2.5 * sin(t) 2.5;% 三角波,幅度在0到5之间 tri_wave 5 * (1 - abs(mod(t/(2*pi)*4, 2) - 1));% 方波&…

记一次学习--webshell绕过

目录 第一题 第二题 第三题 第四题 第五题 第一题 <?php$action $_GET[action]; $parameters $_GET; if (isset($parameters[action])) {unset($parameters[action]); }$a call_user_func($action, ...$parameters); 上面题目&#xff0c;下面的call_user_func有一…

Spring 是什么

首先我们先看一个例子。以下是代码的结构。 public interface UserDAO {/*** 根据id删除用户*/void deleteById(); } public class UserDAOImplForMySQL implements UserDAO {Overridepublic void deleteById() {System.out.println("使用MySQL数据库删除信息....")…

day49 | 42. 接雨水 84. 柱状图中最大的矩形

代码随想录算法训练营第 49 天| 42. 接雨水 84. 柱状图中最大的矩形 Leetcode 42. 接雨水 题目链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water/description/ 题目描述&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按…

【第三期实战营闯关作业##LMDeploy 量化部署进阶实践】

《LMDeploy 量化部署进阶实践》这节课内容有些多&#xff0c;因此分了两部分提交了。以下是记录复现过程及截图; 这是执行了下面的命令&#xff0c;占用显存的情况。&#xff08;如截图顶部&#xff09; lmdeploy chat /root/models/internlm2_5-7b-chat --cache-max-entry-co…

视觉检索(以图搜图)技术分享

视觉检索&#xff08;Visual Retrieval&#xff09;是一个涉及计算机视觉和图像处理的技术领域&#xff0c;主要目标是从大量的视觉数据中找到与查询图像或视频相关的内容。视觉检索技术在多个领域都有广泛应用&#xff0c;如医疗图像分析、安全监控、机器人视觉、电子商务等。…

《高等代数》“爪”字型行列式

说明&#xff1a;此文章用于本人复习巩固&#xff0c;如果也能帮助到大家那就更加有意义了。 注&#xff1a;1&#xff09;“爪”字型行列式的第一种求解方法是利用初等行&#xff08;列&#xff09;变换&#xff0c;将第一列除第一行的第 一个数以外的其它数…

浅谈常见的分布式ID生成方案

一、UUID UUID是通用唯一标识码的缩写&#xff0c;其目的是让分布式系统中的所有元素都有唯一的辨识信息&#xff0c;而不需要通过中央控制器来指定唯一标识。 优点&#xff1a; &#xff08;1&#xff09;降低全局节点的压力&#xff0c;使得主键生成速度更快&#xff1b; &…

Llamaindex RAG实践

加入xtunert文档作为提示词 让大模型理解xtuner