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

2024-09-01 00:12

本文主要是介绍【王树森】Vision Transformer (ViT) 用于图片分类(个人向笔记),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片分类任务

  • 给定一张图片,现在要求神经网络能够输出它对这个图片的分类结果。下图表示神经网络有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 的准确率还会提升
    在这里插入图片描述

这篇关于【王树森】Vision Transformer (ViT) 用于图片分类(个人向笔记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125395

相关文章

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear