BEVFusion(mit)最强环境安装,部署复现

0.前言

        最近在做BEV视图下融合感知的项目,需要对相关工作进行学习。BEVFusion作为一项经典的工作,值得深入探索,论文地址,代码地址。然而由于配置环境比较麻烦,耽误了一些时间。经过几次成功配置之后,有了一些总结,在这里记录下来,供大家参考,也方便自己下次查阅。

        首先,要知道这个工程对于电脑配置要求比较高。我目前在3090和3060上都成功了,但是再低一些可能就不太行了,batch_size为1的时候显存占用8-9G。当前我配环境的这台电脑配置是3060显卡,16G内存,12G显存。如果你的电脑配置很低,那还是别麻烦了,或者换更好的配置。

目录如下,如果显卡驱动话cuda都安装好了,直接进入第三步!

0.前言

1.显卡驱动安装

2.cuda安装

3.环境配置

4.数据准备

5.终端训练与测试

6.用pycharm 进行 debug


1.显卡驱动安装

        如果你的电脑还没有安装显卡驱动,需要根据系统推荐的进行安装。查看是否有显卡驱动的指令是:

nvidia-smi

        如果显示了如下所示的详细信息:

        则说明有显卡驱动,可以直接跳到下一步。否则需要先安装显卡驱动,安装步骤如下。

        1.注意!在安装NVIDIA驱动以前需要禁止系统自带显卡驱动nouveau:可以先通过指令

lsmod | grep nouveau

查看nouveau驱动的启用情况,如果有输出表示nouveau驱动正在工作,如果没有内容输出则表示已经禁用了nouveau。禁用的方法: 禁用nouveau

        2.安装有好几种方法,这里介绍一种比较简单的方法,即在‘软件和更新’里面下载。选中合适的版本,点击应用更改,下载完成之后重启即可,再次用nvidia-smi查看。

  

        本文档的重点不在此,如果想用其他方法,参考:Ubuntu安装显卡驱动详细步骤icon-default.png?t=N5K3https://blog.csdn.net/m0_54792870/article/details/112980817?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168733445516782425129780%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168733445516782425129780&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-112980817-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=ubuntu%E5%AE%89%E8%A3%85%20%E6%98%BE%E5%8D%A1%E9%A9%B1%E5%8A%A8&spm=1018.2226.3001.4187

2.cuda安装

cuda的版本需要根据显卡来选择,运行nvidia-smi之后,可以看到显卡支持的最高cuda版本,那么我们安装的cuda版本要小于等于这个上限。但是又不能太低,有的显卡型号比较新,装了太老的cuda反而会出问题。我查到的是11.4,于是安装了cuda11.3,具体步骤如下:       

        (1)首先,进入下面的网址,点击对应版本的cuda。cuda选择官网

        (2)在终端中运行生成的两个指令,分别是下载和安装cuda。下载到99%时出现段错误(核心已转储)。参考:安装CUDA段错误(核心已转储)解决方案

        (3)安装时注意有几处需要选择,第一处选择continue,第二处输入accept,第三处用空格取消driver,并选择install。这样选择防止再次安装其他版本的显卡驱动导致出问题。

        (4)配置环境变量

sudu gedit ~/.bashrc

        在后面加上

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

        保存之后,记得source一下

source ~/.bashrc

        查看cuda是否安装成功

nvcc -V

3.环境配置

下面正式开始配环境啦。

        (1)下载安装openmpi,我也不知道这个到底需不需要,安了没有副作用。

wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.4.tar.gz
解压
cd openmpi-4.1.4./configure –prefix=/usr/local/openmpimake -j8sudo make install~/.bashrc文件里添加环境变量:MPI_HOME=/usr/local/openmpi
OMPI_MCA_opal_cuda_support=true
export PATH=${MPI_HOME}/bin:$PATH
export LD_LIBRARY_PATH=${MPI_HOME}/lib:$LD_LIBRARY_PATH
export MANPATH=${MPI_HOME}/share/man:$MANPATH测试安装是否成功
cd openmpi-x.x.x/examples
make
mpirun -np 4 hello_c

        (2)创建虚拟环境并安装torch

