ubuntu20.04 conda环境配置Mask2former记录

建议先看完再按照步骤安装

代码地址:GitHub - facebookresearch/Mask2Former: Code release for "Masked-attention Mask Transformer for Universal Image Segmentation"

一、配置环境

1、创建虚拟环境

conda create -n mask2former python=3.8conda activate mask2former

2、安装pytorch

在pytorch官网,找到对应版本pytorch

# CUDA 11.3
conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=11.3 -c pytorch -c conda-forge

通过这个命令安装的pytorch在后续使用时出现了问题(后面会讲到),于是后来我换了安装命令,解决了问题,建议直接用下面的命令安装:

# CUDA 11.3 pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

3、安装opencv-python

pip install -U opencv-python

4、安装detectorn2

如果这些语句下载不下来就直接去网址下载

# under your working directory 
git clone git@github.com:facebookresearch/detectron2.git 
cd detectron2 pip install -e . 
pip install git+https://github.com/cocodataset/panopticapi.git 
pip install git+https://github.com/mcordts/cityscapesScripts.git

5、安装mask2former

cd .. 
git clone git@github.com:facebookresearch/Mask2Former.git 
cd Mask2Former 
pip install -r requirements.txt 
cd mask2former/modeling/pixel_decoder/ops 
sh make.sh

二、准备数据集

ADE20K数据集

数据集文件夹内容如下

ADEChallengeData2016/ images/ annotations/ objectInfo150.txt # 1、下载 instance annotation annotations_instance/ # 2、下面内容由 prepare_ade20k_sem_seg.py 生成 annotations_detectron2/ # 3、下面内容由 prepare_ade20k_pan_seg.py 生成 ade20k_panoptic_{train,val}.json ade20k_panoptic_{train,val}/ # 4、下面内容由 prepare_ade20k_ins_seg.py 生成 ade20k_instance_{train,val}.json

根据以上步骤依次生成数据集所需文件,另外由于我把数据集放在了项目文件夹外,所以在各种py文件中需要修改路径

下载 instance annotation 可以从 MIT Scene Parsing Benchmark,也可以用命令下载

wget http://sceneparsing.csail.mit.edu/data/ChallengeData2017/annotations_instance.tar

然后,运行将语义和实例注释组合为全景注释。

python-datasets/prepare_ade20k_pan_seg.py

并运行提取实例annota

python datasets/prepare_ade20k_ins_seg.py

三、训练

多gpu训练:

python train_net.py --num-gpus 2 --config-file configs/ade20k/panoptic-segmentation/maskformer2_R50_bs16_160k.yaml

以ADE20K数据集为例:

数据集路径在/home/dell/liyan/Mask2Former-main/mask2former/data/datasets/相对应的文件中,最后两行可以设置数据集路径

后续将更新训练的细节和遇到的问题

四、安装遇到问题

1、执行 sh make.sh 后出现问题:

No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda-11.3' Traceback (most recent call last): File "setup.py", line 76, in <module> ext_modules=get_extensions(), File "setup.py", line 54, in get_extensions raise NotImplementedError('No CUDA runtime is found. Please set FORCE_CUDA=1 or test it by running torch.cuda.is_available().')

在 .bashrc 文件中添加

export FORCE_CUDA="1"

然后运行 sh make.sh 后出现

No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda-11.3' running build running build_py running build_ext building 'MultiScaleDeformableAttention' extension Traceback (most recent call last): File "setup.py", line 69, in <module> setup( File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/__init__.py", line 103, in setup return distutils.core.setup(**attrs) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/dist.py", line 989, in run_command super().run_command(command) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/command/build.py", line 131, in run self.run_command(cmd_name) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command self.distribution.run_command(command) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/dist.py", line 989, in run_command super().run_command(command) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 88, in run _build_ext.run(self) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 345, in run self.build_extensions() File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 709, in build_extensions build_ext.build_extensions(self) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 467, in build_extensions self._build_extensions_serial() File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 493, in _build_extensions_serial self.build_extension(ext) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 249, in build_extension _build_ext.build_extension(self, ext) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/Cython/Distutils/build_ext.py", line 135, in build_extension super(build_ext, self).build_extension(ext) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 548, in build_extension objects = self.compiler.compile( File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 525, in unix_wrap_ninja_compile cuda_post_cflags = unix_cuda_flags(cuda_post_cflags) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 424, in unix_cuda_flags cflags + _get_cuda_arch_flags(cflags)) File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 1562, in _get_cuda_arch_flags arch_list[-1] += '+PTX' IndexError: list index out of range

