Windows安装mmdet3d v0.17.1

ops/2024/9/24 2:08:36/

背景

环境

windows 11家庭版, 64 位操作系统, 基于 x64 的处理器,显卡NVIDIA GeForce RTX 3060

需求

阅读一个3D目标检测源码,需要用到模块mmdetection3d == v0.17.1,关于该模块的安装说明或教程几乎都是在Liunx环境下的,本人需要在Windows环境下安装和使用该模块。

注意

没有显卡的电脑是无法在windows下安装mmdet3d的,本人折腾多次都未成功,换了一台带显卡的电脑才搞定。

软件版本总结

cuda=11.1.1
cudnn=8.9.7
microsoft visual studio=2017 Professional
python=3.8.19
torch=1.9.1
torchvision=0.10.1
torchaudio==0.9.1
mmcv-full=1.4.0
mmdet=2.14.0
mmsegmentation=0.14.1
mmdet3d=0.17.1

安装步骤

1、安装CUDA+CUDNN:

显卡RTX 3060最高支持cuda 12.3,但为配合mmdet3d v0.17.1模块的安装,本人安装了cuda 11.1.1 + cudnn 8.9.7

安装教程参考如下博文:
windows系统CUDA的详细安装教程》
https://blog.csdn.net/zyq880625/article/details/138086225

2、安装Microsoft visual studio(简称VS):

安装mmdet3d需要C++代码编译环境,且为适配mmdet3d v0.17.1版本,必须安装VS2017~VS2019,本人开始安装的VS2022会报错,查看报错后选择安装VS2017。
VS2017下载:
链接: https://pan.baidu.com/s/1JQKtYEwUiMSzfr59_FPxwQ 提取码: 8u3t
选择压缩包中的vs_Professional.exe安装, 在选择需要安装的组件时,选择如下1个即可:
在这里插入图片描述
安装成功后,需要将cl.exe所在的路径添加到系统环境变量,注意cl.exe在VS2017的安装目录内,有4个文件夹包含cl.exe,本人只将Hostx86\x64添加到了环境变量:

.\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x64\

mmdet3d_39">3、安装mmdet3d

conda create -n open-mmlab python=3.8 -y
conda activate open-mmlabpip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.htmlpip install mmcv-full==1.4.0
pip install mmdet==2.14.0
pip install mmsegmentation==0.14.1git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
git checkout v0.17.1 # Other versions may not be compatible.
pip install -e .

问题出现最多的是上面步骤的最后一步,也就是mmdetection3d的安装:pip install -e .,要注意,这个步骤得确保你是在Git Bash窗口执行,而不是在cmd、pycharm的终端、Anaconda prompt等界面,否则会有字符解码问题,而在Git Bash窗口执行虚拟环境的pip安装模块,得用虚拟环境pip的绝对路径来安装,按如下命令安装mmdetection3d

./anaconda/envs/open-mmlab/Scripts/pip3.exe install -e .

接下来,安装mmdet3d的过程中,可能会发生如下错误:

subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

参考博客解决:
https://www.cnblogs.com/yunshangyue71/p/13230575.html
上述问题解决后,继续执行mmdetection3d的安装,可能会报如下类似的错误:

LINK : fatal error LNK1181: 无法打开输入文件“.\mmdetection3d\build\temp.win-amd64-cpython-38\Release\mmdet3d\ops\spconv\src\all.obj▒\x9d

发现mmdetection3d\build\temp.win-amd64-cpython-38\Release\mmdet3d\ops\spconv\src目录内没有生成all.obj文件,自然也就会发生如上无法打开文件的问题,本质上还是有C++源码未编译成功,本人又发现目录mmdetection3d\build\temp.win-amd64-cpython-38\Release\有生成该all.obj文件的编译文件build.ninja,于是在手动执行编译:

ninja -f .\mmdetection3d\build\temp.win-amd64-cpython-38\Release\build.ninja

编译可能失败,发生如下问题:

c1xx: fatal error C1356: 无法找到 mspdbcore.dll

