【亲测】Swin-Transformer 自定义数据集图像分类_swin-transformer类别数-程序员宅基地

技术标签: 深度学习  transformer  pytorch  

Swin-Transformer是当前热门的深度学习框架,适用于多种视觉任务,相关的原理,网上有很多资源,大家可自行查看,这里主要介绍其在图像分类方面的代码调试经验,方便各位快速上手实验。Swin-Transformer代码链接点击进入

在这里插入图片描述

实验环境及配置:
Pytorch: 1.7.1
CUDA: 10.1.243 版本(使用 nvcc --version 查看)
GPU:显存8G
操作系统: Centos 7
1 环境配置

其实根据官方的配置步骤,可以实现快速的配置,但是在进行到 Nvidia apex 那个步骤的时候,可能会出现一些问题,因为可能我们不是那么容易安装 apex 这个加速框架,等下会进一步介绍。下面先按照代码官方的配置过程来:

1.1 下载官网代码,也可以用官网推荐的以下命令:

git clone https://github.com/microsoft/Swin-Transformer.git (可能会出翔网络问题)
cd Swin-Transformer (进入下载的文件夹)

如果您的网络有问题,不能使用以上命令下载,则直接在官网界面点击下载 zip 压缩包,再进行解压就行。
在这里插入图片描述
1.2 创建并激活虚拟环境,使用以下命令:

conda create -n swin python=3.7 -y (其中虚拟环境 swin 名字,可以自定义)
conda activate swin (进入该虚拟环境)

1.3 确定自己GPU 安装的 CUDA 版本(运行时的版本),使用 nvcc -V (或 nvcc --version)使用 nvidia-smi 看到的是 CUDA 为驱动API版本,和运行时的版本不同,这个需要注意。

用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。nvidia-smi就属于这一类API。
用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的。一般后续安装各种包或库,需要此类CUDA编译,所以我们后来需要安装和这个版本对应的 cudatoolkit 版本。
在这里插入图片描述

下面是安装包或库,这个需要在 你刚才创建的那个虚拟环境下进行安装

1.4 安装 PyTorch==1.7.1 and torchvision==0.8.2 with CUDA==10.1:,这里的CUDA 和上面的运行时 API 一样。

conda install pytorch==1.7.1 torchvision==0.8.2 cudatoolkit=10.1 -c pytorch

1.5 安装 timm 包

pip install timm==0.3.2

PyTorch Image Models (timm)是一个图像模型(models)、层(layers)、实用程序(utilities)、优化器(optimizers)、调度器(schedulers)、数据加载/增强(data-loaders / augmentations)和参考训练/验证脚本(reference training / validation scripts)的集合,目的是将各种SOTA模型组合在一起,从而能够重现ImageNet的训练结果

1.6 安装 apex
官方安装语句,但是有时候 git 会因为网络问题,不能下载,且在运行下面第三句话时 pip 时会出现问题。所以我们尽量介绍另外的安装策略。

git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

如果上面的 git 命令无法下载,则采用下面的策略:
在这里插入图片描述
解压下载的文件后,进那个 apex 文件夹就行
在这里插入图片描述
下面说下,我安装过程中出现的问题有:
1) 当然如果您上面的 cudatoolkit 版本没安装正确,同样也会报一个 mismatch 的错误,所以以上的安装一定要安装对版本。
2)同样如果直接运行第三句命令,还会报一个,apex 文件夹中没有 setup.py 文件等,此时注意到,上面的图中,在apex 文件夹外就有个 setup.py 把那个文件直接复制进 apex 文件夹,再次运行上面的 第三条命令,看看能不能顺利执行,如果最终成功了,恭喜您,如果没成功,不要着急,我还有另外的安装方式。

如果上文的命令不行,请使用下面的命令:
1 在 apex 文件夹中运行 python setup.py install
2 然后运行 python setup.py build 即可,然后编译为我后面截图那个文件夹,
3 把那个apex 复制到swin-tranformer 的代码目录,即可。
如果还不行, 可以直接使用 pip install apex 试试

在这里插入图片描述
这个是我编译好的apex 文件夹情况,
在这里插入图片描述
编译好的 apex 直接复制到 swin-transformer 文件夹
在这里插入图片描述
1.7 安装一些其他包:

pip install opencv-python==4.4.0.46 termcolor==1.1.0 yacs==0.1.8

以上就是环境配置,如果配置完全,即可进行下面的步骤了。

2 数据准备

数据集处理成 imagenet 的格式,即每个类别放在一个文件夹,最好是类名直接命名为数字形式,也可以是真是类标,然后将 训练集 验证集 测试集 分文件夹存储,每个文件夹的格式就像下面的 样子。
在这里插入图片描述
在这里插入图片描述

代码更改

1 打开 config.py , 将数据集的文件夹写进去,这样到时候训练时候,就不用再写了。
2 修改类别的数量,因为默认是 1000类,
3 下载预训练模型,并在 config.py中配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用百度云盘下载即可。
在这里插入图片描述
**加粗样式
**
还要改正几个地方,
1 build.py 中的 类别数数量
在这里插入图片描述
2 预训练模型加载过程中,由于自定义数据集类别未必是1000 所以需要改utils.py 中的这个函数,我这里是加了个判断,您也可以改为其他的形式。
在这里插入图片描述
3 测试时候,需要将 数据集改为 test 数据集,因为代码默认 为验证集,在 build.py 中
在这里插入图片描述

单块GPU训练和测试的命令

训练

python -m torch.distributed.launch --nproc_per_node 1 --master_port 12345  main.py \
--cfg configs/swin_tiny_patch4_window7_224.yaml  --batch-size 8 

测试

python -m torch.distributed.launch --nproc_per_node 1 --master_port 12345  main.py --eval\
--cfg configs/swin_tiny_patch4_window7_224.yaml --resume 训练模型路径 --batch-size 8 

【以上即为Swin-Transformer图像分类调试过程】
训练过程:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29750461/article/details/120863541

智能推荐

pheatmap:绘制聚类热图的函数_pheatmap基于kmeans绘制热图-程序员宅基地

文章浏览阅读342次,点赞4次,收藏6次。该函数还允许使用 kmeans 聚类聚合行。如果行数太大,以至于 R 无法再处理其分层聚类,大约超过 1000 行,则建议这样做。与其单独显示所有行,不如提前对行进行聚类,并仅显示聚类中心。可以通过参数kmeans_k调整集群的数量。来源:https://www.rdocumentation.org/packages/pheatmap/versions/1.0.12/topics/pheatmap。一个绘制聚类热图的函数,可以更好地控制一些图形参数,如单元大小等。Examples 例子。_pheatmap基于kmeans绘制热图

html div四边阴影效果-程序员宅基地

文章浏览阅读369次。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml..._div四周阴影效果

Java 通过反射获取实体类对应的注释_java获取实体类属性注解-程序员宅基地

文章浏览阅读1.7k次。Java 通过反射获取实体类对应的注释 _java获取实体类属性注解

在使用Mybatis的association属性,两张表中存在相同字段名,联表查询时的冲突解决办法_mybatis association绑定相同对象-程序员宅基地

文章浏览阅读2.3k次,点赞5次,收藏10次。在使用MyBatis进行多表联查时,想要获取关联外键的表的数据信息,使用association进行联查,但当外键表的字段名和主表相同时,外键表的数据就会被覆盖。_mybatis association绑定相同对象

湘潭大学2018年上学期程序设计实践模拟考试3 参考题解_在湘大xx奶茶店夏天推出了新的饮料价格为5元。 很多学生都要买饮料,每个学生-程序员宅基地

文章浏览阅读2.7k次。体验1: 军神太强啦,1小时屯6题,瞬间AK,接下来的90分钟一直在跟榜体验2: A题原题,循环写得好就不麻烦,不然要写很多行,情况要想全并不难。 B题原题,有了上一场的提示之后,这题就不难了。 C题很简单(小声)。 D题卡掉了O(T*N*K*log(N))的方法,卡掉我5发logN ,不过还是可做。 E题水dp(组合数学)。 F题原题,记忆化搜索。体验3: 被DC两题卡到..._在湘大xx奶茶店夏天推出了新的饮料价格为5元。 很多学生都要买饮料,每个学生

