MIT-BEVFusion系列九--CUDA-BEVFusion部署2 create_core之参数设置

news2025/1/15 20:57:19

目录

    • 加载命令行参数
    • main 函数中的 create_core
      • 图像归一化参数
      • 体素化参数
      • 稀疏卷积网络参数
      • 真实世界几何空间参数 (雷达坐标系下体素网格的参数)
      • 解码后边界框的参数
      • 构建 bevfusion::Core 存储推理时需要的参数

本章开始,我们将一起看CUDA-BEVFusion的代码流程,看看NVIDIA部署方案的思路方法。

加载命令行参数

将代码debug起来,launch.json中配置好了传入的参数。C++代码中会接收命令行参数。具体如下

在这里插入图片描述

argc 是一个整数 (int) 类型的变量,代表命令行参数的数量 (argument count),即程序执行时通过命令行传递程序的参数的总量,包括程序名称本身。argc 的值至少为 1,因为第一个参数是程序的名称。

argv 是一个指向指针的指针 (char**),代表命令行参数的值 (argument vector)。它是一个指针数组,每个元素指向一个以空字符结尾的字符串,表示一个命令行参数的值。

./build/bevfusion $DEBUG_DATA $DEBUG_MODEL $DEBUG_PRECISION

run.sh 文件中,运行程序的代码如上,三个变量是在 environment.sh 脚本中定义的,分别为 int8,example-data,OFF。编译好可执行文件后,可以使用下面命令行运行程序。

./build/bevfusion example-data resnet50int8 int8

在这里,argc 就是 4,通过 argv 可以查看命令行参数。

  • 图示,argv 就是 launch.jsonprogramargs 的参数
    在这里插入图片描述

在这里插入图片描述
argv参数打印

main 函数中的 create_core

create_core是非常重要的方法,下方我们先分析他的参数设置部分。

在这里插入图片描述

  • 输入model(resnet50int8), precision(int8)两个字符串。

  • 返回值:std::shared_ptr<bevfusion::Core>

  • 作用创建 bevfusion::Core 对象,后续会调用这个对象的 update 与 forward 方法。src/bevfusion/bevfusion.cpp
    在这里插入图片描述

    1. 配置CoreParameter结构体类型的param参数:给 NormalizationParameterVoxelizationParameterSCNParameterGeometryParameterTransBBoxParameter 等结构体,赋值。—图像多大、步长多长(这些都是 yaml 文件中定义的参数)
      • 配置相机归一化参数
      • 配置激光雷达体素化参数
      • 配置稀疏卷积网络(SCN)参数
      • 配置 bevpool 中的 geometry 参数
      • 配置 TransBBox 参数
    2. 把上述已经赋值的结构体,给 CoreParameter 结构体。相当于把所有参数汇总给 CoreParameter
    3. 把包含了所有参数的 CoreParameter,给方法 bevfusion::create_core(param) 去创建 engine,这里bevfusion::create_core()是核心

图像归一化参数

这里设置了图像预处理需要的参数,熟悉bevfusion的话,这些参数都是比较常见的基础的参数。原始图像大小1600900,模型输入图像大小704256,预处理图像缩放倍率0.48等
在这里插入图片描述

在这里插入图片描述

  • 在代码中,嵌套命名空间是很常见的,这允许在一个命名空间中定义其他命名空间,提供了一种组织代码的方式,可以避免名字冲突,并且使代码更易于理解和维护。可以通过双冒号 :: 运算符来访问嵌套命名空间内的实体代码。

  • 这里通过 bevfusion::camera::NormalizationParameter 来构建结构体对象,然后对对象中的成员变量进行赋值。这部分用于定义相机图片进行预处理时使用的方法和参数

    • NormTypeChannelTypeInterpolation 35、36、37 行,枚举类型可选项

体素化参数

  • 这里是点云常见的参数,点云的范围前后左右-54~+54米,上下-5~+3米,点云体素化的步长0.075以及0.2。
  • 硬体素化的参数。
    在这里插入图片描述

在这里插入图片描述

稀疏卷积网络参数

