ubantu18.04从零开始-3D目标检测mmdetection的环境配置及模型训练和批量预测

系统基础环境:ubuntu 18.04 + python 3.8 + cuda 11.1

1 安装显卡驱动

1.1首先输入如下命令,查询系统推荐的驱动程序

ubuntu-drivers devices

在这里插入图片描述输出如上,找到driver recommended 即为当前计算机所推荐的显卡。

1.2 接着输入下述指令进行显卡驱动的安装

sudo apt install nvidia-driver-525

等待后即可完成显卡驱动的安装

重启电脑后,在终端输入以下指令,用于检查驱动是否安装成功,若成功则输出如下图

nvidia-smi

在这里插入图片描述
2 cuda和cudnn的安装

本人下载的cuda11.1版本(建议cuda版本不要太高,避免与mmdetection3d版本不兼容)

a. cuda 11.1 下载安装NVIDIA官网下载界面
在这里插入图片描述

打开终端输入

wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run

sudo sh cuda_11.1.1_455.32.00_linux.run

按照默认选项安装即可,若提示Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing.,选择continue,在下一步中(按Enter取消)去除driver项,之后选择install,如下图所示
在这里插入图片描述安装完成如下图所示
在这里插入图片描述
安装完成后输入如下指令进行系统路径配置

sudo gedit ~/.bashrc

在文件末尾加上2行代码即可:

export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

此时检查cuda是否安装成功只需在终端输入nvcc -V,如果不能显示下图所示,重启电脑后再次输入即可

nvcc -V

在这里插入图片描述
输出上述信息则安装cuda完成

b. cudnn8.0.5下载安装
CUDA11.1对应的cuDNN版本为8.0.5,下载地址为cudnn下载地址

在这里插入图片描述
在这里插入图片描述
在下载的安装包文件夹下打开终端,解压文件,输入如下:

tar -zxvf cudnn-11.1-linux-x64-v8.0.5.39.tgz

进入解压目录,打开终端输入:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

检验安装是否成功,打开终端输入:

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
或
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

cudnn安装成功界面如下图:
在这里插入图片描述如果没有显示上图成功界面,原因为NVIDIA把版本信息换到cudnn_version.h中了,执行下面代码后再次检验安装是否成功

sudo cp cuda/include/cudnn_version.h    /usr/local/cuda/include/

至此完成cudnn的安装

3 Anaconda的安装

进入官网下载,anaconda下载地址

在这里插入图片描述
进入下载的sh文件所在的文件夹,并打开终端输入以下代码(看一些文件名是否正确)

bash Anaconda3-2022.10-Linux-x86_64.sh

接下来按回车和yes无脑安装即可

最后重启终端(后续检验如果有问题,建议重启电脑再检验一次),即可使用Anaconda3

终端输入python查看是否更换成了anaconda内的python解释,如下图所示:python版本信息后面带了anaconda的标识即安装成功
在这里插入图片描述终端输入conda --version如下图所示:显示conda版本信息,则conda已经加入环境变量中。以后可以在命令行使用conda命令
在这里插入图片描述终端输入anaconda-navigator 启动anaconda

anaconda-navigator 

4 conda新环境创建与pytorch 安装

输入如下指令创建并激活虚拟环境

conda create -n mmdet3d python=3.8 -y
conda activate mmdet3d

安装torch1.8.0, 进入torch官网:然后进入到下图中入口,选择 pytorch 1.8 和 cuda 11.1

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge

进行pytorch安装
安装完成后检查pytorch是否安装成功,能否使用cuda
在当前终端输入

python
import torch
torch.cuda.is_available()

在这里插入图片描述输出结果如上代表pytorch安装成功!

在这里插入图片描述
在这里插入图片描述
5 安装mmdetecion3d

5.1指定版本安装

a. mmcv-full

pip install mmcv-full==1.3.8

​ b. mmdet

pip install mmdet==2.14.0

​ c. mmsegmentation

pip install mmsegmentation==0.14.1

​ d. mmdetection3d

git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
git checkout v0.17.1
pip install -v -e .

e. pycocotools2.0.6, 如果不装这个,后面处理数据的时候会报错(一般情况下执行完上面代码这个软件包会自动安装的)

pip install pycocotools2.0.6

5.2不指定版本安装

pip install openmim
mim install mmcv-full
mim install mmdet
mim install mmsegmentation
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
pip install -e .

在这里插入图片描述
输出上述信息代表整个mmdetection3d安装成功

5.3另一种方式安装

【从零入门《openmmlab》学习教程】

创建环境

conda create -n mmdete python=3.8 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

激活环境

conda activate mmdete

安装torch环境

pip install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html

拉取mmcv源码到本地(源码编译完整算子的方式安装)
在这里插入图片描述
安装依赖包