conda create -n bevfusion_mit python=3.8#在安装torch的时候指定cuda版本,不容易出问题,cu113指cuda 11.3
pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html

        (3)安装下列...

#安装mmcv的时候同样指定cuda和torch版本,cu113指cuda 11.3
pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.htmlpip install mmdet==2.20.0conda install openmpiconda install mpi4pypip install Pillow==8.4.0pip install tqdmpip install torchpackpip install nuscenes-devkitpip install ninjapip install numpy==1.19.5pip install numba==0.48.0pip install shapely==1.8.0

        (4)下载BEVFusion代码并做一些小修改

git clone https://github.com/mit-han-lab/bevfusion.git

               1.把mmdet3d/ops/spconv/src/indice_cuda.cu里面的4096都改成256

               2.对于编译脚本 setup.py,需要把显卡算力改成自己对应的。在下面这个链接里查出你的显卡对应的算力,然后选择用哪一行:

        "-gencode=arch=compute_70,code=sm_70"

        "-gencode=arch=compute_75,code=sm_75"

        "-gencode=arch=compute_80,code=sm_80"

        "-gencode=arch=compute_86,code=sm_86"

CUDA GPUs - Compute Capability | NVIDIA Developer  查到3060显卡的算力为86.

                3.开始编译

python setup.py develop

4.数据准备

        (1)下载nuScenes数据集,如果有需要就下载完整版,学习代码可以下载mini

nuScenes官网:https://www.nuscenes.org/nuscenesicon-default.png?t=N5K3https://www.nuscenes.org/nuscenes

           (2)   把文件夹格式改成下面这个样子,注意nuscenes这个单词全部小写

#正常版本,结构如下:
bevfusion-mit
├── tools
├── configs
├── data
│   ├── nuscenes
│   │   ├── maps
│   │   ├── samples
│   │   ├── sweeps
│   │   ├── lidarseg (optional)
│   │   ├── v1.0-test
|   |   ├── v1.0-trainval#如果下载的是mini版本,结构如下:
bevfusion-mit
├── tools
├── configs
├── data
│   ├── nuscenes
│   │   ├── maps
│   │   ├── samples
│   │   ├── sweeps
│   │   ├── v1.0-mini

       注意:还要下载Map expansion pack(v1.3) 然后解压到maps文件夹中。否则后面运行的时候会报错!

 

 

        (3)接下来运行数据转换的脚本

#同样的,如果是正常版本,运行:
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes#如果是mini版本,运行:
python tools/create_data.py  nuscenes --root-path ./data/nuscenes/ --version v1.0-mini --out-dir data/nuscenes/ --extra-tag nuscenes

         转换的过程如下所示:   

         完成之后,文件夹是这样的,增加了几个.pkl文件和nuscenes_database。

#正常版本:
├── data
│   ├── nuscenes
│   │   ├── maps
│   │   ├── samples
│   │   ├── sweeps
│   │   ├── lidarseg (optional)
│   │   ├── v1.0-test
|   |   ├── v1.0-trainval
│   │   ├── nuscenes_database
│   │   ├── nuscenes_infos_train.pkl
│   │   ├── nuscenes_infos_val.pkl
│   │   ├── nuscenes_infos_test.pkl
│   │   ├── nuscenes_dbinfos_train.pkl#mini版本
├── data
│   ├── nuscenes
│   │   ├── maps
│   │   ├── samples
│   │   ├── sweeps
│   │   ├── v1.0-mini
│   │   ├── nuscenes_database
│   │   ├── nuscenes_infos_train.pkl
│   │   ├── nuscenes_infos_val.pkl
│   │   ├── nuscenes_dbinfos_train.pkl

         我用的是mini,全部完成之后是这样的:

         (4)下载预训练权重

 

5.终端训练与测试

        (1)训练,官方给的是分布式训练:

torchpack dist-run -np 1 python tools/train.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages-pretrained.pth --load_from pretrained/lidar-only-det.pth

 

         训练结束

        训练时如果报显存溢出,把这两个调到最小:

 

        (2)测试:

