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 name3 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’]即可

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

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

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

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

相关文章

英特尔 SGX 技术概述

目录 介绍概述指示结构Memory安全区页面缓存Enclave Page Cache (EPC)安全区页面缓存映射Enclave Page Cache Map (EPCM) Memory ManagementStructures页面信息Page Information (PAGEINFO)安全信息Security Information (SECINFO)分页加密元数据Paging …

小程序入门——详细教程

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 生活的理想,为了不断更新自己 ! 1.微信小程序 入门 1.1什么是小程序? 2017年度百度百科十大热词之一 微信小程…

小程序的console中出现:。。。不在以下 request 合法域名列表中,请参考文档:。。。的报错解决

报错效果: 其实这个报错不代表自己的代码有问题 但是本强迫症研究了一下,按照以下方法关掉就不会显示这个报错了。 点微信开发者工具中的右上角的详情。点本地设置。勾选不校验。。。HTTPS证书。 即可关闭该报错:

java springboot VUE粮食经销系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE 粮食经销系统是一套完善的完整信息管理类型系统,结合springboot框架和VUE完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发) ,系统具有完整的源代码和数…

多域名证书

多域名证书是一种可以保护多个不同域名的SSL证书,最多可保护250个域名。与单域名证书相比,多域名证书具有更多的优势,比如可以更好地管理多个域名,减少部署证书的次数,提高网站安全性等。多域名证书有三种验证方式可以…

mac电脑安装雷蛇管理软件,实现调整鼠标dpi,移动速度,灯光等

雷蛇官网只给了win版本驱动 mac版本驱动到这里下载: GitHub - 1kc/razer-macos: Color effects manager for Razer devices for macOS. Supports High Sierra (10.13) to Monterey (12.0). Made by the community, based on openrazer. 安装后会显示开发者不明,请丢弃到垃圾桶.…

单片机综合小项目

一、单片机做项目常识 1.行业常识 2.方案选型 3.此项目定位和思路 二、单片机的小项目介绍 1.项目名称:基于51单片机的温度报警器 (1)主控:stc51; (2)编程语言:C语言 (…

00TD时尚儿童穿搭,这件小熊毛衣太好看了吧

寒冷的秋冬季怎么少的了毛衣呢 软糯亲肤又时尚百搭的款谁不爱 除了纯色还有条纹设计 可爱小熊图案可爱又吸睛 经典时尚的款怎么穿都好看哦!

css 特别样式记录

一、 这段代码神奇的地方在于, 本来容器的宽度只有1200px,如果不给img赋予宽度100%,那么图片 会超出盒子,如果给了img赋予了宽度100%,多个图片会根据自己图片大小的比例,去分完那1200px,如图二。…

Netty P1 NIO 基础,网络编程

Netty P1 NIO 基础,网络编程 教程地址:https://www.bilibili.com/video/BV1py4y1E7oA https://nyimac.gitee.io/2021/04/25/Netty%E5%9F%BA%E7%A1%80/ 1. 三大组件 1.1 Channel & Buffer Channel 类似 Stream,它是读写数据的双向通道…

华为9.20笔试 复现

第一题 丢失报文的位置 思路&#xff1a;从数组最小索引开始遍历 #include <iostream> #include <vector> using namespace std; // 求最小索引值 int getMinIdx(vector<int> &arr) {int minidx 0;for (int i 0; i < arr.size(); i){if (arr[i] …

【k8s总结】

资源下载&#xff1a;http://www.ziyuanwang.online/912.html Kubernetes(K8s) 一、Openstack&VM 1、认识虚拟化 1.1、什么是虚拟化 在计算机中&#xff0c;虚拟化&#xff08;英语&#xff1a;Virtualization&#xff09;是一种资源管理技术&#xff0c;是将计算机的…

力扣每日一题43:字符串相乘

题目描述&#xff1a; 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 "2"…

多模态及图像安全的探索与思考

前言 第六届中国模式识别与计算机视觉大会&#xff08;The 6th Chinese Conference on Pattern Recognition and Computer Vision, PRCV 2023&#xff09;已于近期在厦门成功举办。通过参加本次会议&#xff0c;使我有机会接触到许多来自国内外的模式识别和计算机视觉领域的研究…

【云计算网络安全】DDoS 攻击类型:什么是 ACK 洪水 DDoS 攻击

文章目录 一、什么是 ACK 洪水 DDoS 攻击&#xff1f;二、什么是数据包&#xff1f;三、什么是 ACK 数据包&#xff1f;四、ACK 洪水攻击如何工作&#xff1f;五、SYN ACK 洪水攻击如何工作&#xff1f;六、文末送书《AWD特训营》内容简介读者对象 一、什么是 ACK 洪水 DDoS 攻…

【MyBatis系列】- 什么是MyBatis

【MyBatis系列】- 什么是MyBatis 文章目录 【MyBatis系列】- 什么是MyBatis一、学习MyBatis知识必备1.1 学习环境准备1.2 学习前掌握知识二、什么是MyBatis三、持久层是什么3.1 为什么需要持久化服务3.2 持久层四、Mybatis的作用五、MyBatis的优点六、参考文档一、学习MyBatis知…

JavaWeb-10月16笔记

JavaWeb 现实生活中的互联网项目都是javaWeb项目, 包含网络, 多线程, 展示: HTML等其他的前端技术, 界面窗体展示(Swing包,AWT包 窗体), C#,… ** JAVAWeb架构: ** - B/S: 浏览器/服务器 优点: 以浏览器作为客户端, 使用这个软件, 用户不需要下载客户端, 程序更新,不需要…

2000年至2017年LandScan全球人口分布数据(1KM分辨率)

简介&#xff1a; LandScan全球人口分布数据来自于East View Cartographic&#xff0c;由美国能源部橡树岭国家实验室(ORNL)开发。LandScan运用GIS和遥感等创新方法&#xff0c;是全球人口数据发布的社会标准&#xff0c;是全球最为准确、可靠&#xff0c;基于地理位置的&…

【Overload游戏引擎细节分析】视图投影矩阵计算与摄像机

本文只罗列公式&#xff0c;不做具体的推导。 OpenGL本身没有摄像机(Camera)的概念&#xff0c;但我们为了产品上的需求与编程上的方便&#xff0c;一般会抽象一个摄像机组件。摄像机类似于人眼&#xff0c;可以建立一个本地坐标系。相机的位置是坐标原点&#xff0c;摄像机的朝…

AMEYA360-罗姆ROHM马来西亚工厂新厂房竣工

全球知名半导体制造商罗姆为了加强模拟IC的产能&#xff0c;在其马来西亚制造子公司ROHM-Wako Electronics (Malaysia) Sdn. Bhd.(以下简称“RWEM”)投建了新厂房&#xff0c;近日新厂房已经竣工&#xff0c;并举行了竣工仪式。 RWEM此前主要生产二极管和LED等小信号产品&#…