Fast-BEV代码复现实践

这篇具有很好参考价值的文章主要介绍了Fast-BEV代码复现实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Fast-BEV代码复现实践,专业踩坑

最近在研究一些BEV视觉感知算法,这里记录一下Fast-BEV代码复现实践,专业踩坑^_^
理论这里就不详细介绍,详情见原作者论文Fast-BEV: A Fast and Strong Bird’s-Eye View Perception Baseline
其他csdn,知乎上理论讲解也比较详细。主要还是本人太菜,讲不了理论,这里只讲工程复现^_^

  • 如果觉得本文章可以,一键三连支持一波,^_^
  • 部署有问题的小伙伴欢迎留言和加Q裙-472648720

BEVFusion代码复现实践

BEVFustion-TensorRT部署

BEV各算法环境部署实战汇总

1 运行环境搭建

  • ubuntu20.04,python-3.8, torch-1.10.0, cuda-11.3,cudnn-8.6
  • 不要问其他版本能不能通,小白和不想折腾环境的童鞋直接抄作业

1.1 conda与cuda

cuda,conda,torch安装参考

  1. 采用conda管理python环境,毕竟方便,miniconda下载地址 安装步骤略
  2. 显卡驱动cuda,cudnn安装网上帖子多,为了省略篇幅,默认安装好了
  • 大家具体不知道各种库版本号对应关系,就直接跟着抄作业,cuda-11.3.0, cudnn-8.6.0,python-3.8, torch-1.10.0 , mmopenlab相关库版本也一样,直接抄作业
  • conda和pip换国内源, 百度搜一下,防止国内安装失败 换源参考

1.2 构建python虚拟环境

  • 大家不知道某个库的具体版本,就直接抄作业,跟我一致就行,后面就不再强调
  1. 构建python环境
    python用3.8以上,3.7版本后续mmcv相关安装出了问题
conda create -n fastbev python=3.8
  • 激活新环境
conda activate fastbev
  1. torch安装

cuda与torch版本查询 我用的torch-1.10.0

pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html
  1. 安装mmcv相关库

由于fastbev出来很久了,而mmcv-full已经更新到2.x.x版本,改名为mvcc, fastbev还是用的 mmcv-full

  • 安装fastbev所需的mmopenlab的相关包
# 安装mmcv-full安装时终端会卡住,不是卡住,是下载时间比较长,耐心等待
pip install mmcv-full==1.4.0

# 安装mmdet
pip install mmdet==2.14.0

# 安装mmdet
pip install mmsegmentation==0.14.1

1.3 下载FASTBEV源码

可以直接拉取本人已经修改后的仓库代码gitee地址, 求个☆Star^_^

  • 安装fastbev相关依赖
# 下载fastbev工程
git clone https://github.com/Sense-GVT/Fast-BEV.git
# 激活虚拟环境
conda activate fastbev
# 进入Fast-BEV
cd Fast-BEV

# 配置所需依赖包
pip install -v -e .  
# or "python setup.py develop"
  • 查看mmopenlab相关包版本号
python -c 'import mmcv;import mmdet;import mmdet3d;import mmseg;print(mmcv.__version__);print(mmdet.__version__);print(mmdet3d.__version__);print(mmseg.__version__)'

显示版本号如下:依次为mmcv,mmdet,mmdet3d,mmseg对应的版本号

Fast-BEV代码复现实践

其他依赖包:

 pip install ipdb
 pip install timm

自此基本环境已经装好。

2 准备数据集

2.1 下载数据集

这里只介绍nuscenes数据集,nuscenes下载地址

由于nuscenes数据太大,这里只测试nuscense提供mini版本, 下载map跟mini,如下图点击红色框中US即可

  1. 下载
    点击US,Aias都行
    Fast-BEV代码复现实践

下载后得到2个压缩的文件

Fast-BEV代码复现实践

  1. 解压到当前目录
    解压得到nuScenes-map-expansion-v1.3与v1.0-mini两个目录, 把nuScenes-map-expansion-v1.3中的三个文件复制到v1.0-mini/map目录下。最终得到新v1.0-mini目录,就行训练所需的数据集。

Fast-BEV代码复现实践

2.2 数据集转换为FastBEV支持格式

进入Fast-BEV工程目标, 创建data目录,然后将上面的v1.0-mini文件夹复制到./Fast-BEV/data下, 并将v1.0-mini重命名为nuscenes, 目录结构如下图所示:
Fast-BEV代码复现实践

因为使用的mini数据集, 转换时候加上参数--version 该数据未提供v1.0-test文件

如果使用全部的nuscenes数据可以不跟--version

  1. 运行create_data.py
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes --workers 10 --version v1.0-mini

执行后,产生下面红框中的文件

Fast-BEV代码复现实践

  1. 运行nuscenes_seq_converter.py
    由于使用的mini数据集无test文件,需要修改nuscenes_seq_converter.py文件,找到代码15行和20行,修改如下:

Fast-BEV代码复现实践

修改后,运行

python tools/data_converter/nuscenes_seq_converter.py

