基于kitti数据集的3D目标检测算法的训练流程

本文用于博主记录在复现3D目标检测算法时所遇到的各种问题、踩坑。

参考链接:

1、kitti数据集准备

https://mmdetection3d.readthedocs.io/zh-cn/latest/advanced_guides/datasets/kitti.html

https://github.com/open-mmlab/mmdetection3d

2、kitti数据集下载

kitti数据集在3D目标检测中的入门-CSDN博客

首先是配置环境,本次复现环境配置如下:

miniconda cuda11.7.0 python3.8.0 pytorch 11.3.0 (cudnn选择和cuda相同日期发布的即可,下面会讲)

一、安装miniconda

mkdir -p ~/miniconda3 #新建文件夹存放miniconda文件
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh   #下载
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
初始化miniconda

~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

安装完成后会在服务器中下载一个名为miniconda的文件夹,如图:

 二、安装cuda和cudnn

参考 Linux下非root用户安装CUDA_非root安装cuda-CSDN博客

cuda我安装的是这一个:

最后一个命令有sudo,如果在服务器上可能没有管理员身份无法运行,把sudo删除直接运行就可以了。

cudnn的版本选择和cuda在同一日期的即可:

下载到本地,再上传到服务器端进行解压,并把里面的文件复制到cuda对应文件夹中去就可以了。最后记得nvcc一下看看是否改好哦!

三、安装pytorch

直接前往官网 PyTorch找到自己所需要的版本

在服务器终端输入安装命令以安装pytorch

四、安装mmdetection3D框架

1、首先安装引擎

pip install -U openmim
mim install mmengine
mim install 'mmcv>=2.0.0rc4'
mim install 'mmdet>=3.0.0'

如果安装没有cuda版本的mmcv,则使用以下命令:

mim install "mmcv-lite>=2.0.0rc4"

由于我的cuda版本之前是11.5,运行mmcv这条命令自动下载的事mmcv2.2.0rc4,mmdet3.0.0,但是mmdet3.0.0匹配的mmcv版本是>=2.0.0 & <2.2.0,.故mmcv2.2.0版本是不匹配的,需要自行下载其他版本(2.0.0或2.1.0都可以),首先需要下载cuda11.7:

注意在。bashrc文件中的路径需要修改:

修改之后的bashrc文件末尾几行应该是这样的(我看的教程上是把$PATH放在了=后面故而11.7没能成功显示)

大家根据自己的文件夹名和路径修改即可,不要完全和我的一致哈!

修改完毕后记得用命令使文件生效:

source ~/.bashrc

之后就可以安装其他版本,我这里下载的是2.0.0rc4:

2、安装mmdetection3D

直接开发和运行mmdet3d,则使用源代码安装

git clone https://github.com/open-mmlab/mmdetection3d.git -b dev-1.x
# "-b dev-1.x" means checkout to the `dev-1.x` branch.
cd mmdetection3d
pip install -v -e .
# "-v" means verbose, or more output
# "-e" means installing a project in edtiable mode,
# thus any local modifications made to the code will take effect without reinstallation.

如果仅仅将mmdet3d作为依赖相和第三方包,则使用mim安装

mim install "mmdet3d>=1.1.0"

我这里因为要复现算法,故采取第一种方法进行安装。安装完成后会在服务器中下载一个名为mmdetection3D的文件夹,如图:

参考链接中还有验证此框架是否正确安装,有需要的可以自行参考链接,下载配置文件和检查点文件验证推理演示。我没有进行验证,此处就不再进行介绍。

五、下载数据集

参考链接:kitti数据集在3D目标检测中的入门-CSDN博客

建议在本地下载后,再上传到服务器中

只需要下载RGB、Point Cloud、Calib和label四个压缩包

可以通过filezilla上传也可以直接拖拽到服务器中进行解压

filezilla安装地址:FileZilla - The free FTP solution

下载免费版的就可以用

数据集里有一个planes包是可选的,道路信息建议大家下载,这样在复现时精度应该会更高一点

数据全部下载好之后,要按照以下结构对文件夹进行组织:

前面下载的数据集解压后会自动生成Testing和training文件夹并自动分类,ImageSets文件夹需要自已创建,一会还要往里面下载文件:

mkdir ./data/kitti/ && mkdir ./data/kitti/ImageSets  #创建ImageSets文件夹

链接里下载数据划分的代码:

wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/test.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/test.txt
wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/train.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/train.txt
wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/val.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/val.txt
wget -c  https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/trainval.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/trainval.txt

如果在服务器终端没法运行的,可以自己去github上找到该项目下载这几个文件,下载后的文件夹组织结构应该是这样的:

下载完划分数据后运行以下代码(如果前面没有下planes文件则删除 --with planes):

python tools/create_data.py kitti --root-path ./data/kitti --out-dir ./data/kitti --extra-tag kitti --with-plane

全部下载完毕就可以开始训练算法了,这里以Pointpillar为例:

如果需要修改算法跑的轮数,则可以在/mmdetection3d/configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-3class.py中找到epcho_num参数,修改成你想要跑的轮数即可(源代码中是80,我没有进行修改)

如果需要修改算法批处理的数量,则可以在/mmdetection3d/configs/_base_/datasets/kitti-3d-3class.py文件中修改batch_size参数即可。

接着运行下面的代码即可开始训练:

## 单卡训练
python tools/train.py configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-3class.py

## 多卡训练
CUDA_VISIBLE_DEVICES=0,1,2,3 tools/dist_train.sh configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-3class.py 4

其中多卡训练前面CUDA_VISIBLE_DEVICES参数指的是你用第几张卡去跑,这个根据自己实验室服务器的数量去决定即可。

接下来就可以看到算法在终端中跑起来啦:

我这边跑的时候由于有师兄在跑自己的算法,结果显存爆了哈哈。

顺带一提,在mmdetection3d文件夹下有一个work_dir文件夹,里面保存的是算法训练的结果:

到这就全部完毕啦!预祝大家都能早日修改好bug,跑完算法,早日发一区!!!

欢迎大家在评论区留言提问!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值