解决DCNv2在Linux上安装失败的问题

2023-10-29 22:10

本文主要是介绍解决DCNv2在Linux上安装失败的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目场景

今天同学安装 DCN(Deformable Convolutional Networks,可变形卷积网络)v2的 PyTorch 版本时遇到了很多问题,弄了将近一天也没解决。于是求助笔者帮忙解决,这里记录一下成功的解决方案。

问题描述

笔者首先在 GitHub 上搜了一下 DCNv2,得到了如下 3 个 star 比较高的结果:

在这里插入图片描述

尝试了一下克隆仓库并安装,但也是报各种错误,但大部分原因都是 PyTorch 版本太高,高版本中删除了很多 C++ 写的头文件,导致编译错误。

解决方案

在 Issue 中发现了这样的一条评论:

在这里插入图片描述

按照上图中的解决方案成功解决:

conda create -n dcnv2 python=3.7
conda activate dcnv2
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 -c pytorch
git clone https://github.com/MatthewHowe/DCNv2.git
cd DCNv2
./make.sh

安装过程中的提示信息如下:(忽略警告)

running build
running build_py
running build_ext
building '_ext' extension
Emitting ninja build file /home/zxc/DCNv2-master/build/temp.linux-x86_64-3.7/build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
...
g++ -pthread -B /home/zxc/.conda/envs/dcn/compiler_compat -Wl,--sysroot=/ -pthread -shared -B /home/zxc/.conda/envs/dcn/compiler_compat -L/home/zxc/.conda/envs/dcn/lib -Wl,-rpath=/home/zxc/.conda/envs/dcn/lib -Wl,--no-as-needed -Wl,--sysroot=/ /home/zxc/DCNv2-master/build/temp.linux-x86_64-3.7/home/zxc/DCNv2-master/DCN/src/cpu/dcn_v2_cpu.o /home/zxc/DCNv2-master/build/temp.linux-x86_64-3.7/home/zxc/DCNv2-master/DCN/src/cpu/dcn_v2_im2col_cpu.o /home/zxc/DCNv2-master/build/temp.linux-x86_64-3.7/home/zxc/DCNv2-master/DCN/src/cpu/dcn_v2_psroi_pooling_cpu.o /home/zxc/DCNv2-master/build/temp.linux-x86_64-3.7/home/zxc/DCNv2-master/DCN/src/cuda/dcn_v2_cuda.o /home/zxc/DCNv2-master/build/temp.linux-x86_64-3.7/home/zxc/DCNv2-master/DCN/src/cuda/dcn_v2_im2col_cuda.o /home/zxc/DCNv2-master/build/temp.linux-x86_64-3.7/home/zxc/DCNv2-master/DCN/src/cuda/dcn_v2_psroi_pooling_cuda.o /home/zxc/DCNv2-master/build/temp.linux-x86_64-3.7/home/zxc/DCNv2-master/DCN/src/vision.o -L/home/zxc/.conda/envs/dcn/lib/python3.7/site-packages/torch/lib -L/usr/local/cuda/lib64 -lc10 -ltorch -ltorch_cpu -ltorch_python -lcudart -lc10_cuda -ltorch_cuda -o build/lib.linux-x86_64-3.7/_ext.cpython-37m-x86_64-linux-gnu.so
copying build/lib.linux-x86_64-3.7/_ext.cpython-37m-x86_64-linux-gnu.so -> 
Creating /home/zxc/.conda/envs/dcn/lib/python3.7/site-packages/DCNv2.egg-link (link to .)
DCNv2 0.1 is already the active version in easy-install.pthInstalled /home/zxc/DCNv2
Processing dependencies for DCNv2==0.1
Finished processing dependencies for DCNv2==0.1

运行脚本校验安装是否可用:(忽略警告)

$ python DCN/testcpu.py # 测试cpu
torch.Size([2, 64, 128, 128])
torch.Size([20, 32, 7, 7])
torch.Size([20, 32, 7, 7])
torch.Size([20, 32, 7, 7])
0.971507, 1.943014
0.971507, 1.943014
Zero offset passed
check_gradient_dpooling: True
$ python DCN/testcuda.py # 测试gpu
torch.Size([2, 64, 128, 128])
torch.Size([20, 32, 7, 7])
torch.Size([20, 32, 7, 7])
torch.Size([20, 32, 7, 7])
0.971507, 1.943014
0.971507, 1.943014
Zero offset passed
check_gradient_dpooling: True

这篇关于解决DCNv2在Linux上安装失败的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/303660

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja