前言
这里先说一些题外话,在感情路上,大家都或多或少经历过一些挫折,因此我帮我朋友问大家一个经典的感情问题:当你喜欢上一个对自己没有感觉的女生的时候应该怎么办!
哈哈,欢迎家人们在评论区留言~
咳咳,言归正传了啊~
1. 下载代码
如果想复现一篇论文的模型,那么我们首先得找到这篇论文吧,然后论文里一般是有代码的链接的(链接一般放在在摘要的最后)。
像TransUNet这篇论文的话,论文链接:https://arxiv.org/pdf/2102.04306.pdf
代码链接:https://github.com/Beckschen/TransUNet
OK,找到代码后下载到本地再解压就好啦!
2. 用IDE打开代码文件
由于我用的是老师的电脑(虽然我自己电脑的配置不太行,但是老师电脑的配置还是可以滴,嘻嘻),所以跑项目的话就相当于在自己本地跑一样,就不用连远程服务器那么麻烦啦~
由于我一直用的是Pycharm,所以直接用Pycharm打开项目文件夹就好了。
用Pycharm打开项目之后,首先我们先打开Readme哈,看看作者给我们留下来什么有用的提示。
(1)下载预训练模型参数
从Readme中可以看出我们首先得下载谷歌的 VIT 预训练模型参数,点开作者给的链接打开Google Cloud,打开之后的页面是这个样子滴:
Ps:如果这个网站进不去,emmm,你们懂得……可能需要……哈哈
点开图中红色框框的目录,里面就是我们需要的所有模型的参数,点进去之后的页面是这样的:
里面的这些.npz文件就是 VIT 预处理模型参数,我们都下载到本地就好了。下载到本地方式:右击上图中红色小框框的小箭头,点击“链接另存为……”,然后下载到本地指定的文件夹就好了。慢慢下载吧……Patience is key in life !
经过漫长的等待之后,终于所有的模型参数文件都下载好了,嘿嘿。
(2)下载数据集
这里的数据集是论文作者给出的数据集。我将数据集放到百度网盘里了,需要的话自取吧!
网盘链接:https://pan.baidu.com/s/1yy-fz1hWxSFkBnW-DDLNUA?pwd=zbbb
提取码:zbbb
下载好预训练模型参数文件和数据集后,将文件的路径按照作者给出的参考路径配置好,参考路径如下:
(3)配置环境
作者要求的环境是python=3.7,以及需要以下的包:
可能因为作者在写代码时比较早了,所以对应的torch和torchvision的版本都比较老,我这两个包没有和作者的版本对应,我觉得应该关系不大吧,毕竟高版本应该是兼容低版本的。那么在这里我和大家说一说该怎么从零创建一个环境来运行项目。
(1)首先在自己的电脑上安装anaconda(或者miniconda)
可以到anaconda的官网下载,anaconda网址:https://www.anaconda.com/
点击这里的下载就可以了,但是下载速度可能会比较缓慢~
所以也可以选择到国内的镜像站去下载,清华镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
从中选一个自己需要的就行了,比如说:
下载好以后选择好安装路径之后基本上都是“下一步”就行了,如果不会的话可以随便找个教学视频看一下就可以了。
(2)创建一个虚拟环境
在安装好anaconda后,进入anaconda prompt。
首先,创建一个虚拟环境:
conda create -n TransUNet python=3.7
这里的TransUNet是环境名称,根据自己需要改就行了。
然后下载torch,进到Pytorch的官网下载就行了,Pytorch网址:https://pytorch.org/get-started/locally/
找到自己需要的版本,然后在anaconda prompt中执行对应的命令行就行了:
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
最后下载项目所需要的一些包:
首先可以设置conda的一些下载源。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud//pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
其次,再下载需要的包,尽量使用conda命令下载,不要使用conda和pip命令混合用,这样可能会导致包之间的版本冲突。
(3)在Pycharm中配置好对应的虚拟环境
这一步我就不细说了哈,b站的教学视频都挺多的~
(4)运行train.py代码
终于,不出意外的的话要出意外了 ,运行代码的时候报错了……
说实话,代码报的错我看不懂,哈哈~嗝,这时候我请教了我的组友和师兄。一开始是怀疑环境是不是有问题,于是我又将环境删了重新按照一样的步骤创建了一遍,然后重新运行代码,发现还是报出同样的错误,因此不是环境的问题。
然后在师兄的帮助下,以及在网上查阅了一些资料后总结出是路径的问题,因为作者给出的代码可能是在Linux系统上跑的,然而我的代码是在Windows系统上跑的,因此文件路径的斜杠会有不同。
参考博客:https://blog.csdn.net/qq_37278761/article/details/121493618
解决方法参考这篇博客就行啦~
但是,又遇到了一个新的错误:
一般网上的做法都是将num_workers设置成0,参考博客:https://blog.csdn.net/qq_37652891/article/details/123460932
但是我同时也找到一篇博客讲述了另一种方法,但是感觉有些麻烦,我就没有采取了,链接:https://www.cnblogs.com/applerun/p/15669615.html
最终,代码成功运行起来啦!!!
(5)运行test.py代码
终于,在运行完train.py之后,再运行test.py时又报错了,嘿嘿。真是妙蛙种子进了米奇妙妙屋——妙极了!
然后我又在网上找了一下原因,发现原因是作者给出的代码里train.py和test.py的max_interations、max_epochs和vit_name不一样!!!
train.py:
test.py:
所以将test.py中的这三个参数值和train.py中的参数值保持一致就可以了。
Ps:train.py和test.py中还有一个参数是is_pretrained,就是是否进行预训练,这个参数也要保持一致。
参考博客:https://blog.csdn.net/sinat_39385228/article/details/120011354?spm=1001.2014.3001.5501
有很多小伙伴想看文件结构图,前段时间太忙了,所以有很多家人们的私信和评论都没有回复,抱歉!!!现在将文件结构图在这里分享给大家吧。
3. 总结
因为我用的是老师的电脑(相当于本地跑代码),然而有很多友友们是通过连接远程Linux服务器运行代码,所以本篇博客的教程还是会有一点不一样。就是缺少了将远程Linux服务器和本地Pycharm连接的一个过程,如果大家需要的话,可以在评论区留言,我可以再写一篇关于Pycharm连接远程服务器的博客哈~ 看到这里,家人们不妨点个赞关注一波噻,阿里嘎多~