Centerfusion算法环境配置及模型训练

news2025/2/28 23:23:13

Centerfusion算法环境配置及模型训练

  • 概述
  • 1. 配置conda环境
    • 1.1 新建conda环境
    • 1.2 安装cuda
    • 1.3 安装cudnn
    • 1.4 安装pytorch
    • 1.5 安装cocoapi
  • 2. 配置Centerfusion
    • 2.1 克隆CenterFusion的github库
    • 2.2 安装依赖包
    • 2.3 安装DCNv2
    • 2.4 下载nuscenes-devkit包
  • 3. 数据集准备
    • 3.1 下载数据集
    • 3.2 转换数据集格式为COCO格式
  • 4. 预训练模型文件下载
  • 5. 常见错误及其解决方案
    • 5.1 错误1
    • 5.2 错误2
    • 5.3 错误3
    • 5.4 错误4
  • 6. 算法测试训练
    • 6.1 算法训练
    • 6.2 算法测试

概述

本项目搭建环境如下:
ubuntu20.04(非必须)
nvidia驱动版本515.65.01(非必须)
python3.7(必须)
CUDA11.0(必须)
cuDNN8.0(必须)
pytorch1.7.1(必须)

1. 配置conda环境

1.1 新建conda环境

使用python3.7版本

conda create --name pytorch17 python=3.7    

新开一个终端进入虚拟环境 ,以下所有安装均在该环境下进行

source activate pytorch17  

1.2 安装cuda

conda install cudatoolkit=11.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/   

或者不指定镜像源

conda install -c nvidia cudatoolkit=11.0

1.3 安装cudnn

conda install cudnn=8.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/  

或者不指定镜像源

conda install -c nvidia cudnn=8.0.4

1.4 安装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     

1.5 安装cocoapi

pip install -i https://pypi.douban.com/simple/ cython
pip install -i https://pypi.douban.com/simple/ -U 'git+https://gitee.com/monkeycc/cocoapi.git#subdirectory=PythonAPI'  

2. 配置Centerfusion

2.1 克隆CenterFusion的github库

cd ~
git clone https://github.com/mrnabati/CenterFusion.git

2.2 安装依赖包

pip3 install scikit-learn==0.21.0 
pip3 install opencv-python==4.0.0.21  
pip3 install Cython==0.29.21  
pip3 install numba==0.49.1      
pip3 install progress==1.5
pip3 install matplotlib==3.3.3
pip3 install easydict==1.9
pip3 install scipy==1.5.4
pip3 install pyquaternion==0.9.9
pip3 install nuscenes-devkit==1.0.5 opencv-python==4.0.0.21 numpy==1.19.4    pip3 install pyyaml==5.3.1
pip3 install motmetrics==1.1.3
pip3 install tensorboardx==2.1

2.3 安装DCNv2

下载DCNv2,并执行./make.sh,在此之前需要先修改文件内容换为python3

cd $CF_ROOT/src/lib/model/networks
rm -rf DCNv2
git clone https://github.com/lbin/DCNv2.git
cd DCNv2
./make.sh   

编译可能会报unsupported gpu architecture 'compute_86’错误
错误原因:显卡算力太强,需要进行限制
在conda虚拟环境中降低显卡算力为8.0

conda env config vars set TORCH_CUDA_ARCH_LIST="8.0"

重新启动虚拟环境

conda deactivate
conda activate pytorch17

查看虚拟环境中的环境变量,有刚刚加入的环境变量即可

conda env config vars list

重新编译DCNv2

./make.sh

2.4 下载nuscenes-devkit包

下载该包放入对应位置

cd ~/CenterFusion/src/tools
rm -rf nuscenes-devkit/
git clone https://github.com/nutonomy/nuscenes-devkit.git

3. 数据集准备

3.1 下载数据集

从nuScenes网站下载nuScenes数据集
或百度云盘链接: https://pan.baidu.com/s/18XEvDtzrFjHA9XD5vy_uyQ 密码: wu7h
需要注册账号,注册后进入看到以下画面
在这里插入图片描述

下拉至Full dataset (v1.0)
在这里插入图片描述

将下载的文件解压到CenterFusion\data\nuscenes目录中。如下图所示
在这里插入图片描述

3.2 转换数据集格式为COCO格式

cd CenterFusion/src/tools 
python convert_nuScenes.py

报错:ImportError: No module named nuscenes.nuscenes,原因未安装nuscenes-devkit

pip install nuscenes-devkit

