SETR项目运行记录

项目简要介绍

全称为Swin-Transformer-Semantic-Segmentation,看名字我们就知道使用的是transformer,做的是语义分割方面,使用的数据集是Cityscapes。在本文中我们并不对其原理进行解读,只是调试运行该项目。
项目下载地址:

https://github.com/fudan-zvg/SETR

项目采用了mmsegmentation框架,在博主看来不太易于学习与使用。在github上有大佬对其复现,感觉还不错,有需要的小伙伴可以去自行下载,本文还是以初始的代码为例进行调试。

基础配置

首先是按照项目中readme中给出的提示,创建对应环境:

conda create -n open-mmlab python=3.7 #创建conda环境
conda activate open-mmlab#激活环境

conda install pytorch=1.6.0 torchvision cudatoolkit=10.1 -c pytorch#按照pytorch

在执行安装pytorch时由于网络问题出错,再修改了响应时间后也于事无补,因此采用pip的方式。从而能够使用我们的镜像源下载,项目要求使用pytroch1.6,但1.6的版本与我的cuda不符,便选择了pytorch1.8,但在后面发现问题很大,没有合适的mmvc与之对应。因此还是老老实实使用1.6吧,

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch

如果conda命令不行的话可以使用pip命令

pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

配置环境变量

set PATH=full\path\to\your\cpp\compiler;%PATH%

安装相应包

pip install mmcv

从github上下载文件,这里由于我们使用pycharm便不需要执行了

git clone https://github.com/fudan-zvg/SETR.git
cd SETR
pip install -e .  # or "python setup.py develop"

根据requirements进行安装,里面是cityscapesscripts

pip install -r requirements/optional.txt

mklink /D data %DATA_ROOT%

运行配置

该部分是在我运行过程中出现的问题,可能别人运行时不会出现,因此只需要遇到相同错误时看一下即可。

运行train.py文件报错:上面mmcv安装时没有指定版本,导致mmcv版本不符。

AssertionError: MMCV==1.7.1 is used but incompatible. Please install mmcv>=[1, 1, 2], <=[1, 2, 7].

解决方法,卸载重装:

pip uninstall mmcv

重新安装并指定版本,我们就使用1.2.7好了

pip install mmcv==1.2.7

在这里插入图片描述
运行后再次报错:

ModuleNotFoundError: No module named 'mmcv._ext'

这是在开始安装mmcv-full的时候,没有指定版本,选择直接安装,如下:卸载

pip install mmcv-full

默认安装mmcv-full的方式,如果与环境里的cuda和torch版本不匹配,就容易出现上面报错
重新安装使用下面的命令格式:
其中,{cu_version}、{torch_version}分别对应cuda和torch的版本号

pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html

通过查看包可知我们的torch为1.8.1,cuda为11.1
在这里插入图片描述
所以我们的命令为:

pip install mmcv-full==1.2.7 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.1/index.html

这里由于我们上面安装的是mmcv 1.2.4,那么mmcv-full也安装为1.2.7了
在这里插入图片描述
报错信息:

error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio”: https://visualstudio.microsoft.com/downloads/ Tools":

失败了,无法创建轮子,并提升不是pip的问题,而是 Microsoft Visual C++ ,即缺少相关的接口导致的问题,这里有解决方法是安装对应版本的VS,这十好几个G不是闹着玩的吧,好在我们找到了其他解决办法,我们只要使用conda命令安装一个包即可:

conda install libpython m2w64-toolchain -c msys2

其实转念一想,VS这种应对大型项目的程序在这里出错,肯定是由于缺失某种环境导致的,而Anconda创建的conda环境可以说是独立的,那么只需要解决这个小环境中的缺失问题不就可以了吗。当然如果电脑空间足够大就直接安装好了,这种方法就是给我这种穷人准备的,呜呜呜,其实这种方法安装的也不少,大概几百M吧,等不用的适合直接连conda环境一块解决了。然而运行完成后再次安装依旧不成功。呜呜呜
难道没有方法了吗,不,既然无法造轮子,那么我们就把轮子给它