微信小程序预览pdf,页面缓存下载过的pdf_微信浏览器请求pdf文件会缓存吗-程序员宅基地

文章浏览阅读2.8k次。需求:  点击预览图标查看该pdf报告问题:  1、最早是直接将请求倒的url放入到<web-view src="{{realUrl}}"></web-view>中展示,ios可以,安卓显示无法查看。  2、通过微信自身的API实现:wx.downloadFile({})、wx.saveFile({})、wx.openDocument({})  3、对于文件较大的,下载较慢,需要点击过的进行缓存,再次点击无需下载,直接打开。  将点击过的下载的url添加给list的tem_微信浏览器请求pdf文件会缓存吗

随便推点

服务部署之配置网络策略服务(NPS)(基于Windows Server 2022)_windows server 部署网络策略服务-程序员宅基地

文章浏览阅读680次。服务部署之配置网络策略服务(NPS)(基于Windows Server 2022)_windows server 部署网络策略服务

视频异常检测 综述(二)_视频异常检测综述-程序员宅基地

文章浏览阅读4.8k次,点赞6次,收藏29次。基于距离、概率、重构的视频异常检测概述_视频异常检测综述

trajan割点模板-程序员宅基地

文章浏览阅读107次。洛谷P3388#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int N=2e4+5;const int mod=1e9+7;vector<int> g[N];set<int> v;int dfn[N],low[N],fa[N];int n,m,tot;void tarjan(int x){

linux如何关闭硬件加速,启用硬件加速是什么意思?如何关闭【详解】-程序员宅基地

文章浏览阅读1k次。导语:小编相信,经常会使用到电脑的朋友们,对于启用硬件加速这个词一定都是不陌生的吧!可是呢,对于一些电脑小白们来说,往往会搞不清楚,这个启用硬件加速到底是个什么意思呢?启用之后,我们的电脑又会发生什么变化呢?也有一些人,在启用之后,却不知道应该如何关闭这个硬件加速,接下来,小编就来为大家介绍一下启用硬件加速是什么意思,以及它应该如何关闭。启用硬件加速是什么意思?简而言之,硬件加速就是利用硬件模块来..._linux 禁用硬件加速合成、图层和素材面板

SHAP: 在我眼里,没有黑箱_python对shap的计算只能针对大数值吗-程序员宅基地

文章浏览阅读8.1k次,点赞13次,收藏191次。1. 写在前面很多高级的机器学习模型(xgboost, lgb, cat)和神经网络模型, 它们相对于普通线性模型在进行预测时往往有更好的精度,但是同时也失去了线性模型的可解释性, 所以这些模型也往往看作是黑箱模型, 在2017年,Lundberg和Lee的论文提出了SHAP值这一广泛适用的方法用来解释各种模型(分类以及回归), 使得前面的黑箱模型变得可解释了,这篇文章主要整理一下SHAP的使用, 这个在特征选择的时候特别好用。这次整理, 主要是在xgboost和lgb等树模型上的使用方式, 并且用一个_python对shap的计算只能针对大数值吗

【操作系统】考研真题攻克与重点知识点剖析 - 第 1 篇:操作系统概述_2021-程序员宅基地

文章浏览阅读625次。这篇文章深入探讨了操作系统的各个方面,以及相关的计算机科学概念。文章的结构包括对操作系统的定义和功能的讨论,涵盖了硬件管理、操作系统特征、启动过程、运行环境等多个方面。作者使用思维导图和具体版本(如哈工大版本、王道版本)作为辅助,系统性地介绍了操作系统的运行机制,包括中断与异常、系统调用等内容。文章还回顾了操作系统的历史发展,按照不同线索(如哈工大版本)进行叙述,涵盖了操作系统的发展与分类、体系结构等方面。最后,文章提到了一些考研真题,强调了对计算机科学相关概念的深入理解。_2021

推荐文章

热门文章

相关标签