Swin-Transformer分类源码(已跑通)
标签:swin-transformer
作者:炼⼰者
本博客所有内容以学习、研究和分享为主,如需转载,请联系本⼈,标明作者和出处,并且是⾮商业⽤途,谢谢!
这是跑通的分割源码介绍,⼤家有需要可以参考⼀下
1、Swin-Transformer分割源码(已跑通)
2、关于swin transformer原理的⼀些补充理解
3、Swin-Unet(分割改编)
⼀. 概要
最近swin-transformer⼤⽕,代码开源两天,girhub直接飙到1.9k。估计接下来关于和swin-transformer相结合的各种⽹络结构paper就要出来了,哈哈,我也是其中的⼀员,拼⼿速吧各位。它的原理⽹上的博客
已经讲的⾮常的细致了,甚⾄还有带着读源代码的。这些⼤佬真的很强,下⾯会放⼀些本⼈读过的⾮常有助于理解的博客。我在这⾥主要分享的是官⽅源码如何跑通,跑通它的代码还是⾮常不容易的,有很多的⼩坑。对于我们⼩⽩⽽⾔,跑通代码才能给我们继续了解原理的信⼼,然后也可以⼤胆的debug,去验证⾥⾯的代码是否与论⽂所述的⼀致。
⼆. 正⽂
1. 相关博客分享
A、与代码相关的讲解
(1)、CV+Transformer之Swin Transformer ,这篇是知乎⼀个⼤佬最早分享的关于swin-transformer代码讲解的博客。这⾥⾯的代码不是官⽅开源的代码,算是野⽣代码。但也很有助于对swin-transformer的理解,⼤家可以参考。
(2)、图解Swin Transformer,这篇是关于官⽅源代码的讲解了,主要讲的是swin-transformer的结构。
B、与论⽂原理相关的讲解
2021-Swin Transformer Attention机制的详细推导 这篇博客相当详尽,也是最近才发现的,⾥⾯竟然⼿推了复杂度的计算公式,还有⼀些attention mask的计算,可以参考⼀波⼉。
想要好好理解swin-transformer真的⾮常建议论⽂和代码结合着读,相互印证,才可以更好的理解,也⽅便⾃⼰魔改,各种应⽤。
2、官⽅swin-transformer源码
戳右边:Swin-Transformer源码
对了,我主要分享关于分类应⽤的代码。分类问题⽐较简单,利⽤这个任务去了解swin-transformer再合适不过了。
这⾥给个中⽂版的步骤吧
配置环境
把这份代码clone到你的服务器上,或者本地
创建运⾏环境,并进⼊环境
conda create -n swin python=3.7 -y
conda activate swin
安装需要的环境
conda install pytorch==1.7.1 torchvision==0.8.2 cudatoolkit=10.1 -c pytorch
这⾥注意⼀下⾃⼰的环境,我这边的cuda是10.1的,所以可以直接按着官⽅给的这个来。怎么看⾃⼰的cuda环境呢,有很多种⽅法,最靠谱的是这个:
cat /usr/local/
别看nvidia-smi的那个,那个不准。
安装 timm==0.3.2:
pip install timm==0.3.2
好了,⼤头来了,坑爹的apex,安装它是相当的难受。
我是在另⼀台服务器上玩⼉不来,然后换了⼀台⼜可以了,挺迷的。⼤伙⼉可以先按照官⽅的那个操作来,如果安装不了,可以下载我这边提供的apex⽂件,然后再按照官⽅的那个操作再来⼀遍。注意啊,apex安装不成功的原因基本就是cuda版本和torch版本不匹配,这个我已经有⼼理阴影了,在这⾥
不多提。假设你这边下载了我这边的apex⽂件,尽量和我⼀致吧,把apex⽂件放在swin-transformer这个代码⽂件之外,别掺和在⼀起。然后按照以下操作:
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--
cuda_ext" ./
继续安装其他环境
pip install opencv-python==4.4.0.46 termcolor==1.1.0 yacs==0.1.8
环境配置完毕!!!
数据集
官⽅这边匹配代码的数据集是imagenet,但是imagenet太⼤了,咱只是想跑通⼀下,然后看看⾥⾯的源码咋回事⼉,感觉感觉,犯不着去下载这么⼤的数据。真羡慕你们能看到这篇博客,来来来,我这⼉提供了⼩型版的imagenet的数据集,统⼀放到下⾯了,百度⽹盘⾃取。
运⾏代码
有了数据,有了代码,那就运⾏了
⾸先是训练的运⾏⽅式:
python -m torch.distributed.launch --nproc_per_node 4 --master_port 12345 main.py --cfg
configs/swin_tiny_patch4_window7_224.yaml --data-path imagenet --batch-size 64
--data-path对应的就是数据⽂件所在的位置
然后是测试的运⾏⽅式:
python -m torch.distributed.launch --nproc_per_node 1 --master_port 12345 main.py --eval --cfg
configs/swin_tiny_patch4_window7_224.yaml --resume /pth/swin_tiny_patch4_window7_224.pth --data-path imagenet
补充⼀个你可能遇到的bug,CalledProcessError & RuntimeError。遇到这个bug的原因就是上⾯的命令⾥⾯写的有问题,⽐如路径写错了或者压根⼉路径对应的⽂件就不存在,那么就会报这样的错误,
⼤家注意
swin-transformer⽂件⽬录
这就是从官⽅源码那边clone下来的,区别在于我这⾥加了个pth⽂件,就是模型⽂件,我提供的百度⽹盘⽂件⾥⾯有,还有imagenet⽂件夹,这⾥⾯放着数据。
所传百度⽹盘的界⾯
这是从⽹盘下载下来的东西,apex就别放在swin-transformer⽂件⾥⾯了,跟它并⾏就好。然后数据⽂件解压缩之后,记得改名为imagenet。
好了这样操作下来⼤概率是可以跑通的
3、⼩结
如果跑的还是有问题,⼤家可以下⾯留⾔,我们交流。接下来我也打算分享⾃⼰关于swin-transformer的理解体会,尽可能把过程中收集的资料,⽂献都分享在这⾥,⼤家共同进步。
希望可以帮助到⼤家,如果你觉得这篇⽂章对你有⼀定的帮助,那就点个赞⽀持⼀下吧!如果有什么问题的话也可以在⽂章下⾯评论,我们⼀起交流解决问题!
以下是我所有⽂章的⽬录,⼤家如果感兴趣,也可以前往查看
源代码电影讲解戳右边:打开它,也许会看到很多对你有帮助的⽂章
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论