https://download.openmmlab.com/mmcv/dist/index.html

现在明白为啥一定要按照pytorch1.6了,mmcv在这里最高支持到pytorch1.8,而且还没有windows的,难怪之前一直报系统错误,先前虽然显示下载成功但实际上是下载的Linux的形式的报,自然也就无法安装了。没办法,只能先将pytorch卸载然后换成1.6了。

在这里插入图片描述

然后找一个有mmvc的1.6版本 ,进行安装

pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

了解了错误的根本我们再次使用命令来安装,记住要所有的都对应好。mmvc版本,cuda版本,pytorch版本

pip install mmcv-full==1.1.5 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html

果然不出所料,成功了,哈哈哈

在这里插入图片描述
随后我们接着运行train.py文件,出现以下问题,这是我们没有给定参数导致的。

usage: train.py [-h] [--work-dir WORK_DIR] [--load-from LOAD_FROM]
                [--resume-from RESUME_FROM] [--no-validate]
                [--gpus GPUS | --gpu-ids GPU_IDS [GPU_IDS ...]] [--seed SEED]
                [--deterministic] [--options OPTIONS [OPTIONS ...]]
                [--launcher {none,pytorch,slurm,mpi}]
                [--local_rank LOCAL_RANK]
                config
train.py: error: the following arguments are required: config

这是需要给定参数,具体给定什么参数还需要我们研究一下。

更新

根据程序中给的readme提示,我们可以执行.sh文件来运行项目
由于我们已经连接了服务器,所以就很简单了。
打开服务器的终端可以在pycharm中直接进行进行远程服务器的命令行操作,非常方便。

选择Tool——>Start SSH session,选择已经连接好的服务器就可以了

然后我们切换到程序所在的目录:cd program
然后执行我们刚刚的sh命令,此时报错:

-bash: ./tools/dist_train.sh: Permission denied

这是没有权限导致的,执行命令:

chmod 777 ./tools/dist_train.sh

随后再次执行即可。此时可以运行,但再次出错了。

可以通过运行dist_train.sh,但这个运行时涉及分布式训练设置,容易报错,且在执行时报错ModuleNotFoundError: No module named 'mmcv'
这就很奇怪,当我执行
python train.py时依旧报该错误,但在依赖包中我们命名找到了mmcv,且在环境中引用也是正常的,这里就很困惑。

