1、系统方面:先装驱动,去官方网站 https://www.nvidia.cn/geforce/drivers/ 下载安装,或Ubuntu设置中——关于——软件更新——附加驱动——选择 专有tested。然后根据Ubuntu版本安装cuda,cudnn,pytorch,torchvison等,这些都是需要版本型号匹配的,不能随便安装版本。
本机Ubuntu是20.04,选择的cuda是cuda11.1 (可以去cuda官方网站上找到对应的版本进行下载安装),安装路径/usr/local,nvcc -V验证是否成功。安装cuda的时候如果驱动提前装了,这时需要取消勾选安装driver驱动以安装cuda toolkit。(如果驱动重新装,那么cuda也要再次重新装)
cudnn是下载的cudnn-10.1-linux-x64-v8.0.5.39,安装过程其实就是将解压后的cudnn中的cuda的库和头文件复制到本机安装的cuda的目录下,如/usr/local/cuda-11.1
sudo cp cuda/include/cudnn.h /usr/local/cuda-11.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.1/lib64
sudo chmod a+r /usr/local/cuda-11.1/include/cudnn.h /usr/local/cuda-11.1/lib64/libcudnn*
然后是修改一些软链接,(下面的8.0.5是对应于cudnn中的版本号???)
cd /usr/local/cuda/lib64/
#删除原有动态文件
sudo rm -rf libcudnn.so libcudnn.so.8
#生成软衔接
sudo ln -s libcudnn.so.8.0.5 libcudnn.so.8
#生成软链接
sudo ln -s libcudnn.so.8 libcudnn.so
sudo ldconfig
如果这个过程中报错,进一步参考
解决方案:
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.0.1 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.0.1 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.0.1 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcunn_adv_infer.so.8.0.1 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.0.1 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.0.1 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
最后测试,查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
如果提示没有cudnn.h或cuda.h,可以重新到cudnn解压后的cudn相应文件夹中复制文件。
接着安装pytorch,这个去官网寻找对应版本,然后根据给出的链接下载 pytorch和torchvision。
再安装Anaconda,可以去清华链接网站下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ ,这里我选的是如下当前最新版。
| Anaconda3-2021.05-Linux-x86_64.sh | 544.4 MiB | 2021-05-14 11:33 |
安装后,用命令 anaconda create -n pytorch_gpu python=3.6 创建一个虚拟子环境pytorch_gpu,并且指定python版本,这里用的是3.6。
2、打开pycharm,新建工程,比如egnet_proj,把下载的egnet程序文件夹,拖到egnet_proj里,修改好相关程序配置参数,在pycharm的File——settings——project——python Interpreter中选择刚创建的pytorch_gpu/bin/python来运行run,结果报错的话,缺什么装什么,改什么,比如缺cv2,在anaconda中创建的pytorch_gpu环境下安装好cv2以及相应的软件。安装cv2,直接pip install opencv-python即可,下载安装很慢或报错时,修改下载源,或重启电脑,运行import cv2来验证是否装好。
3、如果是测试test的话,采用resnet,需要修改的地方有:
run.py中:
vgg_path = '/home/zqq/project/initial_model/vgg16_20M.pth'
resnet_path = '/home/zqq/project/initial_model/resnet50_caffe.pth'
# Testing settings
parser.add_argument('--model', type=str, default='/home/zqq/project/model/epoch_resnet.pth')
parser.add_argument('--test_fold', type=str, default='/home/zqq/project/Results/test')
parser.add_argument('--test_mode', type=int, default=1)
parser.add_argument('--sal_mode', type=str, default='e')
# Misc
parser.add_argument('--mode', type=str, default='test', choices=['train', 'test'])
parser.add_argument('--visdom', type=bool, default=False)
solver.py中:
base_model_cfg = 'resnet'
dataset.py中:
lass ImageDataTest(data.Dataset):
def __init__(self, test_mode=1, sal_mode='e'):
elif test_mode == 1:
if sal_mode == 'e':
self.image_root = '/home/zqq/project/ECSSD/Imgs/'
self.image_source = '/home/zqq/project/ECSSD/test.lst'
self.test_fold = '/home/zqq/project/Results/'
def get_loader(batch_size, mode='test', num_thread=1, test_mode=1, sal_mode='e'):
4、如果是训练train的话,采用resnet,需要修改的地方有:
run.py中:
vgg_path = 'D:/date set/vgg16_20M.pth'
resnet_path = 'D:/date set/resnet50_caffe.pth'
parser.add_argument('--epoch', type=int, default=1)
原文代码此处为30个epoch,为方便测试可以在此处将默认值改为1,后续调通代码进行测试可以改为自己所需的值
parser.add_argument('--mode', type=str, default='test', choices=['train', 'test'])
该行代码可以用来选择模式,train或者test,train表示训练,test表示测试
solver.py中:
base_model_cfg = 'vgg' 可以选择vgg或resnet
还有一个可能不修改会报错的地方:
def bce2d_new(input, target, reduction=None):
input = F.upsample(input, size=target.size()[2:], mode='bilinear')
print(input)
print(input.shape)
assert(input.size() == target.size())
下面是在solver.py文件中的代码,可以根据自己所需修改每n次进行保存一次中间结果图片。
if i % 200 == 0:
vutils.save_image(torch.sigmoid(up_sal_f[-1].data), tmp_path+'/iter%d-sal-0.jpg' % i, normalize=True, padding = 0)
#vutils.save_image(up_sal_f[-1].data, tmp_path + '/iter%d-sal-0.jpg' % i,padding = 0)
vutils.save_image(sal_image.data, tmp_path+'/iter%d-sal-data.jpg' % i, padding = 0)
#print(os.path.abspath(sal_image))
vutils.save_image(sal_label.data, tmp_path+'/iter%d-sal-target.jpg' % i, padding = 0)
dataset.py中:
self.sal_root = 'D:/date set/DUTS-TR' #训练数据集的位置
self.sal_source = 'D:/date set/DUTS-TR/train_pair_edge.lst' #训练数据集的清单
本文详述了在Ubuntu 20.04上安装CUDA 11.1、cudnn 8.0.5及PyTorch的过程,包括驱动下载、库文件链接、环境变量设置和软连接修复。同时,介绍了如何在PyCharm中配置Anaconda环境,以及EGNet实验中涉及的代码修改和训练测试流程。
&spm=1001.2101.3001.5002&articleId=118990885&d=1&t=3&u=2e75fd41e17c4bf1b9182f0a996d0c4d)
376

被折叠的 条评论
为什么被折叠?