在这里插入图片描述

在这里插入图片描述

voxelization 赋值为上面定义的 bevfusion::lidar::VoxelizationParameter 对象。

模型路径设置为 model/resnet50int8/lidar.backbone.xyz.onnx

模型输出的索引顺序为 XYZ

真实世界几何空间参数 (雷达坐标系下体素网格的参数)

在这里插入图片描述

在这里插入图片描述

解码后边界框的参数

在这里插入图片描述

  • 对应 yaml
    在这里插入图片描述

在这里插入图片描述

构建 bevfusion::Core 存储推理时需要的参数

最终,上面所有参数结构体,复制给param,统一管理后面需要的参数。

在这里插入图片描述

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

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

相关文章

Sample Pairing(ICLR 2018)

paper&#xff1a;Data Augmentation by Pairing Samples for Images Classification 本文的创新点 本文提出了一种新的应用于图像分类的数据增强方法SamplePairing&#xff0c;这种简单的数据增强技术显著提高了所有测试的数据集的分类精度。此外当训练集中的样本数量非常少…

vue3+element Plus+ts 自定义主题色,以及生成主题色各种透明度

目录 思路 安装css-color-function【接收一个颜色值&#xff0c;生成不同的透明度】 获取后台配置的主题色或者使用ColorPicker修改主题色 最终结果如下 思路 本篇文章的主体思路是从element Plus官网引申而来。结合了我以前用vue2element-ui配置主题色生成透明度&#x…

fastApi笔记01-路径参数

路径参数 使用与 Python 格式化字符串相同的语法来声明路径"参数"或"变量" from fastapi import FastAPIapp FastAPI()app.get("/items/{item_id}") def read_item(item_id):return {"item_id": item_id} http://127.0.0.1:8000/i…

年薪最高开到160万,鸿蒙开发人才紧缺!

华为鸿蒙开发人才紧缺 如今&#xff0c;鸿蒙与安卓彻底切割时间似乎越来越近&#xff0c;一批嗅觉灵敏的互联网厂商已经完成或开始启动开发鸿蒙原生App&#xff0c;包括美团、网易、今日头条、钉钉等。随着头部App厂商启动鸿蒙&#xff08;HarmonyOS&#xff09;原生应用开发&…

智慧公厕管理系统:让城市智慧驿站更加智慧舒适

智慧公厕管理系统是城市智慧驿站中不可或缺的一部分&#xff0c;它通过全方位的信息化解决方案&#xff0c;为公共厕所的使用、运营和管理提供了一种智能化的方式。作为城市智慧驿站的重要组成部分&#xff0c;智慧公厕管理系统发挥着重要的作用&#xff0c;为城市社会民生提供…

提升生产3D渲染效率与品质:挖掘渲染农场的潜力

在当今数字化时代&#xff0c;3D渲染已成为跨越多个领域不可缺少的技术&#xff0c;无论是在建筑视觉化、电影制作、互动媒体还是虚拟现实领域。随着对动态、逼真视觉效果的需求不断增长&#xff0c;3D渲染农场因其出色的运算能力和经济性成为行业中的关键解决方案。本篇文章旨…

使用LangChain结合通义千问API基于自建知识库的多轮对话和流式输出

使用LangChain结合通义千问API基于自建知识库的多轮对话和流式输出 本文章的第三弹&#xff0c;由于LangChain本文不支持直接使用通义千问API进行多轮对话和流式输出&#xff0c;但是自建知识库呢&#xff0c;还需要LangChain,因此我尝试了一下&#xff0c;自建知识库用LangCh…

Spring源码:手写SpringIOC

文章目录 一、分析二、实现1、版本1&#xff1a;实现Bean注入IOC容器&#xff0c;并从容器中获取1&#xff09;定义BeanDefinition2&#xff09;定义BeanDefinition实现类3&#xff09;定义BeanDefinitionRegistry4&#xff09;定义Beanfactory5&#xff09;定义默认Beanfactor…

学会Requests库,就学会了Python接口自动化