然后将convert_nuScenes.py文件的56行修改为NUM_SWEEPS = 3
![\]](https://img-blog.csdnimg.cn/8a3732a2f95b4fd29c7f3976d746f594.png)

运行py文件要使用python3

python3 convert_nuScenes.py

成功转换

4. 预训练模型文件下载

在这里插入图片描述

作者提供文件在google drive
centerfusion_e60
centernet_baseline_e170
百度云盘链接: https://pan.baidu.com/s/1j_M5AzD2chkAPNjCrEq7Zg 密码: veup

下载后放入/CenterFusion/models文件夹下

5. 常见错误及其解决方案

5.1 错误1

Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Traceback (most recent call last):
  File "test.py", line 215, in <module>
    prefetch_test(opt)
  File "test.py", line 73, in prefetch_test
    Logger(opt)
  File "/root/autodl-tmp/CenterFusion/src/lib/logger.py", line 34, in __init__
    subprocess.check_output(["git", "describe", "--always"])))
  File "/root/miniconda3/envs/env1/lib/python3.7/subprocess.py", line 411, in check_output
    **kwargs).stdout
  File "/root/miniconda3/envs/env1/lib/python3.7/subprocess.py", line 512, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['git', 'describe', '--always']' returned non-zero exit status 128.

看倒数第二个 File 路径,打开 /root/miniconda3/envs/env1/lib/python3.7/subprocess.py文件,修改第 411-1=410 行,将 check=True 改为 check=False 即可
在这里插入图片描述

如果是没有使用虚拟环境,去找 …/lib/python3.7/subprocess.py 这样的路径,实在找不到的话可以先训练一下子,等它报错,然后看倒数第二个路径就可以很容易找到了。

5.2 错误2

python: can't open file 'tools/nuscenes-devkit/python-sdk/nuscenes/eval/detection/evaluate.py': [Errno 2] No such file or directory
Traceback (most recent call last):
  File "main.py", line 140, in <module>
    main(opt)
  File "main.py", line 106, in main
    with open('{}/metrics_summary.json'.format(out_dir), 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/root/autodl-tmp/CenterFusion/src/lib/../../exp/ddd/centerfusion/nuscenes_eval_det_output_mini_val//metrics_summary.json

这是由于 ~/CenterFusion/src/tools/nuscenes-devkit 这个文件夹是空的,还要自己手动去下载
命令如下:

#在 ~/CenterFusion/src/tools 文件夹下,先删除原来的空文件夹
rm -rf nuscenes-devkit
#再下载 nuscenes-devkit
git clone https://github.com/nutonomy/nuscenes-devkit.git

5.3 错误3

训练模型之后,在 CenterFusion 下生成 exp/ddd/centerfusion/logs_20xx-xx-xx-xx-xx/log.txt 文件,打开文件后,会发现这是空的!!!这是因为在 CenterFusion/src/lib/logger.py 文件中第 52 行

self.log = open(log_dir + '/log.txt', 'w')

这是是以写的方式打开,每次写的时候都会覆盖原来文件中的内容,应该以追加的方式打开,应该将参数 ‘w’ 改为 ‘a’ 即可

5.4 错误4

RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED

如果严格按照我的这个步骤配置,应该是不会出错的。
但是如果出现这个错误,那么就是你的 cuda、cudnn、pytorch 这几个版本不匹配导致的。
怎么解决呢?首先查看系统的 cuda、cudnn 版本,具体的命令就自己查吧,然后根据系统的 cuda、cudnn 版本,选择对应的 pytorch 版本

6. 算法测试训练

6.1 算法训练

不过在训练之前需要修改 train.sh 中的参数
(1)设置训练集 train_split 的值,可选 train、mini_train 这两个数据集
(2)设置测试集 val_split 的值,可选 val、mini_val、test 这三个数据集
(3)我训练时报错,发现 4GB 的显存不够用,gtx16504GB显卡把 batch_size 改为了 1,RTXA20008GB显卡把 batch_size 改为了 6,刚好跑满 现在显存7762MiB / 8192MiB大于 24 GB 的显卡可以不用改,改成1后训练基本没用,不收敛
(4)由于电脑配置有点low,只配置了一个 gpu,所以参数由 gpu 0,1 改为 gpu 0 ,用了两个 GPU 的话可以不用改
在这里插入图片描述

cd ~/CenterFusion
bash experiments/train.sh

在这里插入图片描述
在这里插入图片描述

6.2 算法测试

  • 修改如下参数:
    (1)设置验证集 val_split 的值,可选 val、mini_val、test
    (2)可视化(非必须):添加参数 --debug 4 即可,选项help如下
    [图片]

修改test.sh,由于只有一个GPU,所以测试时需要修改配置
在这里插入图片描述

另外还需要修改load的model,将/CenterFusion/exp/ddd/centerfusion/中训练好的pth文件复制到model文件夹中,修改名字,并在test.sh中加载该模型,修改后如下

export CUDA_VISIBLE_DEVICES=0
cd src

## Perform detection and evaluation
python test.py ddd \
    --exp_id centerfusion \
    --dataset nuscenes \
    --val_split mini_val \
    --run_dataset_eval \
    --num_workers 4 \
    --nuscenes_att \
    --velocity \
    --gpus 0 \
    --pointcloud \
    --radar_sweeps 3 \
    --max_pc_dist 60.0 \
    --pc_z_offset -0.0 \
    --load_model ../models/z99_mini_train_1205.pth \
    --flip_test \
    --debug 4 \
    # --resume \

增加–debug 4后报错
可视化需要修改代码,将CenterFusion/src/lib/utils下的debugger.py做部分修改,github issue如下debug mode in test.sh gives error (-5:Bad argument) in function ‘line’ · Issue #42 · mrnabati/CenterFusion · GitHub

  • 这是加了参数 --debug 4 后执行 debug 会产生的错误
Traceback (most recent call last):
  File "test.py", line 215, in <module>
    prefetch_test(opt)
  File "test.py", line 125, in prefetch_test
    ret = detector.run(pre_processed_images)
  File "/root/CenterFusion/src/lib/detector.py", line 151, in run
    self.show_results(self.debugger, image, results)
  File "/root/CenterFusion/src/lib/detector.py", line 429, in show_results
    img_id='bird_pred', cnt=self.cnt)
  File "/root/CenterFusion/src/lib/utils/debugger.py", line 426, in add_bird_view
    lineType=cv2.LINE_AA)
cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function 'line'
> Overload resolution failed:
>  - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
>  - Can't parse 'pt1'. Sequence item with index 0 has a wrong type
  • 看错误提示,修改 CenterFusion/src/lib/utils/debugger.py 第 424 行,如下,对四个 rect 值进行强转,具体如下
      cv2.line(bird_view, (int(rect[e[0]][0]), int(rect[e[0]][1])),
              (int(rect[e[1]][0]), int(rect[e[1]][1])), lc, t,
              lineType=cv2.LINE_AA)

然后就可以测试了

cd ~/CenterFusion
bash experiments/test.sh

在这里插入图片描述

生成的可视化检测结果位于/CenterFusion/exp/ddd/centerfusion/debug
在这里插入图片描述

Bird view
在这里插入图片描述

Camera view
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

细粒度图像分类论文研读-2019

文章目录Cross-X Learning for Fine-Grained Visual Categorization&#xff08;by end-to-end&#xff09;AbstractIntroductionApproachPreliminariesCross- Category Cross-Semantic RegularizerCross-Layer RegularizerOptimizationLearning a Mixture of Granularity-Spec…

公司刚来的京东架构师:看完我写的 spring 笔记,甩给了我一份文档

Spring 是分层的 full-stack&#xff08;全栈&#xff09; 轻量级开源框架&#xff0c;以 IoC 和 AOP 为内核&#xff0c;提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术&#xff0c;还能整合开源世界众多著名的第三⽅框架和类库&#xff0c;已经成为使⽤最多…

优维助力国内某省级商业银行同城异地灾备自动化建设

银监会在《商业银行数据中心监管指引》中明确要求“商业银行每年至少进行一次重要信息系统专项灾备切换演练&#xff0c;每三年至少一次重要信息系统全面灾备切换演练&#xff0c;以真实业务接管为目标&#xff0c;验证灾备系统有效接管生产系统与安全回切的能力&#xff0c;并…

SpringSecurity概念以及整合ssm框架

基本概念 Spring中提供安全认证服务的框架&#xff0c;认证&#xff1a;验证用户密码是否正确的过程&#xff0c;授权&#xff1a;对用户能访问的资源进行控制 用户登录系统时我们协助 SpringSecurity 把用户对应的角色、权限组装好&#xff0c;同时把各个资源所要求的权限信息…

毕业设计-基于大数据技术的旅游推荐系统-python

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

前端基础(十一)_Float浮动、清除浮动的几种方法

浮动 1、什么是浮动&#xff1f; 目的&#xff1a;为了让多个块级元素在同一行显示&#xff1b; 文档流&#xff1a;可显示的对象在排列时所占的位置&#xff1b; 浮动&#xff1a;使元素脱离正常的文档流&#xff0c;按照指定的顺序&#xff0c;方向发生移动&#xff0c;直到…

疫情下景区管理

开发工具(eclipse/idea/vscode等)&#xff1a;idea 数据库(sqlite/mysql/sqlserver等)&#xff1a;mysql 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;模块划分&#xff1a;公告类型、公告信息、用户信息、用户咨询、地区信息、景区信息、景区开放、景区预约、统计…

【Flask框架】——17 Flask蓝图

在一个Flask 应用项目中&#xff0c;如果业务视图过多&#xff0c;可否将以某种方式划分出的业务单元单独维护&#xff0c;将每个单元用到的视图、静态文件、模板文件等独立分开&#xff1f; 例如从业务角度上&#xff0c;可将整个应用划分为用户模块单元、商品模块单元、订单…

