EGNet实验中的一些问题(2)

本文详述了在Ubuntu 20.04上安装CUDA 11.1、cudnn 8.0.5及PyTorch的过程,包括驱动下载、库文件链接、环境变量设置和软连接修复。同时,介绍了如何在PyCharm中配置Anaconda环境,以及EGNet实验中涉及的代码修改和训练测试流程。

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.sh544.4 MiB2021-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'       #训练数据集的清单
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值