生成 nuscenes_infos_train_4d_interval3_max60.pklnuscenes_infos_val_4d_interval3_max60.pkl 两个文件,
这两个文件就是训练需要的数据集,如下图所示:

Fast-BEV代码复现实践

3 训练

3.1 训练配置

  1. 下载预训练模型pretrained_models

下载地址 需要魔法上网
总体提供了r18,r34,r50三种残差网络模型。这里下载cascade_mask_rcnn_r18_fpn_coco-mstrain_3x_20e_nuim_bbox_mAP_0.5110_segm_mAP_0.4070.pth

这个需要跟配置文件一致。配置文件也是 r18, 下载后,新建一个pretrained_models目录放入其中。如下图所示:

Fast-BEV代码复现实践

  1. 修改配置文件
    不修改配置文件可能出现3.2节的报错问题, 修改后,可直接跳过3.2小节

configs/fastbev/exp/paper/fastbev_m0_r18_s256x704_v200x200x4_c192_d2_f4.py,文件为例:(当然其他几个配置文件也行)

Fast-BEV代码复现实践

  • 将该配置文件中的将SyncBN改成BN,将AdamW2换成Adam;

  • 该配置文件中146行代码去掉注释; 147-150代码加上注释, 如下所示

file_client_args = dict(backend='disk')
# file_client_args = dict(
# backend='petrel',
# path_mapping=dict({
# data_root: 'public-1424:s3://openmmlab/datasets/detection3d/nuscenes/'}))
  • 安装setuptools-58.0.4版本
conda install setuptools==58.0.4
  • 配置文件中预训练模型地址修改, 代码331行,load_from参数指向第1步下载的预训练模型地址,如果不知道相对路径,可以直接给绝对路径,我这里是相对路径
load_from = 'pretrained_models/cascade_mask_rcnn_r18_fpn_coco-mstrain_3x_20e_nuim_bbox_mAP_0.5110_segm_mAP_0.4070.pth'
  1. 训练
python tools/train.py configs/fastbev/exp/paper/fastbev_m0_r18_s256x704_v200x200x4_c192_d2_f4.py --work-dir work_dir --gpu-ids 0

参数说明

--gpu-ids  0代表gpu使用第1块。本机只有一块gpu
--work-dir  输出文件目录,包含日志等文件
其他参数详情建train.py中parse_args()函数

终端出现以下图中红色框中内容,代表训练已经成功运行, 具体训练周期epoch,batch_size等参数可以在fastbev_m0_r18_s256x704_v200x200x4_c192_d2_f4.py配置文件中修改
Fast-BEV代码复现实践

3.2 训练时报错

  • 错误1
    Fast-BEV代码复现实践

方案1: 点击红框上面一行,跳转到报错的文件中,注释掉使用distutils的代码

Fast-BEV代码复现实践

方案2:
AttributeError: module 'distutils' has no attribute 'version'

conda install setuptools==58.0.4
  • 错误2
    Fast-BEV代码复现实践

146行去掉注释,147-150加上注释

  • 错误3
    Fast-BEV代码复现实践

将SyncBN改成BN

  • 错误4
    Fast-BEV代码复现实践

将AdamW2换成Adam

4 测试

4.1 测试推理

由于自己的显卡显存受限,训练的模型,测试结果不太理想,直接采用原作者提供的训练好的模型进行测试,下载地址

本人采用的fastbev_m0_r18_s256x704_v200x200x4_c192_d2_f4中epoch_20.pth, 下载地址

python tools/test.py configs/fastbev/exp/paper/fastbev_m0_r18_s256x704_v200x200x4_c192_d2_f4.py pretrained_models/epoch_20.pth --out output/result.pkl
  • out 必须跟.pkl后缀。用来保存检测结果
--out 必须跟.pkl后缀。用来保存检测结果
--show 不要加,加上会报错,可能原作者未优化好

4.2 可视化

由于测试运行代码时,加入–show会报错,可以tools/misc/visualize_results.py把上一步的result.pkl生成视频流展示。

python tools/misc/visualize_results.py configs/fastbev/exp/paper/fastbev_m0_r18_s256x704_v200x200x4_c192_d2_f4.py --result output/result.pkl --show-dir show_dir
  • 报错1:

assert len(_list) == len(sort)

Fast-BEV代码复现实践

解决办法:Fast -BEV/mmdet3d/datasets/nuscenes monocular_dataset.py, 找到192行修改成193行样子:
Fast-BEV代码复现实践

  • 报错2:

Fast-BEV代码复现实践

解决方法,安装这2个包:

pip install imageio[ffmpeg] imageio[pyav]

最后运行visualize_results.py ,生成video_pred.mp4与video_gt.mp4两个视频:

Fast-BEV代码复现实践

其中某一帧可视化:

Fast-BEV代码复现实践

发现m5-r18模型效果不是很好,很多只检测了个寂寞,大家可以尝试用m5-r50的epoch_20pth, 下载地址


参考文章

感谢各位大佬的辛勤付出, 瑞思拜^-^!!!

作者源码github地址

参考文章一

参考文章二

小伙伴们部署时遇到问题,欢迎各位小伙伴留言,欢迎进入bev交流釦裙472648720,大家一起学bev!