参考如下博客进行解决:
https://blog.csdn.net/jacke121/article/details/90614060
解决办法如图:
在这里插入图片描述
———————————————————————————————————————————————————
到这里,解决了ninja编译的问题,编译后,前面的all.obj文件已经存在于mmdetection3d\build\temp.win-amd64-cpython-38\Release\mmdet3d\ops\spconv\src目录内,那么继续执行mmdetection3d安装,发现虽然不再报无法打开all.obj文件的错误,又会出现\mmdetection3d\build\temp.win-amd64-cpython-38\Release\mmdet3d\ops\iou3d\src\iou3d.obj文件无法打开的问题,同样的解决办法,再次手动执行编译,生成iou3d.obj文件:

ninja -f .\mmdetection3d\build\temp.win-amd64-cpython-38\Release\build.ninja

不出意外的话iou3d.obj文件生成成功,继续执行mmdetection3d安装,然而又出现另一个xxxx.obj无法打开的问题,那么还是用ninja手动编译生成,然后执行mmdetection3d安装,如此反复11次,最终mmdetection3d安装成功!!!


http://www.ppmy.cn/ops/93380.html

相关文章

双胞胎命名有哪些特别之处?如何体现两者之间的联系与区别?

双胞胎命名艺术探秘 问题: 双胞胎命名有哪些特别之处?如何体现两者之间的联系与区别? 起尔网-免费取名|大师起名|宝宝起名|新生儿取名|男孩女孩在线起名姓名测试评分网起尔网-免费在线宝宝起名|新生儿取名|男孩女孩在线起名网,龙…

Java比较两个对象为什么要重写equals()和hashCode()

目录 1. 默认行为的局限性默认的 equals() 方法默认的 hashCode() 方法 2. 自定义逻辑相等性3. 集合操作的正确性和性能正确性性能 4. 遵循 Java 规范Kotlin 中的 data class 总结 在 Java 和 Kotlin 中,默认的 equals() 和 hashCode() 方法继承自 Object 类&#x…

C++11中的Lambda表达式

文章目录 C11中的Lambda表达式1.lambda表达式形式2.向lambda传递参数3.使用捕获列表4.lambda捕获和返回1.值捕获2.引用捕获3.隐式捕获4.可变lambda5.指定lambda的返回类型 C11中的Lambda表达式 1.lambda表达式形式 lambda表达式具有以下形式 [capture list] (parameter list)…

从零开始的CPP(36)——操作Excel

现有一个Excel A1.csv。 其表格第一列为:生物样本的名称;其他列为:生物样本的含量。表格第一行第一列是空格,第一行其他列为:受试者名称。 需求 如下:设计一个程序,可以指定受试者名称(某列&…

千里江山图,自动化成诗:Expect脚本详解——从入门到进阶的自动化利器

目录 引言 Expect脚本基础 什么是Expect 基本语法 进阶应用 错误处理 正则表达式 并发处理 使用Shell脚本管理多个Expect脚本 在Expect脚本内部模拟并发 脚本复用与模块化 总结 引言 在自动化运维和测试领域,Expect脚本无疑是一把强大的利器。它以其灵…

深入解析 CentOS 中的 ifcfg-eth0 配置文件

深入解析 CentOS 中的 ifcfg-eth0 配置文件 1. 引言 在 CentOS 系统中,ifcfg-eth0 是网络接口配置文件的标准命名格式,其中 eth0 表示第一个以太网接口。正确配置这些文件对确保网络连接的稳定性和可靠性至关重要。本文将详细介绍 ifcfg-eth0 文件的所…

20240813 每日AI必读资讯

Flux生成网红博主因太逼真爆火!有人用Claude写代码识破“AI美女” - Flux生成的情侣合照逼真程度达到恐怖级别,挑战人类视觉辨识能力。 - 网友发现Flux生成的照片几乎完美,但仍有细微瑕疵可供识别。 - 有人利用Flux等工具制作逼真的YouTub…

React 后台管理项目 入门项目 简洁清晰保姆级内容讲解

序章 React Hook的后台管理项目,从0到1搭建,内容非常丰富涵盖项目搭建、路由配置、用户鉴权、首页报表、用户列表、前后端联调等功能,推荐指数:5颗星! 视频学习链接: React 通用后台管理-零基础从0到1详细的入门保姆…