torchpack dist-run -np 1 python tools/test.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml pretrained/bevfusion-det.pth --eval bbox

         训练和测试中可能遇到的问题以及方法:

        1.找不到maps中的一些东西。

         解决方法,下载Map expansion pack(v1.3) 然后解压到maps文件夹中。

        2.算力设置不匹配。

        3.cuda和torch的版本不匹配

        解决:Pytorch环境配置——cuda、、cudnn、torch、torchvision对应版本

        4.如果报错中包含setuptools,看一下版本,65.0的太新了,卸载重新下59.5.0,解决。 

6.用pycharm 进行 debug

        想要利用pycharm对代码进行debug,就不得不把运行语句改成python xxx.py --config,但是目前为止上述都是分布式的语句,前面带了torchpack dist-run -np这句话,而pycharm是不认识的,因此需要把原来的训练或测试脚本改成普通的。经过探索,还是没能把tools/train.py改好,但是把tools/test.py改好了。需要对tools/test.py做两点改动:

        (1)注释dist.init()

        (2)把distributed=True 改成False

        此时终端测试语句就可以变成:

python tools/test.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml pretrained/bevfusion-det.pth --eval bbox

       

        相应的,现在就可以在pycharm中配置BEVFusion的测试了

        (1)打开项目,并选择虚拟环境。Ubuntu pycharm配置Conda环境

        (2)配置debug的configrations,打开Run/Debug configurations。

        (3) 添加python。选择要运行的脚本,填入配置的参数,选择运行的文件夹。注意文件夹不对的话无法访问相对路径。

         (4)打断点,进行debug

         这个BEVFusion(mit)的环境安装,以及部署复现的教程就写到这了,后面将对代码进行深入学习。可能还会发一些心得和记录。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

去了一家不到 20 人的 IT 公司后,真的是大开眼界。。。

转自:知乎 来源: zhihu.com/question/421150601/answer/1475676199 前几天在知乎看到一个挺有意思的话题:不到 20 人的 IT 公司该去吗? 回答区有一位老哥分享了自己在一个20 来人的小公司的奇葩工作经历,分享一下。 下…

去了一家不到 20 人的 IT 公司后,真的是大开眼界。。。。

图片来源:AIGC 文章来源:知乎 前几天在知乎看到一个挺有意思的话题:不到 20 人的 IT 公司该去吗? 回答区有一位老哥分享了自己在一个20 来人的小公司的奇葩工作经历,分享一下。 原回答地址: zhihu.com/ques…

Android面试你简历准备好了吗?以及3-5年的Android工程师的瓶颈怎么突破

前言 以前都说: 不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应…

一键通(手机实现对讲机功能)

所谓“一键通”(英文缩写PTT,即Push-To-Talk),实际上就是集成了对讲机功能的手机,用户按下手机上的对讲键,就可以与任何地方的群组或个人直接进行通话。 一键通就是“即按即说”(PTT)的手机,融合…

Android SIP软电话,通话录音,VoIP电话,linphone电话

各位大佬好,我又来记笔记了~~ 公司又提新需求了,需要开发一个能通话(呼叫客户的手机号码)自动录音的模块。刚接触这个是蒙的,经过一番研究,可实现通话录音的方式大致有下面几种: 方案一&#xf…

GB28181语音对讲

GB28181语音对讲 前段时间将音频对讲功能集成我们国标平台,踩些坑记录下来,方便后来人。 GB28181-2016语音对讲没有明确规定流程,各厂家按自己的理解进行实现。先说海康的,毕竟海康 是这个行业的龙头老大。海康摄像机接收音频的…

基于sip的语音对讲 Demo

SipVoice 项目地址:SipVoice 该 demo 基于https://github.com/VoiSmart/pjsip-android 项目实现语音对讲对讲功能。 还有很多关于 pjsip 的功能和 API 请移步 pjsip-android。 正常运行该 Demo ,需要已有 Sip 服务端,Constants 中配置 ip …

讯飞星火认知大模型可以内测了

以ChatGPT为代表的AI产品层出不穷,每天在社交媒体都可以看到AI领域的新成果,写文章、写代码、绘画,各种功能让人大呼神奇。 4月24日,讯飞星火认知大模型来了。只需一个指令“懂你所言,答你所问,创你所需&a…