在 Python 中进行网络请求是日常开发中的一个常见任务&#xff0c;而 requests 库是处理这类任务的一种强大工 具。requests 提供了简单而灵活的接口&#xff0c;使得发送 HTTP 请求和处理响应变得非常容易。在这篇文章中&#xff0c;我们将深入研究如何使用 requests 库执行各…

grid新建主从一对多

目录 总结一、步骤前端1.第一步-编写tabs的modelBody2.第二步编辑表扩展js 后端--重写表的add和Update方法1.第一步 总结 编写tabs的modelBody后编辑表扩展js在重写后端partial的Service 一、步骤 前端 1.第一步-编写tabs的modelBody 复制下面代码该改的改 <template&…

Golang for 循环

从基础知识到高级技术、并发和通道 Go&#xff08;Golang&#xff09;编程语言中的“for”循环是一个基本而多功能的结构&#xff0c;用于迭代集合、重复执行代码块以及管理循环控制流。Golang的“for”循环语法简洁却强大&#xff0c;为处理多样的循环场景提供了一系列能力。无…

【2024软件测试面试必会技能】adb命令操作

前言&#xff1a; adb的全称为(Android Debug Bridge&#xff09;就是调试桥的作用。Adb 命令存放在 SDK 的Tools文件夹下&#xff0c;又称为手机和电脑连接的桥梁命令。 借助这个工具&#xff0c;我们可以管理设备或手机模拟器的状态。还可以进行以下的操作&#xff1a; 快…

计算机功能简介:EC, NVMe, SCSI/ISCSI与块存储接口 RBD,NUMA

一 EC是指Embedded Controller 主要应用于移动计算机系统和嵌入式计算机系统中&#xff0c;为此类计算机提供系统管理功能。EC的主要功能是控制计算机主板上电时序、管理电池充电和放电&#xff0c;提供键盘矩阵接口、智能风扇接口、串口、GPIO、PS/2等常规IO功能&#xff0c;…

C#分部类的应用:记录学生信息

目录 一、分部类及其用途 二、实例 再发一个分部类的应用&#xff0c;巩固一下。 一、分部类及其用途 C#中的部分类也被称为分部类。 C#中的部分类是一种将类的定义分成多个部分&#xff0c;每个部分都位于自己的文件中&#xff0c;然后在编译时合并在一起的机制。 部分类…

SNAT与DNAT公私网地址转换

前言 SNAT和DNAT是两种重要的网络地址转换技术&#xff0c;它们允许内部网络中的多个主机共享单个公共IP地址&#xff0c;或者将公共IP地址映射到内部网络中的特定主机。这些技术在构建企业级网络和互联网应用程序时非常重要&#xff0c;因为它们可以帮助保护内部网络安全&…

75.SpringMVC的拦截器和过滤器有什么区别?执行顺序?

75.SpringMVC的拦截器和过滤器有什么区别&#xff1f;执行顺序&#xff1f; 区别 拦截器不依赖与servlet容器&#xff0c;过滤器依赖与servlet容器。拦截器只能对action请求(DispatcherServlet 映射的请求)起作用&#xff0c;而过滤器则可以对几乎所有的请求起作用。拦截器可…

阿里云服务器操作系统有哪些?如何选择?

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

深入理解java虚拟机---自动内存管理

2.2 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而一直存在&#xff0c;有些区域则是依赖用户线程的启动和结束而建立和销…

[word] word定时自动保存功能的作用是什么 #知识分享#学习方法#媒体

word定时自动保存功能的作用是什么 word定时自动保存功能的作用是什么 这是word提供的一个保护用户文档的功能&#xff0c;一般情况下是为了预防在未知原因的情况下&#xff0c;用户电脑关闭&#xff0c;或者不小关掉Word&#xff0c;导致正在使用的文档丢失&#xff0c;给用户…

华清远见作业第三十九天——Qt(第一天)

思维导图&#xff1a; 登录界面&#xff1a; 代码&#xff1a; #include "mainwindow.h" #include<QToolBar> #include<QPushButton> MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {this->resize(600,400);this->setFixedSize…