如果觉得文章可以,一键三连支持一波,瑞思拜^-^文章来源地址https://www.toymoban.com/news/detail-475894.html


到了这里,关于Fast-BEV代码复现实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 视觉BEV经典算法:LSS详解与代码

    本文介绍一篇视觉BEV经典算法:LSS,论文收录于 ECCV2020 ,本文通过显示的进行 图像离散深度估计 完成目标语义分割,重点是 如何将二维图像特征转换成BEV特征 。 项目链接:https://nv-tlabs.github.io/lift-splat-shoot/ 整个工程文件结构如下,非常简洁:文件是 data.py、explore.py、mod

    2024年02月16日
    浏览(29)
  • 【BEV】学习笔记之FastBEV(原理+代码注释)

    1、前言 BEV模型部署一直是难以解决的问题,在车载芯片上运行要占用大量计算资源,为此FastBEV的作者提出了更加轻量级的方法,不需要transformer来提取BEV特征,仅使用卷积网络来完成,简单而有效。本文将会记录学习过程中的一些知识点,包括如果在本地运行、测试、随后

    2024年02月09日
    浏览(42)
  • [BEV] 学习笔记之BEVDet(原理+代码解析)

    前言 基于LSS的成功,鉴智机器人提出了BEVDet,目前来到了2.0版本,在nuscences排行榜中以mAP=0.586暂列第一名。本文将对BEVDet的原理进行简要说明,然后结合代码对BEVDet进深度解析。 repo: https://github.com/HuangJunJie2017/BEVDet paper:https://arxiv.org/abs/2211.17111 欢迎进入BEV感知交流群,一起

    2024年02月05日
    浏览(34)
  • Fast Planner——代码解读参考资料整理

    参数解读 主要函数解读 概率栅格地图,概率更新过程的公式推导过程 全概率公式、贝叶斯公式 一. kinodynamic a_star(前端hybrid A_star动力学路径搜索) 1.1启发函数的计算 1.2 Compute shot Traj 1.3 节点扩张 1.4 节点剪枝 1.5 返回kinopath与 getsamples 二、B样条曲线设置 2.1 均匀B样条设置

    2024年02月05日
    浏览(77)
  • Ultra-Fast-Lane-Detection代码解析

    近期由于学习要求,复现成功Ultra-Fast-Lane-Detection代码后,记录下自己在原理上的学习笔记,本人刚接触这块,有不对的地方欢迎指正。 代码链接:GitHub - cfzd/Ultra-Fast-Lane-Detection: Ultra Fast Structure-aware Deep Lane Detection (ECCV 2020) 论文创新点: 使用全局特征的基于行的选择问题,提

    2024年02月13日
    浏览(27)
  • webshell实践复现

    目录 一.Nginx负载均衡(反向代理及负载均衡配置以省略)         1.环境搭建         2.复现  二.webshell实践 1:异或操作绕过 2:取反绕过  3:php语法绕过                  注:需要三台主机搭建下载Nginx环境,在配置文件即可                 将文件上传至虚拟机中,

    2024年02月12日
    浏览(33)
  • AI免费写代码chatGPT软件Build Software. Fast

    新版要注册登录(有汉化教程) 1.软件简介 Build Software. Fast.是一款AI编辑器,使用 openAI GPT-4 模型编写的软件 我的评价是里面接入的AI没有GPT3.5 智能,并不是很好用,奈何它免费,不要相信网上免费注册chat GPT的, 因为官方成本摆在哪里 ​ 官网地址:https://www.cursor.so/ 如果

    2023年04月21日
    浏览(24)
  • 【计算机视觉】Fast Segment Anything 安装步骤和示例代码解读(含源代码)

    论文地址: 快速分段任意模型 (FastSAM) 是一种 CNN 分段任意模型,仅由 SAM 作者发布的 SA-1B 数据集的 2% 进行训练。 FastSAM 的性能与 SAM 方法相当,运行速度提高了 50 倍。 该代码需要 python=3.7 ,以及 pytorch=1.7 和 torchvision=0.8 。 请按照此处的说明安装 PyTorch 和 TorchVision 依赖项。

    2024年02月13日
    浏览(30)
  • 路规算法详细解读(一)—— FAST-Planner重要部分代码解读

    由于最近的研究需要,需要对Fast-planner和Ego-planner的代码了解,所以写出这篇代码解读文章,本文持续更新。废话不多说了,上干货! 本文基于以下大佬的代码解析基础上去阅读、理解、总结而成,对我的帮助真的特别大。觉得有帮助的朋友记得给大佬点赞! Fast-Planner代码阅

    2024年01月18日
    浏览(32)
  • Fast SAM与YOLOV8检测模型一起使用实现实例分割以及指定物体分割(有代码)

    Fast SAM与YOLOV8检测模型一起使用 VX 搜索”晓理紫“ 关注并回复yolov8+fastsam获取核心代码 晓理紫 实例分割数据集的获取要比检测数据的获取更加困难,在已有检测模型不想从新标注分割数据进行训练但是又想获取相关物体的mask信息以便从像素级别对物体进行操作,这时就可以

    2024年02月13日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包