搭建torch0.4的项目

该博客详细记录了在CUDA8.0和RTX1080Ti GPU上安装PyTorch0.4.0,将VOC数据集转换为COCO格式,以及解决编译错误的过程。博主遇到了CUDA版本不兼容、库版本冲突和权限问题,通过调整conda源、降级CUDA和torch版本、修改GCC版本以及更新数据集配置文件成功解决问题。此外,还探讨了在Python中执行编译脚本的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据集格式转换

voc数据集格式转coco数据集格式:大佬的链接

classes = ['bicycle', 'pottedplant', 'tvmonitor']

改为自己的label,
安装一些库:

pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com torch==0.4.0 torchvision==0.2.0

下面这些也得装
先注意版本关系:跳转

pytorch>=0.3.1但是要低一些才行,最高支持0.4.0,安装其他时注意别升高,后面还要用编译CUDA中的命令安装CUDA版本支持
torchvision>=0.2.0可装可行版本0.2.0,,再装会升级torch
cython
matplotlib
numpy
scipy
opencv可行版本4.5.1
pyyaml
packaging
pycocotools — for COCO dataset, also available from pip.
tensorboardX — for logging the losses in Tensorboard
cffi

测试下导入包看可行

from torch.utils.data.dataloader import numpy_type_map

编译CUDA:

Compile the CUDA code:

cd lib  # please change to this directory
sh make.sh

查看torch是否支持GPU计算

进入python后:

torch.cuda.is_available()

查看cuda版本:

cat /usr/local/cuda/version.txt

查看CUDA版本:

nvidia-smi

在这里插入图片描述

这边是10.2
故安装torch命令为:
执行训练命令报错:undefined symbol: __cudaPopCallConfiguration

conda install pytorch=0.4.0 cuda102 -c pytorch

conda 无法安装下载时,检查下源,可用下面的配置:

gedit ~/.condarc

内容为:

channels:
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
ssl_verify: true

安装10.0还是报错,解决方法说是两个:
1.升高torch版本
2.降CUDA版本
网上有说是9.1可行,
cuda为9.2 ,8.5 ,8.0时不行,还是报错
安装时出现错误:All requested packages already installed
清理后过5min再敲命令,可行了。。。
换版本时,conda清理无用包:
卸载原有的torch版本

conda clean --all
conda install pytorch=0.4.0 cuda92 -c pytorch

-c pytorch指从pytorch官网下载,
如果失败,用下面的命令,注意对应的版本,亲测有效:

conda install pytorch=0.4.0 cudatoolkit=8.0

前面卸载了torch后,这一步只装好了cudatoolkit,torch没装上,再用pip重新装下torch,装了之后再次执行:

conda install pytorch=0.4.0 cudatoolkit=8.0

重新编译make.sh文件,竟然不报cuda错了,但是报了一个numpy的错误:说是版本低了,好吧 升级下:

pip install --upgrade numpy

再次敲入训练命令,又报cuda的错误
说是python的权限不够,切换到base环境,0.4.0转不上,装了0.4.1的torch,再次 sh make.sh还是说权限不够,

解决办法
实际上是linux给的权限不够,anaconda文件夹中的python程序的用户为user(ubuntu用户名称)而项目文件夹的所属用户为root,因此不匹配,将项目文件的用户更改为user后再编译,就可以了,命令为:

sudo chown user -R DIoU-pytorch-detectron-master

windows中的操作,类似于下面图片这样:
在这里插入图片描述
下面是把 sh make.sh命令方法放进python程序中执行的方法,

import os
 
status = os.system('sh /home/wxd/DIoU-pytorch-detectron-master/lib/make.sh')

CUDA8.0尝试

本次环境: RTX 1080 Ti ubuntu18
网上有说CUDA8.0没有undefined symbol: __cudaPopCallConfiguration这个错误,尝试下,主要参考链接:点这里
官网下载CUDA8,cudnn6.0 需要科学上网或其他办法

两个文件下载好,CUDA8搜索cuda_8.0.61_375.26_linux-run进行下载,
cudnn6.0,也就是cudnn-8.0-linux-x64-v6.0.tgz这个文件,可用下面的链接迅雷下载

https://blog.youkuaiyun.com/xiangxianghehe/article/details/79177833

CUDA8.0安装按照大佬链接中操作即可,尤其注意不要替换掉GPU原有的驱动,
cudnn6.0安装见下面步骤:

tar -xvf cudnn-8.0-linux-x64-v6.0.tgz

sudo cp include/cudnn.h /usr/local/cuda-8.0/include 
sudo cp lib64/libcudnn* /usr/local/cuda-8.0/lib64

原有的版本是指向10.0,现在要指向8.0,需要删除原有的软链接,建立新的软链接,安装及查看命令如下:

cd /usr/local
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
nvcc -V

成功的图片:
在这里插入图片描述
或者在/usr/local 目录下使用 stat cuda命令查看
在这里插入图片描述
再次 sh make.sh编译后。。。
还是报错:
_roi_pooling.so: undefined symbol: __cudaPopCallConfiguration
卒。。。

在这里插入代码片

使用GCC 4.x编译

make.sh的打印界面说不支持5.0以后的版本,那装个gcc 4.x编译试试.
大佬链接
用了4.8,在make.sh最前面添加这两行:
参考

export CXXFLAGS="-std=c++11"
export CFLAGS="-std=c99"```

可行了

使用新数据集训练

数据集在lib/datasets/coco_pcb中,结构为
在这里插入图片描述

修改文件:

config.py

直接写要修改的内容了

#line 83
__C.TRAIN.PROPOSAL_FILES = ('/home/wxd/DIoU-pytorch-detectron-master/lib/datasets/coco_pcb/instances_train2014.json')  #

__C.TRAIN.DATASETS = ('coco_pcb')

dataset_catalog.py

json_dataset.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值