应急响应-windows/Linux主机加固

windows/Linux主机加固 1,账户安全 首先要确保电脑上的账户均为经常使用的账户&#xff0c;要禁止Guest用户&#xff0c;禁用其他无用账户&#xff0c;一段时间后无反馈即可删除&#xff0c;同时要留意是否有隐藏账户存在。 查看本地用户和组&#xff1a;右键此电脑>计算机管…

PG::FunboxEasy

nmap -Pn -p- -T4 --min-rate1000 192.168.58.111 nmap -Pn -p 22,80,33060 -sCV 192.168.58.111 查看80端口的页面&#xff0c;未发现可用信息。 对路径进行爆破 gobuster dir -u http://192.168.58.111/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt…

Vue3 —— 使用Vite配置环境变量

文章目录 一、为什么要配置环境变量?二、在Vite中配置环境变量 1.环境变量和模式2.环境变量3.生产环境替换4.env 文件总结一、为什么要配置环境变量? 在一个产品的前端开发过程中&#xff0c;一般来说会经历本地开发、测试脚本、开发自测、测试环境、预上线环境&#xff0c;然…

后疫情时代,VR全景创业的应用场景有哪些?

在数字化转型的进程中&#xff0c;VR技术可以帮助各个行业领域的企业商家更便捷地搭建沉浸式服务体验&#xff0c;帮助商家提高展示以及加快企业沟通效率。后疫情时代&#xff0c;企业数字化转型加速发展&#xff0c;VR技术已经成为企业云服务的标配工具&#xff0c;因此VR全景…

半入耳蓝牙耳机什么牌子好?音质最好的半入耳式蓝牙耳机

跑步或者游泳的时候带着耳机听音乐或者有声书&#xff0c;是一家很惬意舒心的事情&#xff0c;市面上有那么多的蓝牙耳机品牌&#xff0c;很多人在选购的时候总是犯了难&#xff0c;不知道哪款耳机值得入手&#xff0c;半入二的佩戴更加舒适&#xff0c;深受很多人的喜爱&#…

用于音频信号去噪的谱相减和陷波滤波的比较(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 谱相减减少背景&#xff08;加性&#xff09;噪声影响的最流行方法之一是谱相减。背景噪声是降低录音中语音质量和清晰度的最常…

const成员和static成员详解

const成员和static成员详解1.const成员函数2.static成员&#xff08;1&#xff09;静态成员变量&#xff08;2&#xff09;静态成员函数&#xff08;3&#xff09;静态成员使用场景1.const成员函数 将const修饰的“成员函数”称之为const成员函数&#xff0c;const修饰类成员函…

热点新品—类器官代谢组学

01为什么研究类器官如此重要&#xff1f; 类器官技术是近年来生物医学领域最具突破性的前沿技术之一&#xff0c;更是科技部发布了“十四五”国家重点研发计划的6个重点专项之一。因模型本身具有极高的创新性&#xff0c;深受基金申请和高分杂志的青睐。并且由于人源化类器官可…

让你室友、工友、小孩、断网的骚操作!ARP攻击演示!

前提&#xff1a; ① 、你需要 和 你室友处于同一个局域网&#xff0c;互相能ping通 ②、你需要知道你室友的IP ③、您可能需要一个linux 设备&#xff0c;手机也行&#xff08;需要安装termux 来执行命令&#xff09;、linux系统电脑、树莓派等都可以。 -----------------…

PCB入门学习—原理图的绘制2

目录 2.2 TEA5767音频模块的绘制 2.3 ENC28J60以太网模块的绘制 学习目录&#xff1a; 2.2 TEA5767音频模块的绘制 首先有个问题&#xff1a;为什么这个电容放在原理图上怎么移动也对不齐&#xff1f;&#xff1f; 解决方法&#xff1a;把原理图上的栅格这个东西设置成1mil…

【小甲鱼C语言】课后笔记第一章第七节——算数运算符

目录 1. 算术运算符 2. 何谓“目”&#xff1f; 3. 表达式 4. 类型转换 5.课后习题&#xff08;编程题&#xff09; 1. 算术运算符 C 语言通过提供大量的运算符来支持我们对数据进行处理&#xff0c;前边我们将一个值存放到变量中&#xff0c;使用的是赋值运算符&#xff…

lerna+rollup搭建vue组件库并发布到npm

一、框架介绍 1. lerna Lerna 是一个管理工具&#xff0c;用于管理包含多个软件包&#xff08;package&#xff09;的 JavaScript 项目。 目的是将大型代码仓库分割成多个独立版本化的软件包。 官网点这里 2. rollup Rollup 是一个 JavaScript 模块打包工具&#xff0c;可以将…