pytorch3D Windows下安装经验总结

一、说明及准备工作

最近在安装pytorch3D的时候遇到了很多问题,查了很多博客,但发现讲的都不太全,所以特将自己的及收集到的安装过程经验总结如下。我是在Anaconda中虚拟环境下安装的。

1.1准备工作

官方安装教程如下:https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md,完全按照这个教程安装可能会遇到很多问题,因此需要补充一些细节。安装这个的前提是已经安装了pytorch。

1.2相关包的安装

总共需要安装的包有:

  • fvcore
  • iopath
  • cub
  • scikit-image
  • black
  • usort
  • flake8
  • matplotlib
  • tdqm
  • jupyter
  • imageio
  • plotly
  • opencv-python

这里面除了cub需要单独安装(后面会单独讲),其他都可以用conda直接安装。推荐用conda安装,因为我没用其他方法试过,所以不确定不用conda会出现哪些问题。具体安装过程如下:

  • 首先打开cmd命令窗口,然后创建并激活conda虚拟环境
conda create -n pytorch-gpu python=3.9
conda activate pytorch3d
  • 然后依次执行下面的代码(一行一行来,复制一行粘贴然后回车等待安装完成再继续下一行,直到全部安装完成)
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install jupyter
pip install scikit-image matplotlib imageio plotly opencv-python
pip install black usort flake8 flake8-bugbear flake8-comprehensions



1.3 cub安装配置

