Vision Transformer Pytorch 实现代码学习记录

目前运营的社交平台账号:

  • CSDN 【雪天鱼】: 雪天鱼-CSDN博客
  • 哔哩哔哩 【雪天鱼】: 雪天鱼个人主页-bilibili.com

可能后续有更新,也可能没有更新,谨慎参考

  • V1.0 24-02-13 ViT 代码的基本训练, 预测推理脚本运行

1 学习目标

  1. 能用官方的 ViT 预训练模型在 imagenet1k 上进行预测推理 完成
  2. 在 ImageNet-1K 的完整验证集上验证下载的官方 ViT 预训练模型的准确率

未处理的问题:

  • 官方的 ViT 预处理模型训练时的图片数据预处理方法是什么?

Github pytorch实现的 ViT 代码下载:deep-learning-for-image-processing/pytorch_classification/vision_transformer at master · WZMIAOMIAO/deep-learning-for-image-processing · GitHub
Note: 非官方仓库代码,但 vit_model.py 即ViT 模型定义代码是用的被 TIMM 采用的代码。

已经处理好的 ImageNet1K数据集网盘链接:
链接:https://pan.baidu.com/s/1sYMIwqkNldmqpaJqDK8lSQ?pwd=2024
提取码:2024

2 运行 flops.py (不重要,可跳过)

先安装fvcore包: pip install fvcore
然后点击运行会出错,报错为:
ValueError: Invalid type <class 'numpy.int32'> for the flop count! Please use a wider type to avoid overflow.

|850

点击红框中的位置进入到 jit_handles.py 文件中,修改 14~19行代码如下:

try:  
    from math import prod  
except ImportError:  
    from numpy import prod as prodnp  
    def prod(x):   
        return int(prodnp(x))

然后再重新运行 flops.py 无报错。结果为:

Self-Attention FLOPs: 60129542144
# 中间有一些红色字体的 warnings
Multi-Head Attention FLOPs: 68719476736

3 训练—train.py

从 vit_model 中导入想要训练的 ViT版本, 把默认导入的 vit_base_patch16_224_in21k 给注释掉,确保加载的预训练权重和实例化的模型class一致。

from vit_model import vit_base_patch16_224 as create_model

运行脚本,默认训练10 epochs, 每轮都会将训练好的权重文件保存至 weights 目录下

模型有 327 MB
用tensorboard 打开 runs 目录下的训练log,如下图所示:

4 预测推理—predict.py

现在我们用训练好的模型进行预测推理,自己从数据集或者网上选择一张图作为输入,预测结果如下图所示:

5 在 ImageNet1K 数据集上进行预测推理

我们可以直接加载官方预训练模型在 ImageNet1K 数据集上进行预测推理,需要准备 imagenet 1k的类别索引 json文件,这里我们从github下载即可:
https://github.com/raghakot/keras-vis/blob/master/resources/imagenet_class_index.json

然后准备好部分的 imagenet1K 数据集作为输入的预测图片,最终效果如下图所示:
|775

在进行 data_transform预处理之后,输入图片数据的最大值为 1,最小值为 -0.97

6 其他未整理的学习资料

  • pytorch实现的ViT的详细思路讲解: GitHub - FrancescoSaverioZuppichini/ViT: Implementing Vi(sion)T(transformer)
    • 对应的中文翻译:Vision Transformer(ViT)PyTorch代码全解析(附图解)_vit代码-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React18原理: 核心包结构与两大工作循环

React核心包结构 1 ) react react基础包&#xff0c;只提供定义 react组件(ReactElement)的必要函数一般来说需要和渲染器(react-dom,react-native)一同使用在编写react应用的代码时, 大部分都是调用此包的api比如, 我们定义组件的时候&#xff0c;就是它提供的class Demo ext…

Stream Query Denoising for Vectorized HD Map Construction

参考代码&#xff1a;截止2024.02未开源 动机与出发点 这篇文章是在StreamMapNet的基础上做的&#xff0c;为了在局部地图感知任务上提升时序上的感知稳定性&#xff0c;参考DN-DETR中的去噪方案&#xff0c;为局部地图感知提出一种针对局部地图元素的加噪声方案以及去噪逻辑。…

在线JSON解析格式化工具

在线JSON解析格式化工具 - BTool在线工具软件&#xff0c;为开发者提供方便。JSON在线可视化工具:提供JSON视图,JSON格式化视图,JSON可视化,JSON美化,JSON美化视图,JSON在线美化,JSON结构化,JSON格式化,JSON中文Unicode等等。以清晰美观的结构化视图来展示json,可伸缩折叠展示,…

精品jsp+ssm人事办公管理系统OA考勤考核出入库

