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

目录

    • 加载命令行参数
    • 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.mzph.cn/news/692186.shtml

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

相关文章

VirtualBox虚拟机磁盘VDI文件压缩瘦身

文章目录 问题现象虚拟机文件目录结构处理方法清除宿主机文件和虚拟机快照虚拟机磁盘瘦身 问题现象 2月7日下午四点多&#xff0c;我已经休假了&#xff0c;某县的客户运维方打来电话&#xff0c;说平台挂了&#xff0c;无法访问 客户是提供的一台Windows server2016机器部署平…

AIOps探索 | 从单一告警管理到统一告警管理

原作者&#xff1a;擎创科技 资深产品专家 布博士 前言 最近发现我们的一些客户&#xff0c;仍在使用十多年前的流程和思想来思考业务和产品的未来。我们认为做产品必须明确该产品未来的业务发展方向&#xff0c;否则研发出的东西只是应对当前可见的需求&#xff08;即项目需求…

【教程】详解相机模型与坐标转换

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 由于复制过来&#xff0c;如果有格式问题&#xff0c;推荐大家直接去我原网站上查看&#xff1a; 相机模型与坐标转换 - 生活大爆炸 目录 经纬度坐标系 转 地球直角坐标系大地直角坐标系 转 经纬度坐标系地理坐标…

感觉我国的程序员前景一片灰暗,是这样吗?

程序员也分为好几等&#xff0c;在现在看来大部分的Android、Java、前端等等开发。已经看不到希望了&#xff0c;很多人都在边缘挣扎&#xff1b;刚看到一位Android开发者&#xff0c;过完年回公司就通知被裁&#xff1b;可见每年都会有很多互联网公司倒闭&#xff0c;或者裁员…

手把手教你:gitee的注册以及代码的提交(上)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 gitee的介绍 首先&#xff0c;我们得了解什么是gitee&#xff1f; gitee是一个基于Git的代码托管和研发协作平台&#xff0c;上面可以托管个人或者公…

【AI学习】LangChain学习

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

服务器遭受 DDoS 攻击的常见迹象有哪些?

服务器遭受 DDoS 攻击的现象很常见&#xff0c;并且有时不容易预防&#xff0c;有部分原因是它们的形式多种多样&#xff0c;而且黑客手段越来越隐蔽。如果您怀疑自己可能遭受 DDoS 攻击&#xff0c;可以寻找多种迹象。以下是 DDoS 攻击的5个常见迹象&#xff1a; 1.网络流量无…

虚拟机+麒麟海光+达梦数据库linux 安装教程

一 下载 虚拟机下载地址下载 VMware Workstation Pro | CN 达梦数据库下载地址 产品下载 | 达梦数据库 (dameng.com) 银河麒麟下载地址 国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站 (kylinos.cn) 二 安装 虚拟机安装 https://www.cnblogs…

python+selenium 定位到元素,无法点击的解决方法

今天小编就为大家分享一篇pythonselenium 定位到元素,无法点击的解决方法&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。一起跟随小编过来看看吧 selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (234.75, 22)…

【JavaScript 漫游】【017】异步操作概述

文章简介 本文为【JavaScript 漫游】专栏的第 017 篇文章&#xff0c;主要记录了 ES5 规范中异步操作的基本知识点。 单线程模型同步任务和异步任务任务队列和事件循环异步操作的模式 单线程模型 单线程模型指的是&#xff0c;JS 只在一个线程上运行。它同时只能执行一个任…

Mysql如何优化数据查询方案

mysql做读写分离 读写分离是提高mysql并发的首选方案。 Mysql主从复制的原理 mysql的主从复制依赖于binlog&#xff0c;也就是记录mysql上的所有变化并以二进制的形式保存在磁盘上&#xff0c;复制的过程就是将binlog中的数据从主库传输到从库上。 主从复制过程详细分为3个阶段…

每日OJ题_二叉树dfs②_力扣129. 求根节点到叶节点数字之和

目录 力扣129. 求根节点到叶节点数字之和 解析代码 力扣129. 求根节点到叶节点数字之和 129. 求根节点到叶节点数字之和 难度 中等 给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字&am…

基于Windows搭建ftp服务器

WinR搜索’服务器管理器’,配置–用户和组 创建用户和组&#xff0c;将用户添加到组里 按图示创建一个文件&#xff0c;右键属性–安全 将刚才创建的组添加到对象里&#xff0c;并赋予他读取和写入的权限 角色–添加角色 勾选web服务器IIS 搜索IIS–网站右键–添加FTP站点…

【软考中级备考笔记】计算机体系结构

计算机体系结构 2月19日 – 天气&#xff1a;阴转小雪 1. 冯诺依曼计算机体系结构 冯诺依曼将计算机分为了五大部分&#xff0c;分别是&#xff1a; 控制器&#xff1a;主要负责协调指令到执行运算器&#xff1a;负责算数和逻辑运算存储器&#xff1a;负责存储在指令执行过程…

全网最 2024 GitHub Copilot超详细免费激活教学-干货

全网最&#x1f525; 2024 GitHub Copilot免费超详细激活教学 尊重原创&#xff0c;编写不易 &#xff0c;帮忙点赞关注一下~转载小伙伴请注明出处&#xff01;谢谢 GitHub Copilot 概述 GitHub Copilot 是由 GitHub 和 OpenAI 合作开发的一款人工智能编程助手。它利用机器…

JS基础(语法结构变量数据类型运算符流程控制)

JS基础(语法结构/变量/数据类型/运算符/流程控制) 目录 JS基础(语法结构/变量/数据类型/运算符/流程控制)什么是js&#xff1f;注释语法语法结构引入方式【1】script标签内部直接书写js代码【2】script标签src属性引入外部js代码 JS基础数据类型变量与常量变量的定义常量的定义…

ONLYOFFICE 8.0:引领数字化办公新纪元

目录 前言 软件安装 软件启动 软件新版本特性 个人评价 总结 前言 在当今快节奏的数字化世界中&#xff0c;高效的办公软件已成为企业竞争力的关键因素。ONLYOFFICE&#xff0c;作为全球领先的办公解决方案提供商&#xff0c;始终致力于通过技术创新来优化用户体验。如今…

Java使用Redis实现消息队列

近期刷Java面试题刷到了“如何使用Redis实现消息队列”&#xff0c;解答如下&#xff1a; 一般使用 list 结构作为队列&#xff0c; rpush 生产消息&#xff0c; lpop 消费消息。当 lpop 没有消息的时候&#xff0c;要适当sleep 一会再重试。若不使用sleep&#xff0c;则可以用…

【力扣 - 二叉树的最大深度】

题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 提示&#xff1a; 树中节点的数量在 [0, 10^4] 区间内。 -100 < Node.val < 100方法一&#xff1a;深度优先搜索 思路与算法 如…

Rust中不可变变量与const有何区别?

Rust作者认为变量默认应该是immutable&#xff0c;即声明后不能被改变的变量。这一点是让跨语言学习者觉得很别扭&#xff0c;不过这一点小的改变带来了诸多好处&#xff0c;本节我们来学习Rust的变量。 什么是变量&#xff1f; 如果你初次学习编程语言&#xff0c;变量会是一…