目录
先说搭建环境的主要问题
- 一定要在文件夹内进行,稍后看到会定义一个CF_ROOT,配置过程中路径很绕,注意路径的变化
- 难点在DCNv2的配置
- 要修改代码
- 配置和运行前注意虚拟环境要激活
一、环境准备
1.1 服务器
- 采用MistGPU租用服务器 https://mistgpu.com
- 创建好服务器后登录,这里我用的是命令行登录
1.2 创建一个虚拟环境
- 创建一个名为“centerfusion”,python版本为3.7的虚拟环境
conda create -n centerfusion python=3.7
- 创建成功后切换到该虚拟环境
conda activate centerfusion
1.3 安装必要框架
- 参考https://github.com/mrnabati/CenterFusion,https://blog.csdn.net/ssj925319/article/details/124294911
- 安装pytorch,这里根据自己服务器的版本选择
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
- 安装COCOAPI
pip install cython; pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
1.4 克隆代码
-
需要先设置一下路径,不然会出现一系列问题,作者配置的服务器是如下设置的
-
Mist GPU服务器的默认目录是在/home/mist 下,这里我没有采用官方设置的CF_ROOT=/path/to/CenterFusion,我自己指定了CF_ROOT=work/CenterFusion,使用这个命令时,路径在/home/mist下,具体步骤如下
CF_ROOT=work/CenterFusion
git clone --recursive https://github.com/mrnabati/CenterFusion.git $CF_ROOT
-
此处克隆命令容易出现下面原因,因为mistgpu里的git默认添加加速代理,遇到这个错误可以手动上传到CF_ROOT路径
-
随后进入到CF_ROOT路径下,也就是/work/CenterFusion,执行下面命令(确保虚拟环境已经激活),安装所需包
pip install -r requirements.txt
-
下面配置DCNv2,仓库里可能有DCNv2,但实测运行不了,用下面这个版本 https://pan.baidu.com/s/1ua7gyzFn1nmTGuFYP1SHVg?pwd=1csg 提取码:1csg,上传到$CF_ROOT/src/lib/model/networks/DCNv2,然后解压,解压后进入DCNv2-pytorch_1.7,执行下面命令
./make.sh
-
构建成功后出现下面提示
二、数据准备
2.1 数据集准备
- 下载nuscenes数据集,解压到CenterFusion/data/nuscenes文件夹,这里我只用了数据集的mini部分,https://www.nuscenes.org/nuscenes#download
- 下载得到一个名为v1.0-mini.tgz的文件,注意解压一定要在CenterFusion/data/nuscenes目录下进行,data文件夹中是没有nuscenes这个目录的,自己新建一个文件夹,解压命令
tar -zxvf v1.0-mini.tgz -C 路径
如果已经在CenterFusion/data/nuscenes目录下,直接解压即可
tar -zxvf v1.0-mini.tgz
2.2 预训练模型准备
- 预训练模型放在CenterFusion/models中,可以在test.sh中修改要使用的模型
- 预训练模型:https://pan.baidu.com/s/1OfuFhm3VrUCznsjQ6jKPuw?pwd=1rhr
三、修改代码
- 参考@可乐有点好喝 大佬的文章,https://blog.csdn.net/ssj925319/article/details/124294911,修改如下几处代码:
- 目前只做了测试工作,训练所需修改的代码请移步上面大佬的文章
- 修改CenterFusion/experiments/test.sh,–debug 4代表可视化
- 修改CenterFusion/src/tools/convert_nuScenes.py,第56行修改为3
- 修改CenterFusion/src/lib/utils/debugger.py,即强制转换为int类型,参考http://t.csdn.cn/smn4F
四、运行
4.1 数据集转换
- 运行CenterFusion/src/tools/convert_nuScenes.py,将数据集转换为COCO格式
- 运行之前别忘了把环境切换到创建的虚拟环境
conda activate centerfusion
#进入到CenterFusion/src/tools/
python convert_nuScenes.py
- 转换完成后会在CenterFusion/data/nuscenes下生成annotations_3sweeps目录,该目录下存放着COCO格式的数据集
4.2 运行
- 返回到CenterFusion根目录,运行下列代码
bash experiments/test.sh
- 可视化输出在CenterFusion/exp/ddd/centerfusion/debug目录下
五、参考资料
[1] CenterFusion 项目超详细环境搭建步骤及可视化操作 @可乐有点好喝
[2] CenterFusion代码复现 @溏心蛋不加糖
[3] CenterFusion算法环境配置与demo运行 CenterFusion: Center-based Radar and Camera Fusion for 3D Object Detection @HIT_Vanni