tabBar不显示

微信小程序tabBar不显示 在尝试小程序开发时,tabBar这个是个非常常见的组件,但是今天在进行开发时,设置了TabBarb并没有显示,被这个问题困扰了近半小时,现在将排查问题后所得到的经验记录下来。 首先 如果tabBar不显示…

微信小程序底部导航栏tabBar及不显示问题解决记录

1,首先需要新建一个目录images来保存相关导航图标,如下图: 2,在app.json文件中对tabBar进行配置(注意字母大小写不要写错,图片路径不要写错) "tabBar": {"color": "…

来自一个曾经200斤现在140斤程序员的减肥成功经验(包含个人认为相对安全的饮食法推荐)

一、何为减肥 作为名词:减去体内蓄积的脂肪 作为动词:控制日常饮食摄入,搭配好日常饮食结构,打开热量赤字(缺口),持续一定时间后达到减少体内脂肪,降低体脂率的效果。 二、吃与动 …

基于Android的健康食谱菜谱app

《[含文档PPT源码等]精品基于UniappSSM实现的Android的健康食谱交流app[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:Java 框架:ssm JDK版本:JDK…

菜谱分享APP/基于android菜谱分享系统

摘 要 随着现代生活水平的不断提升,人们越来越关注健康,关注美食,大部分人都希望吃得美味的同时也要吃得健康,所以,有的人喜欢在家自己动手制作美食,但是却缺少这方面的资讯来源。菜谱分享APP是一个使用Hbuildex作为手机客户端和后台服务系统的开发环境, MySQL作为后…

03 做毕业设计,前端部分你需要掌握的6个核心技能

其实前端新手如果想要自己实现一套毕业设计项目并非简单的事,因为之前很多人一直还停留在知识点的阶段,而且管理系统和C端网站都需要开发,但现在需要点连成线了。所以在启动项目开发之前呢,针对前端部分,我列举一些非常必要的前端核心技能,希望你已掌握。 《Vue + Sprin…

ChatGPT引领AI新浪潮,AIGC商业化启

ChatGPT引领AI技术新一轮热潮,预示着NLP技术有望迅速进入平民化应用时代。ChatGPT引领AI新浪潮,AIGC商业化启_up.pdf: https://url39.ctfile.com/f/2501739-805099732-b78420?p2096 (访问密码: 2096) 参考文献: [1]ChatGPT引领AI新浪潮&…

躺不平了?600万青年人失业,这届年轻人该何去何从?(文末附招聘岗位)

“中国主要的问题不是就业数量,而是就业的质量问题,即就业率高而工资收入低,普遍存在工作中‘穷人’的问题。” 一、青年失业率持续走高 6月15日上午,国新办举行新闻发布会,国家统计局新闻发言人、国民经济综合统计司…

散户交易潮流不火了?国际券商希望零售热潮将永久持续下去

今年 1 月,33 岁的 KlipC 用户 Miki Lok 在新加坡以500美元的价格在Robinhood券商上买入了游戏零售商GameStop和影院连锁AMC的股票,在今年早些时候的社区交易狂潮中,投机性购买狂潮使不受欢迎的股票飙升至创纪录高点。 Lok 女士回忆说&#x…

上海亚商投顾: 沪指冲高回落 高景气赛道股回归

前言:无惧大盘大跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 沪指今日横盘震荡,创业板指低开高走,盘中涨超1.7%,科创50一度涨近3%,赛道股持续…

锦秋基金臧天宇:大模型时代,AI创业者如何掘金

“2011年, A16Z 创始合伙人 Marc Andreesse 提出Software is eating the world,在我们步入 AI新时代的节点,或许我们可以说, AI is eating the world。” 在火山引擎和锦秋基金联合主办的「2023 AI逐梦者计划」活动中,锦秋基金执行董事臧天宇表示。 在…

查理芒格语录

要点 要有逆向思维 客观分析 每天读书 但要给每天读书要个固定的时间段,让自己不受打扰,高效的读书 如果你想要获得你要的东西,那就让自己配得上它。信任、成功和钦佩都是靠努力获得的 联系:怎样找到好的伴侣? 提升…