cub与cuda toolkit对应关系如下(图片截自https://github.com/NVIDIA/cub):
截自https://github.com/NVIDIA/cub
根据自己的cuda tookit版本选择对应的cub realase版本下载,下载地址为https://github.com/NVIDIA/cub/releases

  • 如下图所示,点击下载解压到自己想安装的位置
    在这里插入图片描述
  • 解压后,添加设置环境变量,变量名CUB_HOME,变量值即为刚才解压的cub的文件路径

在这里插入图片描述

  • 设置完即安装完成。


1.4 MinGW安装

我是按照一些博客教程的步骤安装了这个,但我也不确定是不是一定需要安装,以防万一大家还是安装一下比较好。

  • 具体安装过程可以参考这篇博客http://c.biancheng.net/view/8077.html


二、pytorch3D安装

2.1首先下载解压pytorch3D到想要安装的位置

下载地址:https://github.com/facebookresearch/pytorch3d/releases注意版本要与pytorch对应,每个版本的Pytorch3d下有注明其适用的pytorch版本。

  • 点击下载,然后解压到相应位置即可,如果是cuda虚拟环境下运行,建议下载到虚拟环境的Lib\site-packages目录下,比如我的虚拟环境是torch-gpu,我就把pytorch3D放到D:\software\anaconda3\envs\torch-gpu\Lib\site-packages里面,然后将解压的文件夹重命名为pytorch3D
    在这里插入图片描述
    在这里插入图片描述

2.2 更改相关文件

打开pytorch3D文件夹,找到setup.py文件,打开,将extra_compile_args = {“cxx”: [“-std=c++14”]} 修改为: extra_compile_args = {“cxx”: []};
在这里插入图片描述

2.3 安装pytorch3D

  • 安装VS2019,以管理员身份打开下图所示的x64 Native Tools Command Prompt for VS 2019终端,然后cd到pytorch3d解压后的目录路径里,然后激活虚拟环境。最好用2019,VS2022可能会出一些问题。

在这里插入图片描述

在这里插入图片描述

  • 在窗口依次输入执行下面的命令:
set DISTUTILS_USE_SDK=1
set PYTORCH3D_NO_NINJA=1
  • 最后执行安装pytorch3D的代码
python setup.py install

如果一切顺利,那么等待执行完成,pytorch就安装成功了。
也有可能会遇到一些错误,下面是一些常见错误的总结和解决方法。


三、安装时可能遇到的问题

3.1 遇到如下报错解决方法

C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/include\cub/device/dispatch/dispatch_segmented_sort.cuh(338): error: invalid combination of type specifiers
C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/include\cub/device/dispatch/dispatch_segmented_sort.cuh(338): error: expected an identifier
C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/include\cub/device/dispatch/dispatch_segmented_sort.cuh(379): error: expected a member name

3 errors detected in the compilation of "D:/research/code/pytorch3d/pytorch3d/csrc/pulsar/cuda/renderer.backward.gpu.cu".
renderer.backward.gpu.cu

解决方法:

  • 该错误原因可能是cub版本不正确,重新下载其他版本的然后配置好就行,我遇到的就是这个问题,刚开始下载的是1.10的后来重新下载了1.17的版本把1.10的替换掉就解决了。

3.2遇到如下报错及解决方法

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include\thrust\system\cuda\config.h(78): fatal error C1189: 
#error: The version of CUB in your include path is not compatible with this release of Thrust. 
CUB is now included in the CUDA Toolkit, so you no longer need to use your own checkout of CUB. 
Define THRUST_IGNORE_CUB_VERSION_CHECK to ignore this. ball_query.cu

解决方法:

  • 编辑位于 "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include\thrust\system\cuda\config.h"的config.h文件。Ctrl+F搜索 #ifndef THRUST_IGNORE_CUB_VERSION_CHECK 然后在它前面加上一行 #define THRUST_IGNORE_CUB_VERSION_CHECK 代码.该解决方法参考了https://github.com/facebookresearch/pytorch3d/issues/1299

3.3遇到如下报错及解决方法

subprocess.CalledProcessError: Command ‘[‘ninja‘,-v‘]‘ returned non-zero exit status 1.
...
...
File "D:\Programs\python3.6.8\lib\site-packages\torch\utils\cpp_extension.py", line 1529, in _run_ninja_build
raise RuntimeError(message)
RuntimeError: Error compiling objects for extension

解决方法:

  • 编辑torch\utils文件夹下的cpp_extension.py文件,conda虚拟环境下torch一般位于虚拟环境\Lib\site-packages中,比如我的cpp_extension.py文件位于D:\software\anaconda3\envs\torch-gpu\Lib\site-packages\torch\utils。Ctrl+F搜索 ‘ninja’ 然后将[‘ninja’,‘-v’]改成[‘ninja’,‘–version’]即可

到这里基本上应该能解决大部分问题,如果还有其他问题,就有可能是前面的步骤没做好,或者是我也没遇到过的问题。

最后,祝大家好运 (。◕ˇ∀ˇ◕)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker Tomcat 搭建文件服务器

本文基于openwrt上进行。 步骤 1: 安装 Docker 如果尚未安装Docker,首先需要安装Docker。根据你的操作系统,参考Docker官方文档来完成安装, 这里不做详细介绍。 步骤 2: 拉去docker Tomcat镜像 进入openwrt管理界面,docker选项中 拉取最新…

Java 设计模式——外观模式

目录 1.概述2.结构3.实现3.1.子系统类3.2.外观类3.3.测试 4.优缺点5.使用场景6.源码解析 1.概述 (1)有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯…

Zeus IoT : 基于 SpringBoot 的分布式开源物联网大数据平台

Zeus IoT 是一个集设备数据采集、存储、分析、观测为一体的开源物联网平台,全球首创基于 Zabbix 的物联网分布式数据采集架构,具备超百万级物联网设备的并发监控能力,真正具备工业级性能与稳定性的开源物联网大数据中台。 Zeus IoT 致力于让设…

Zinx框架-游戏服务器开发002:框架学习-按照三层结构模式重构测试代码+Tcp数据适配+时间轮定时器

文章目录 1 Zinx框架总览2 三层模式的分析3 三层重构原有的功能 - 头文件3.1 通道层Stdin和Stdout类3.1.2 StdInChannel3.1.2 StdOutChannel 3.2 协议层CmdCheck和CmdMsg类3.2.1 CmdCheck单例模式3.2.1.1 单例模式3.2.1.2 * 命令识别类向业务层不同类别做分发 3.2.2 CmdMsg自定…

Node.js |(五)包管理工具 | 尚硅谷2023版Node.js零基础视频教程

学习视频:尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手 文章目录 📚概念介绍📚npm🐇安装npm🐇基本使用🐇生产依赖与开发依赖🐇npm全局安装🐇npm安装指定包和删除…

4、Python基本数据类型:数字、字符串、列表、元组、集合、字典

文章目录 1、Python基本数据类型简介2、数字3、字符串4、列表5、元组6、集合7、字典1、Python基本数据类型简介 Python是一种非常强大且易于学习的编程语言,它具有简洁的语法和丰富的数据类型。了解和掌握Python的基本数据类型是学习和使用Python的基础。本文将详细介绍Pytho…

Disk Drill v5.3.1313(数据恢复备份)

Disk Drill是一款功能强大的数据恢复软件,它可以帮助用户恢复已删除、丢失、格式化或损坏的文件,并支持多种存储设备,包括计算机硬盘驱动器、外部硬盘、USB闪存驱动器、内存卡和其他存储介质。它和很多的文件系统都兼容,比如&…

nodejs express uniapp 图书借阅管理系统源码

开发环境及工具: nodejs,mysql5.7,HBuilder X,vscode(webstorm) 技术说明: nodejs express vue elementui uniapp 功能介绍: 用户端: 登录注册 首页显示轮播图&am…

排序算法的分析及实现

目录​​​​​​​ 1. 排序 1.1. 排序的概念 1.2. 排序的稳定性 1.3. 内部排序和外部排序 2. 直接插入排序 2.1. 直接插入排序 2.2. 直接插入排序的两种情况 1. 情况一 2. 情况二 2.3. 直接插入排序的单趟排序 2.4. 直接插入排序的完整实现 2.5. 直接插入排序的时…

【江协科技-用0.96寸OLED播放知名艺人打篮球视频】

Python进行视频图像处理,通过串口发送给stm32,stm32接收数据,刷新OLED进行显示。 步骤: 1.按照接线图连接好硬件 2.把Keil工程的代码下载到STM32中 3.运行Python代码,通过串口把处理后的数据发送给STM32进行显示 …

【图像分类】【深度学习】【Pytorch版本】AlexNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】AlexNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】AlexNet模型算法详解前言AlexNet讲解卷积层的作用卷积过程特征图的大小计算公式Dropout的作用AlexNet模型结构 AlexNet Pytorch代码完整代码总结 前言 AlexNet是…

论文阅读——What Can Human Sketches Do for Object Detection?(cvpr2023)

论文:https://openaccess.thecvf.com/content/CVPR2023/papers/Chowdhury_What_Can_Human_Sketches_Do_for_Object_Detection_CVPR_2023_paper.pdf 代码:What Can Human Sketches Do for Object Detection? (pinakinathc.me) 一、 Baseline SBIR Fram…

Cesium:WFS请求两种方式

以本地发布的上海市浦东区行政区划WMS地图服务为例,讲述Cesium中WFS请求的两种方式及其优缺点。 服务加载地址及其参数如下, 服务加载地址:http://localhost:8089/geoserver/pudong/wms 加载参数:layerName:pudong:distractservice: "WMS",request: "GetMa…

8-2、T型加减速计算简化【51单片机控制步进电机-TB6600系列】

摘要:本节介绍简化T型加减速计算过程,使其适用于单片机数据处理。简化内容包括浮点数转整型数计算、加减速对称处理、预处理计算 一、浮点数转整型数计算 1.1简化∆t_1计算 根据上一节内容已知 K0.676 step1.8/X(x为细分值,1.8对…

【Leetcode】349. 两个数组的交集

题意 给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 思路 这道题目,主要要学会使用一种哈希数据结构:unordered_set,这个数据结构可以解决…

MYSQL:主从复制简述

(图片来自于马士兵教育) 从节点的I/O线程会请求主节点的Binlog,并且将得到的Binlog写入到本地relay_log(中继日志)中,SQL线程会读取realy_log中的日志文件,并且解析成SQL逐行执行。 主库会生成…

XSS漏洞利用工具BeEF

BeEF是Browser Exploitation Framework的缩写。随着人们越来越多地关注针对包括移动客户端在内的客户端的网络传播攻击,BeEF使专业的渗透测试人员可以使用客户端攻击向量来评估目标环境的实际安全状况。与其他安全框架不同,BeEF超越了硬化的网络边界和客…

win11下使用VMmare设置CentOS7里面的静态IP

1,win11上的VMware 8 设置 2,选择VMmare上的虚拟网络编辑进行设置 #3,接下来进入虚拟机设置(就是进入CentOS7 打开终端 右键 Open Terminal ) # 切换root su root #ksana #编辑网络配置文件 vi /etc/sysconfig/networ…

【LeetCode:318. 最大单词长度乘积 | 模拟 位运算】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

nn.embedding函数详解(pytorch)

提示:文章附有源码!!! 文章目录 前言一、nn.embedding函数解释二、nn.embedding函数使用方法四、模型训练与预测的权重变化探讨 前言 最近发现prompt工程(如sam模型),也有transform的detr模型等都使用了nn.Embedding函…