pip install -r requirements/optional.txt

在这里插入图片描述
安装mmcv(MAX_JOBS=16是根据自己的CPU线程数来选择的,我的电脑是8核心16线程)

MMCV_WITH_OPS=1 MAX_JOBS=16 pip install -e .

在这里插入图片描述
输入pip list可以查找mmcv版本和安装路径
在这里插入图片描述
拉取mmdetection源码到本地(源码编译的方式安装)
在这里插入图片描述
安装mmdet(MAX_JOBS=16是根据自己的CPU线程数来选择的,我的电脑是8核心16线程)

MAX_JOBS=16 pip install -e .

在这里插入图片描述
输入pip list可以查找mmdet版本和安装路径
在这里插入图片描述

6.验证安装好的环境

以/mmdetection/configs/yolox为例

复制README.md中的链接,下载训练好的权重

wget https://download.openmmlab.com/mmdetection/v2.0/yolox/yolox_tiny_8x8_300e_coco/yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth

6.1运行以下代码验证环境(代码后加 --out-file result.jpg 保存到本地)

python demo/image_demo.py demo/demo.jpg configs/yolox/yolox_tiny_8x8_300e_coco.py yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth

输出结果
在这里插入图片描述
6.2运行以下代码验证环境(代码后加 --out result.mp4 保存到本地)

 python demo/video_demo.py demo/demo.mp4 configs/yolox/yolox_tiny_8x8_300e_coco.py yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth --show
 python demo/video_demo.py demo/demo.mp4 configs/yolox/yolox_tiny_8x8_300e_coco.py yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth --out result.mp4

在这里插入图片描述
6.3运行以下代码验证环境(实时检测摄像头画面)

python demo/webcam_demo.py configs/yolox/yolox_tiny_8x8_300e_coco.py yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth

至此完成环境验证

7.公开的COCO数据集
下载COCO数据集

python tools/misc/download_dataset.py --dataset-name coco2017

在这里插入图片描述

下载好的数据集已经自动解压到mmdetection/data目录下,Linux系统建议移动到其他目录,并使用软连接的方式链接到data文件夹下(删除文件夹指令rm -rf data/coco/)
数据集移动到目录home/Downloads/datasets/coco

终端输入ln -s 连接的源目录 要连接的目录

ln -s ~/Downloads/datasets/coco ~/PycharmProjects/mmdetection/data/

在这里插入图片描述

确保数据集目录和文档一致即可
在这里插入图片描述
准备好数据集后测试现有模型,仍然以yolox为例,输入以下代码将会逐一展示预测结果

python tools/test.py configs/yolox/yolox_tiny_8x8_300e_coco.py yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth --show

在这里插入图片描述

如果需要批量预测只需要把–show改为–show-dir,后面加上yolox-tiny是要保存的路径

python tools/test.py configs/yolox/yolox_tiny_8x8_300e_coco.py yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth --show-dir yolox-tiny

在这里插入图片描述
在这里插入图片描述
如果只需要测试mAP(均值平均精度,作为 object dection 中衡量检测精度的指标,mAP=所有类别的平均精度求和除以所有类别)或是bbox(2D检测框的准确率),只需要加上–eval 要测试的指标
这里以bbox为例

python tools/test.py configs/yolox/yolox_tiny_8x8_300e_coco.py yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth --eval bbox

可以看到预测结果
在这里插入图片描述
那么如何在公开数据集上训练自己的模型,训练模型有两个最重要的超参数,学习率和批大小(batch size)。若学习率过大,loos反而会增高,网络发散,若学习率过小loss值下降很慢,导致训练时间过长。学习率较大刚开始下降很快,但容易在极值点附近反复横跳,所以选择合适的学习率非常重要。
mmdetection已经支持学习率自动缩放,强烈建议在训练时开启,只需要加入这行命令即可

-- auto-scale-lr

过小的batch size可能会陷入局部最优解,但batch size与GPU显存有关,过大会导致显存溢出,batch size应根据自己的模型和GPU显存来设置
以训练yolox-nano为例,yolox-nano是基于yolox-tiny,yolox-tiny是基于yolox-s
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在yolox-s里可以找到batch size(samples_per_gpu=8)和GPU线程数(workers_per_gpu=4),输入训练命令,开启学习率自动缩放,修改batch size为16,GPU线程数一般为4或8,这里选择为8

 python tools/train.py configs/yolox/yolox_nano_8x8_300e_coco.py --auto-scale-lr --options samples_per_gpu=16 workers_per_gpu=8

在这里插入图片描述

在训练时Linux在终端输入以下命令可以打开英伟达系统管理界面,可看到核心显存占用率

watch -n 0.1 nvidia-smi

在这里插入图片描述

训练结束后会在Work_dirs下,找到训练的log和权重
在这里插入图片描述

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值