解决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

相关文章

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr