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

基于Vision Transformer的mini_ImageNet图片分类实战

【图书推荐】《PyTorch深度学习与计算机视觉实践》-CSDN博客

PyTorch计算机视觉之Vision Transformer 整体结构-CSDN博客

mini_ImageNet数据集简介与下载

mini_ImageNet数据集节选自ImageNet数据集。ImageNet是一个非常有名的大型视觉数据集,它的建立旨在促进视觉识别研究。ImageNet为超过1400万幅图像进行了注释,而且给至少100万幅图像提供了边框。同时,ImageNet包含2万多个类别,比如“气球”“轮胎”和“狗”等类别,ImageNet的每个类别均不少于500幅图像。

训练这么多图像需要消耗大量的资源,为了节约资源,后续的研究者在全ImageNet的基础上提取出了mini_ImageNet数据集。Mini_ImageNet包含100类共60000幅彩色图片,其中每类有600个样本,每幅图片的规格为84×84。通常而言,这个数据集的训练集和测试集的类别划分为80:20。相比于CIFAR-10数据集,mini_ImageNet数据集更加复杂,但更适合进行原型设计和实验研究。

mini_ImageNet的下载也很容易,读者可以使用提供的库包完成对应的下载操作,安装命令如下:

pip install MLclf

Vision Transformer模型设计

下面就是对训练过程的Vision Transformer进行模型设计,在11.1.4节完成的Vision Transformer模型的设计,针对的是224维度大小的图片,而此时使用的是mini版本的ImageNet,因此在维度上会有所变换。本例Vision Transformer模型的完整代码如下:

import torch
from vit import PatchEmbed,Blockclass VisionTransformer(torch.nn.Module):def __init__(self,num_patches = 1,image_size = 84,patch_size = 14,embed_dim = 588,num_heads = 6,qkv_bias = True,depth = 3,num_class = 64):super().__init__()#初始化PatchEmbed层self.patch_embed  = PatchEmbed(img_size = image_size,patch_size=patch_size,embed_dim=embed_dim)#增加一个作为标志物的参数self.cls_token = torch.nn.Parameter(torch.zeros(1, 1, embed_dim))#建立位置向量,计算embedding的长度self.num_tokens = (image_size * image_size) // (patch_size * patch_size)self.pos_embed = torch.nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))#这里在使用block模块时采用了指针的方式,注意*号self.blocks = torch.nn.Sequential(*[Block(dim=embed_dim, num_heads=num_heads, mlp_ratio=4.0, qkv_bias=qkv_bias) for _ in range(depth)])#最终的logits推断层self.logits_layer = torch.nn.Sequential(torch.nn.Linear(embed_dim, 512),torch.nn.GELU(),torch.nn.Linear(512, num_class))def forward(self,x):embedding = self.patch_embed(x)#添加标志物cls_token = self.cls_token.expand(x.shape[0], -1, -1)embedding = torch.cat((cls_token, embedding), dim=1)  #[B, 197, 768]embedding += self.pos_embedembedding = self.blocks(embedding)embedding = embedding[:,0]embedding = torch.nn.Dropout(0.1)(embedding)logits = self.logits_layer(embedding)return logitsif __name__ == '__main__':image = torch.randn(size=(2,3,84,84))VisionTransformer()(image)

《PyTorch深度学习与计算机视觉实践(人工智能技术丛书)》(王晓华)【摘要 书评 试读】- 京东图书 (jd.com)

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

相关文章:

  • JS中map()使用记录
  • JavaWeb学习——请求响应、分层解耦
  • Vue中!.和?.是什么意思
  • 秋招突击——7/22——复习{堆——前K个高频元素}——新作{回溯——单次搜索、分割回文串。链表——环形链表II,合并两个有序链表}
  • android13禁用某个usb设备
  • tmux相关命令
  • 初创小程序公司怎么选服务器合作商
  • 基于微信小程序+SpringBoot+Vue的自习室选座与门禁系统(带1w+文档)
  • 【Linux】进程IO|重定向|缓冲区|dup2|dup|用户级缓冲区|模拟缓冲区
  • bug bug bug
  • 医疗器械上市欧美,需要什么样的网络安全相关申报文件?
  • 【UbuntuDebian安装Nginx】在线安装Nginx
  • Jacoco 单元测试配置
  • App Instance 架构示例
  • 【论文速读】| MoRSE:利用检索增强生成技术填补网络安全专业知识的空白
  • pip install albumentations安装下载超级细水管
  • 驱动开发系列07 - 驱动程序如何分配内存
  • 【Jackson】注解及其使用
  • LeetCode24 两两交换链表中的节点
  • AI OS
  • Dubbo 黑白名单机制详解
  • 配电房智能巡检机器人怎么选?
  • husky引发git commit报错的解决方案
  • 韩顺平0基础学Java——第37天
  • Layer2区块链扩容方案(1)——总述
  • AWS监控工具,监控性能指标
  • 义务外贸wordpress独立站主题
  • 初等数论精解【4】
  • MongoDB教程(二十二):MongoDB固定集合
  • 20240724----idea的Java环境卸载与安装