在这里插入图片描述
这里猜测可能是加载动态链接库出了问题,即版本不匹配,查看自己torch和cuda,检查一遍并没有什么问题,哎好烦。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: PyTorch 是一个开源的深度学习库,它提供了高度灵活的神经网络构建和训练能力。其最大的特点是动态计算图机制,这意味着我们可以在模型训练过程中动态地修改、调整网络结构,使得它非常适合研究和实验。下面是关于 PyTorch 的几个重要特性: 1. 动态计算图:PyTorch 使用动态计算图机制,与静态计算图相比,动态计算图可以根据需要灵活地构建、修改和调整网络结构,这使得我们可以更容易理解和调试模型。此外,动态计算图还支持更复杂的模型,例如递归神经网络(RNN)等。 2. 张量操作与自动微分:PyTorch 提供了丰富的张量操作库,可以高效地进行向量和矩阵计算。此外,PyTorch 还支持自动微分,可以自动计算梯度,并且梯度在反向传播时自动更新。 3. 大量的预训练模型:PyTorch 社区提供了大量的预训练模型,这些模型在各种任务上经过了大规模的训练和优化,通常可以用于迁移学习等应用。 4. GPU 加速和分布式训练:PyTorch 支持 GPU 加速,可以利用 GPU 的强大计算能力加速模型训练。此外,PyTorch 还支持分布式训练,可以在多台计算机上同时训练模型,加快训练速度。 5. 简洁的代码:PyTorch 的 API 设计得相对简洁明了,使得用户能够更加直观地理解和使用库中的功能。此外,PyTorch 建立在 Python 上,使得其代码易于编写和调试。 总而言之,PyTorch 是一个功能强大、灵活易用的深度学习库,具有动态计算图、张量操作和自动微分、大量的预训练模型、GPU 加速和分布式训练等特性。它在学术研究中得到广泛应用,同时也被广大的工业界和开发者社区认可和使用。 ### 回答2: PyTorch是一个开源的机器学习库,其目的是为了让用户能够更加方便地构建和训练深度神经网络模型。 首先,PyTorch提供了一个灵活的张量计算库,这使得用户可以使用类似于NumPy的语法来进行张量操作。张量是PyTorch中最基本的数据结构,可以表示任意维度的数组。这使得PyTorch在处理各种类型的数据(如图像、文本、声音等)时变得非常方便。 其次,PyTorch采用了动态图的方法来构建计算图。这意味着用户可以在运行时定义计算图,并且可以根据需要进行修改。相比之下,其他框架(如TensorFlow)使用的是静态图,用户需要在编写代码之前定义整个计算图。动态图使得PyTorch更加易于调试和理解,同时也提供了更大的灵活性。 此外,PyTorch具有丰富的工具和资源,用于帮助用户进行模型训练和部署。例如,它提供了许多预先训练的模型,可以直接用于特定的任务。此外,PyTorch还提供了一些用于数据加载和处理的工具,使得用户能够高效地管理和处理大型数据集。 最后,PyTorch具有优秀的社区支持和文档资源。无论是初学者还是专业人士,都可以从社区中获取有关PyTorch的帮助和指导。此外,PyTorch官方文档详尽而清晰,提供了大量的示例代码和教程,帮助用户快速上手和理解PyTorch的各个功能。 总之,PyTorch是一个功能强大且易于使用的机器学习库,为用户提供了丰富的工具和资源,帮助他们构建和训练深度神经网络模型。无论是在学术研究还是工业应用中,PyTorch都是一个理想的选择。 ### 回答3: PyTorch是一个基于Python的开源机器学习库,被广泛应用于深度学习领域。它提供了丰富的工具和接口,便于用户构建和训练各种神经网络模型。 首先,PyTorch的设计理念是以动态计算图为核心。这意味着PyTorch允许用户在运行时动态地定义、修改和调整计算图,极大地提高了灵活性和可调试性。相比之下,其他许多深度学习框架比如TensorFlow则采用了静态计算图的方式,需要用户先定义好整个计算图再进行训练。 其次,PyTorch还具有良好的易用性和可读性。它的API设计简洁明了,语法与Python非常相似,使得编写模型和训练代码变得更加容易和直观。此外,PyTorch内置了许多实用的工具和函数,比如数据加载、模型优化、损失函数等,大大简化了深度学习流程的实现。 另外,PyTorch具有优秀的性能表现。它充分利用了现代GPU的并行计算能力,能够高效地处理大规模数据和复杂模型。此外,PyTorch还提供了分布式训练的支持,可以通过多台机器或多个GPU实现模型的并行训练,加速训练速度。 最后,PyTorch还积极推动深度学习社区的发展。它具有一个活跃的社区,提供了丰富的教程、示例和文档,方便用户学习和使用。同时,PyTorch也是很多顶尖研究机构和公司所选择的深度学习框架,很多前沿的研究成果都在PyTorch上实现和发布。 综上所述,PyTorch作为一款强大的深度学习库,以其动态计算图、易用性、性能表现和社区支持等优势,被广泛认可并应用于各个领域的深度学习任务中。无论是学术研究还是工业应用,PyTorch都为用户提供了丰富的工具和资源,帮助他们快速搭建和训练高效的神经网络模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭祥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值