我是ubuntu20.04的版本,并且我的电脑上已经安装了显卡驱动、Anaconda,并且已经下载好了代码(可以直接在终端输入 git clone https://github.com/lucastabelini/LaneATT 下载代码)下面开始安装。
一、环境配置
使用pytorch1.13.1+CUDA11.7+cuDNN8.9进行环搭建
(内容参照 https://blog.csdn.net/weixin_43607192/article/details/130846983)
1.1 CUDA安装
由于我的电脑本身就安装了显卡驱动,所以直接开始安装CUDA11.7.0。
进入官网选择对应信息得到下载指令:
于是在终端中依次输入:
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run
后续步骤参照我的另一篇安装博客:ubuntu20.04安装CUDA-CSDN博客
1.2 cuDNN安装
(此前我一直没理解为什么要安装cuDNN,如果有跟我一样困惑的朋友可以看下这篇文章配置显卡驱动、CUDA、cuDNN以及说明三者之间的关系_cudnn和cuda的关系-CSDN博客)
进入并登录官网选择对应CUDA 11.x版本使用的cuDNN v8.9.0,选择Linux版本进行下载。
解压后分别在终端输入下面的命令:
sudo cp cudnn-linux-x86_64-8.9.0.131_cuda11-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -p cudnn-linux-x86_64-8.9.0.131_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
到此完成了cuDNN在CUDA中的激活。
1.3 安装pytorch 1.13.1
首先,创建并激活虚拟环境(此处我使用的python3.8的版本)
conda create -n laneatt python=3.8 -y
conda activate laneatt
安装pytorch 1.13.1
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
进入代码LaneATT目录下,安装其他必要的包及nms
pip install -r requirements.txt
cd lib/nms
python setup.py install
cd -
至此,LaneATT环境配置成功。
注意
1.好像GTX30以上显卡最低支持CUDA11
我曾经强行安装过CUDA11.0以及CUDA10.2+cuDNN8.7,运行python setup.py install时均失败了。(以上提到的两种情况均为搭配的pytorch1.6版本)
但是有一位GTX3090的朋友在编译前输入了下面的命令之后成功了
export TORCH_CUDA_ARCH_LIST="8.0"
(参考:NMS replacement · Issue #94 · lucastabelini/LaneATT · GitHub)
此处查看GPU型号的命令为
nvidia-smi --query-gpu=gpu_name --format=csv,noheader
2.在运行python setup.py install时经常提示命令最好换一个,我没管,不影响结果。
二、开始训练
1. 下载CULane数据集
进入/LaneATT/lib/datasets目录,创建新的文件夹culane,将数据集下载到此处。
我的下载链接是 https://drive.google.com/drive/folders/1mSLgwVTiaUMAb4AVOWwlCD5JcWdrwpvuhttps://github.com/lucastabelini/LaneATT/blob/main/DATASETS.mdhttps://drive.google.com/drive/folders/1mSLgwVTiaUMAb4AVOWwlCD5JcWdrwpvu(数据集大约40G)
在训练前,以laneatt_culane_resnet34为例,需要更改LaneATT/cfgs下的.yml文件的root路径:
之后进入LaneATT目录,执行下面命令就可以进行训练和测试了。
python main.py train --exp_name laneatt_r34_culane --cfg cfgs/laneatt_culane_resnet34.yml
python main.py test --exp_name laneatt_r34_culane
BUT!!!在我训练时反复报错:RuntimeError: indices should be either on cpu or on the same device as the indexed tensor (cpu)
查了很久,我在代码前添加了下面三行:
ends = ends.to(torch.device('cuda'))
all_indices = all_indices.to(torch.device('cuda'))
invalid_offsets_mask=invalid_offsets_mask.to(torch.device('cuda'))
然后代码就可以正常的运行啦~~~