《[含文档PPT源码等]精品jspssm基于java的办公管理系统[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 使用技术&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&…

【Vue】Vue基础入门

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳重求进&#xff0c;晒太阳 Vue概念 是一个用于构建用户界面的渐进式框架优点&#xff1a;大大提高开发效率缺点&#xff1a;需要理解记忆规则 创建Vue实例 步骤&#xff1a; …

微信发送一条消息经历哪些过程。企业微信以及钉钉的IM架构对比

0.前言 微信和钉钉是经常会与到两个IM通讯软件&#xff0c;今天从技术角度对他们两个进行分析。这样也方便对于构建IM系统有更好的了解和认识。如果目标是想构建一个IM即时通信的app或者说想了解一下一条消息的收发会经历什么过程可以详细了解一下。 我们可以想想一下微信发送…

Linux中有名管道和无名管道

无名管道基础 进程间通信介绍 常用通信方式 无名管道&#xff08;pipe&#xff09; 有名管道 &#xff08;fifo&#xff09; 信号&#xff08;signal&#xff09; 共享内存(mmap) 套接字&#xff08;socket&#xff09;过时的IPC通信方式 System V IPC 共享内存&#xff08;sh…

AI大模型开发架构设计(10)——AI大模型架构体系与典型应用场景

文章目录 AI大模型架构体系与典型应用场景1 AI大模型架构体系你了解多少?GPT 助手训练流程GPT 助手训练数据预处理2个训练案例分析 2 AI 大模型的典型应用场景以及应用架构剖析AI 大模型的典型应用场景AI 大模型应用架构 AI大模型架构体系与典型应用场景 1 AI大模型架构体系你…

给你介绍一款适合教培行业的手机软件,很好用,关键还是免费的

给你介绍一款适合教培行业的手机软件&#xff0c;很好用&#xff0c;关键还是免费的&#xff0c;DT浏览器不同于普通意义上的浏览器&#xff0c;DT的含义就是数据资料的意思&#xff0c;更专注于资料的收集和管理&#xff0c;是一款资料管理类的浏览器&#xff0c;也是一款面向…

学生公寓|基于Springboot的学生公寓管理系统设计与实现(源码+数据库+文档)

学生公寓管理系统目录 目录 基于Springboot的学生公寓管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、宿舍列表 2、宿舍公告信息管理 3、宿舍公告类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…

Solidworks:平面工程图练习

把草图变成工程图&#xff0c;遇到第一个问题是线宽需要用鼠标选中后再设置线宽和颜色。我觉得应该有一个自动设置现款的功能&#xff0c;不知道有没有&#xff0c;我找了半天也没找到。 另一个问题是&#xff0c;作业代号字体上下颠倒了&#xff0c;不知道这是啥意思。 第三个…

使用LORA微调RoBERTa

模型微调是指在一个已经训练好的模型的基础上&#xff0c;针对特定任务或者特定数据集进行再次训练以提高性能的过程。微调可以在使其适应特定任务时产生显着的结果。 RoBERTa&#xff08;Robustly optimized BERT approach&#xff09;是由Facebook AI提出的一种基于Transfor…

单片机学习笔记---DS18B20温度传感器

目录 DS18B20介绍 模拟温度传感器的基本结构 数字温度传感器的应用 引脚及应用电路 DS18B20的原理图 DS18B20内部结构框图 暂存器内部 单总线介绍 单总线电路规范 单总线时序结构 初始化 发送一位 发送一个字节 接收一位 接收一个字节 DS18B20操作流程 指令介…

L2-002 链表去重

一、题目 二、解题思路 结构体数组的下标表示该节点的地址&#xff0c;value 表示该节点的值&#xff0c;next 表示下一个结点的地址。result1 表示去重后的链表的节点的地址&#xff0c;result2 表示被删除的链表的节点的地址。 flag 表示节点对应的值是否出现过&#xff0c;…

第二节:轻松玩转书生·浦语大模型趣味Demo

参考教程&#xff1a;https://github.com/InternLM/tutorial/blob/main/helloworld/hello_world.md InternLM-Chat-7B 智能对话 Demo 终端运行 web demo 运行 1.首先启动服务&#xff1a; cd /root/code/InternLM streamlit run web_demo.py --server.address 127.0.0.1 --…

Python爬虫之文件存储#5

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx 文件存储形式多种多样&#xff0c;比如可以保存成 TXT 纯文本形式&#xff0c;也可以保存为 JSON 格式、CSV 格式等&#xff0c;本节就来了解一下文本文件的存储方式。 TXT 文本存储 将数据保存到 TXT 文本的操作非常简单&am…

Stable Diffusion 模型下载:DreamShaper XL(梦想塑造者 XL)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型&#xff0c;可以生成写实、原画、2.5D 等…

给定长度为n的数组b,求对于任意1<=l<=r<=n, 求b[i] + b[j] + b[k] - (r - l) 的最大值(l<=i, j, k<=r)

题目 思路: #include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn = 1e6 + 5, inf = 1e18 + 5, maxm = 4e4 + 5,…

leetcode(双指针)11.盛最多水的容器(C++详细解释)DAY9

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回…

利用pandas读取MongoDB库中的数据

下方代码的主要目的是从MongoDB数据库中获取数据&#xff0c;并使用pandas库将其转换为DataFrame。 # codingutf-8 from pymongo import MongoClient import pandas as pd# 创建MongoDB客户端连接 client MongoClient() # 选择数据库douban中的集合tv1 collection client[do…