检查CUDA是否可用:你可以在终端中运行以下Python命令来测试CUDA在你的系统上是否可用:

import torch print(torch.cuda.is_available())

这将使用PyTorch来检查CUDA是否可用。如果返回

True,表示CUDA已在你的Python环境中安装并可用。如果返回

False,则CUDA可能未正确安装。

换了一个安装渠道:

# CUDA 11.3 pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

安装成功了,那啥也显示的ture

2、运行时发现PIL库有问题

conda install pillow

解决了

3、训练时报错

AttributeError: module 'numpy' has no attribute 'typeDict'

解决:降低numpy版本到1.21后出现问题

ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject

解决:numpy版本升高到1.22后出现错误:

ImportError: numpy.core.multiarray failed to import
conda install numpy==1.23

4、上一个问题解决后

ImportError: /home/abc/liyan/detectron2-main/detectron2/_C.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZNK2at6Tensor7reshapeEN3c108ArrayRefIlEE

解决:在detactron2-main文件夹下打开终端,进入虚拟环境,删除build文件,重新安装

rm -r build pip install -e .

5、训练时报错

FileNotFoundError: [Errno 2] No such file or directory: 'datasets/ADEChallengeData2016/ade20k_instance_train.json'

原因是数据集路径不对,修改 Mask2Former-main/mask2former/data/datasets 路径下的py文件中的路径,改成绝对路径问题解决

6、上一个问题解决后出现新问题

File "/home/abc/anaconda3/envs/mask2former/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 240, in __init__ assert prefetch_factor > 0 TypeError: '>' not supported between instances of 'NoneType' and 'int'

原因:None 和 int 不能做大小比较,通过print出prefetch_factor的值发现是None,有人说是detectron2安装和torch版本之间的错误,在detectron2的github上有人提问这个问题,他们的解决方法是安装 pytorch 2.1.0 ,但是由于我的cuda版本太低,装不了这么高版本的pytorch,然后我在detectron2-main文件夹中寻找prefetch_factor,发现/detectron2-main/detectron2/data文件夹下的build.py文件中将prefetch_factor设置成了None,于是我把prefetch_factor的值改为2,再次进行训练,这个问题消失,但是消失不代表解决,至于真的解决没有,之后有待考证。

7、上个问题解决后,出现新问题:

dim_t = self.temperature ** (2 * (dim_t // 2) / self.num_pos_feats) Could not load library libcudnn_cnn_train.so.8. Error: /home/abc/anaconda3/envs/mask2former/bin/../lib/libcudnn_ops_train.so.8: undefined symbol: _Z20traceback_iretf_implPKcRKN5cudnn16InternalStatus_tEb, version libcudnn_ops_infer.so.8 Please make sure libcudnn_cnn_train.so.8 is in your library path! 已放弃 (核心已转储)

重新建立软连接

在文件中搜索libcudnn_cnn_train.so.8结果发现在两个路径中存在,一个是anaconda虚拟环境中,一个是/usr/,然后发现,在anaconda中链接的是8.9.1,在usr中链接的是8.2.0,本机中cudnn的版本是8.2.0,所以我觉得,在anaconda环境嗯中的链接应该是链接到8.2.0版本,这两个链接修改之后不报错了,不报错不代表没有错,后续出现问题在解决。

8、

ERROR [11/03 14:48:57 d2.engine.train_loop]: Exception during training: Traceback (most recent call last): File "/home/abc/.local/lib/python3.8/site-packages/tensorboard/compat/__init__.py", line 47, in tf from tensorboard.compat import notf # pylint: disable=g-import-not-at-top ImportError: cannot import name 'notf' from 'tensorboard.compat' (/home/abc/.local/lib/python3.8/site-packages/tensorboard/compat/__init__.py)

这个错误后面还有一个别的错误,应该是缺了一个什么库,安装好了之后,这个错也消失了,所以具体解决方法不详

9、

File "/home/abc/.local/lib/python3.8/site-packages/scipy/optimize/_hungarian.py", line 93, in linear_sum_assignment raise ValueError("matrix contains invalid numeric entries") ValueError: matrix contains invalid numeric entries

待更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2015年第四届数学建模国际赛小美赛B题南极洲的平均温度解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 B题 南极洲的平均温度 原题再现&#xff1a; 地表平均温度是反映气候变化和全球变暖的重要指标。然而&#xff0c;在以前的估计中&#xff0c;在如何界定土地平均数方面存在一些方法上的差异。为简单起见&#xff0c;我们只考虑南极洲。请建…

mysql-exporter监控部署(k8s内)tensuns专用

一、前言 在k8s内部署mysql-exporter监控需要用到deployment、service服务 二、部署 在被监控的mysql中创建监控用户 mysql -u root -p GRANT PROCESS, REPLICATION CLIENT ON *.* TO monitor% identified by 12345678; flush privileges; 创建mysql-exporter服务的yaml文件存…

微信小程序预览pdf,修改pdf文件名

记录微信小程序预览pdf文件&#xff0c;修改pdf名字安卓和ios都可用。 1.安卓和苹果的效果 2.需要用到的api 1.wx.downloadFile wx.downloadFile 下载文件资源到本地。客户端直接发起一个 HTTPS GET 请求&#xff0c;返回文件的本地临时路径 (本地路径)&#xff0c;单次下载…

振弦采集仪在地铁隧道施工监测中的应用与分析

振弦采集仪在地铁隧道施工监测中的应用与分析 振弦采集仪是一种常用的地铁隧道施工监测工具&#xff0c;它通过测量隧道结构中的振弦变化来判断隧道施工的稳定性和安全性。振弦采集仪的应用与分析可以帮助工程师监测地铁隧道施工过程中的变化&#xff0c;及时发现可能的问题并…

test-03-java 单元测试框架 testNG 入门介绍 junit/junit5/testNG 详细对比

拓展阅读 test-01-java 单元测试框架 junit 入门介绍 test-02-java 单元测试框架 junit5 入门介绍 test-03-java 单元测试框架 testNG 入门介绍 junit/junit5/testNG 详细对比 test assert-01-Google Truth 断言 test 系统学习-03-TestNG Spock testng 入门使用教程 开源…

什么是IO,初级Java怎么更好的理解IO流(上)

&#xff08;注&#xff1a;本篇文章分为两个部分&#xff0c;如果想更为深刻的了解IO&#xff0c;请关注下一篇&#xff1b;欢迎大家学习讨论和批评指正&#xff09; IO1 作用 将数据在虚拟机内存和本地磁盘之间进行传输 I&#xff1a;input 输入 O&#xff1a;output 输…

阿里云ECS云服务器优势整理(共9点)

为什么选择阿里云服务器ECS&#xff1f;选择云服务器ECS&#xff0c;可以轻松构建具有以下九大优势的计算资源&#xff0c;阿里云服务器网aliyunfuwuqi.com分享阿里云官网关于云服务器ECS的九大优势&#xff1a; 无需自建机房&#xff0c;无需采购以及配置硬件设施。分钟级交付…

c++学习笔记(12)-traits

1、概念 C 中的 type traits 是一种模板元编程技术&#xff0c;用于在编译期间判断、查询类型的属性。Type traits 可以帮助程序员在编译时进行类型判断&#xff0c;而不是在运行时判断&#xff0c;避免了程序中的不必要开销&#xff0c;并且可以提供更好的类型安全性。 2、用…

探索 WebRTC:数字世界的实时通信魔法

前言 在当今日常生活中&#xff0c;我们期望能够随时随地与朋友、同事或家人进行实时沟通。WebRTC&#xff08;Web实时通信&#xff09;技术就像一种魔法&#xff0c;让这些交流变得无比便捷&#xff0c;而且完全在浏览器中实现&#xff0c;无需下载任何额外应用或插件。 Web…

Linux Ubuntu安装nodejs

nodejs官网 Linux 安装 node&#xff0c;npm &#xff08;详细图解&#xff09; 步骤 下载 wget https://nodejs.org/dist/v20.10.0/node-v20.10.0-linux-x64.tar.xz 解压 tar -xf node-v20.10.0-linux-x64.tar.xz 重命名 mv node-v20.10.0-linux-x64 node 进目录 cd node/b…

对接日志服务器系统,将业务服务器、数据库服务器等系统日志rsyslog统一推送或接入至日志服务器进行检测及日志的抓取分析。

1、客户端业务系统服务器配置&#xff0c;系统日志配置文件默认存放在/etc/rsyslog.conf下&#xff1b; 2、打开系统日志推送配置&#xff08;其它邮件日志、开机日志、消息日志等都可统一接入&#xff09; 3、配置推送地址和协议 这里特别说明一下&#xff1a;【注意&#xff…

stm32学习笔记:TIM-定时中断和外部时钟

定时器四部分讲解内容&#xff0c;本文是第一部分 ​​​​​TIM简介 基本定时器 时基单元&#xff1a;预分频器、计数器、自动重装载寄存器 预分频器之前&#xff0c;连接的就是基准计数时钟的输入&#xff0c;由于基本定时器只能选择内部时钟&#xff0c;所以可以认为这根…

Unity预设体

目录 预设体是什么&#xff1f; 如何创建预设体&#xff1f; 如何修改预设体&#xff1f; 如何删除预设体&#xff1f; 预设体是什么&#xff1f; Unity中的预设体&#xff08;Prefab&#xff09;是一种可重复使用的游戏对象模板。它允许开发者创建一个或多个游戏对象&…

ES实用的深度解构赋值方法

ES6 中允许按照一定模式&#xff0c;从数组和对象中提取值&#xff0c;对变量进行赋值&#xff0c;这被称为解构&#xff08;Destructuring&#xff09;。使用解构赋值可以将复杂的代码整理的更加干净整洁。 1.解构对象 在没有使用解构之前&#xff0c;想要确定对象中的某些属…

一篇了解Maven中的<optional>和<scope>使用

目录 Maven的依赖传递optional 与 scope 的区别scope 的可选值 Maven的依赖传递 依赖管理是maven提供的主要功能之一&#xff0c;无论我们需要什么依赖&#xff0c;只需将它们添加到 POM.xml 中&#xff0c;在构建或运行时所有必要的类和资源都会自动添加到项目的 classpath 中…

自己开发一种编程语言,可以同时开发鸿蒙,Android ios的三个平台的应用

我想要开发一种可以在&#xff0c;鸿蒙操作系统&#xff0c;Android操作系统&#xff0c;和ios操作系统运行的&#xff0c;编程语言,意思是自己开发一种编程语言,可以同时开发鸿蒙,Android ios的三个平台的应用,请问怎么实现,需要哪些技术,flutter为什么可以开发Android,ios应用…

DVWA靶场中的xss-反射型xss、存储型xss的low、medium、high的详细通关方法

目录 1.DVWA反射型xss &#xff08;1&#xff09;Low&#xff1a; &#xff08;2&#xff09;Medium&#xff1a; &#xff08;3&#xff09;Heigh 2.xss存储型 &#xff08;1&#xff09;Low&#xff1a; &#xff08;2&#xff09;Medium &#xff08;3&#xff09;He…

实现 Spring Boot 项目热重载,无需重启,省时省力

实现 Spring Boot 项目热重载&#xff0c;无需重启&#xff0c;省时省力 插件介绍 通过 JRebel 插件 实现 Spring Boot 项目热重载。类似于前端 Webpack 热重载功能 无需重启&#xff0c;省时省力 安装插件 打开 IDEA 在插件中搜索&#xff1a;JRebel 安装成功后重启IDEA …

1.SQL - 概述

1. SQL语句分类 • 数据定义语言&#xff1a;简称DDL(Data Definition Language)&#xff0c;用来定义数据库对象&#xff1a;数据库&#xff0c;表&#xff0c;列等。关键字&#xff1a;create&#xff0c;alter&#xff0c;drop等 • 数据操作语言&#xff1a;简称DML(Data …

一起玩儿物联网人工智能小车(ESP32)——17. 用ESP32的ADC功能读取电源电压

摘要&#xff1a;本文主要介绍如何使用ESP32的ADC功能&#xff0c;读取物联网智能小车的电池电压 今天介绍一个ESP32的新功能——如何利用ESP32的引脚&#xff0c;采集模拟量信息。在前面GPIO的学习中我们知道&#xff0c;可以利用GPIO的引脚读取外部设备输出的高低电平信号&am…