无人驾驶实战-第五课(动态环境感知与3D检测算法)
机械式Lidar:TOF、N个独立激光单元、旋转产生360度视场MEMS式Lidar:不旋转
简单:x y z i (i为信号强度)稀疏:7%(相同场景范围,与图像数据相比的结果)无序:N!(角度不同、震动、扫描顺序不同 )精确:+-2cm

点云:简单精确适合几何感知图像:丰富多变适合语义感知
CAD模型:一般分类问题的数据集是CAD (虚拟生成)LiDAR传感器RGBD相机(结构光、双目相机)



基于点云的目标检测:分割地面->点云聚类->特征提取->分类地面分割依赖于人为设计的特征和规则,如设置一些阈值、表面法线等,泛化能力差多阶段的处理流程意味着可能产生复合型错误——聚类和分类并没有建立在一定的上下文基础上,目标周围的环境信息缺失这类方法对于单帧激光雷达扫描的计算时间和精度是不稳定的,这和自动驾驶场景下的安全性要求(稳定,小方差)相悖
非结构化数据,只是一堆点XYZI,没有网格之类的组织结构无序性:相同的点云可以由多个完全不同的矩阵表示(只是点的摆放顺序不同而已)数量变化大:图像中像素数量是常数,点云的数量可能会有很大(例如:不同线的激光雷达)表现形式变化大:一辆车向左转,同一辆车向右转,会有不同的点云代表同一辆车缺少数据:没有图片数据多,扫描时通常被遮挡部分数据丢失,数据稀疏
3D->2D,三维点云在不同角度的相机投影(映射)再借助2D图像处理领域成熟的深度学习框架进行分析典型算法: MVCNN、MV3D、AVOD、 Appllo2.0、SqueezeSeg

输入:BV+FV+RGB: 并非简单投影,而是提取高度/密度/强度/距离等特征作为像素值ROI:在BV训练一个3D RPN,分别向3种视图映射得到3种 ROI,并融合缺点:该方法在检测诸如行人和骑车人等小物体方面滞后(因为他们在BEV中特征本来就少又加上多次降采样),并且不能容易地适应具有垂直方向上的多个物体的场景(只用了BV)

输入:BEV+RGB 从[-40, 40]×[0, 70]×[0, 2.5]范围内点云数据生成6-channel BEV map,分辨率为0.1m, 700x800x6Z轴上[0,2.5]平分5段,前五个通道是每个栅格单元的最大高度, 第六个通道是每个单元中的密度信息





俯视投影到地面网格(2D grid-map)每个网格计算8个统计量使用UNet做障碍物分割





优点:速度快缺点:分割的精度仍然偏低 需要大量的训练集,而语义分割数据集标注困难改进版:SqueezeSegV2
优点:表示方式规整,可以将卷积池化等神经网络运算迁移到三维缺点:体素表达的数据量大(计算量很大 例如256x256x256 = 16777216),一般会减小分辨率(引入量化误差/局限性 例如64x64x64)
优点:与体素相比是更高效的点云结构化方法 (该粗的粗该细的细)缺点:仍然需要额外步骤对数据进行处理(类似体素化) 所以在端到端处理方面存在劣势

无序性:点云本质上是一堆点(nx3矩阵,其中n是点数) 点的顺序不影响它在空间中对整体形状的表示(相同的点云可以由两个完全不同的矩阵表示) 。希望不同的点云顺序可以得到相同的特征提取结果,可以用对称函数g (例如maxpooling或sumpooling)。旋转/平移性: 相同的点云在空间中经过一定的刚性变化(旋转或平移)坐标发生变化,希望不论点云在怎样的坐标系下呈现网络都能正确的识别出, 可以通过STN(spacial transform network)解决。


PointNet:单个点云特征 -> 全局特征,中间缺少局部信息(相当于用很大的卷积核/pooling只做了一层卷积/pooling 感受野一下就变最大) 单个PointNet操作可以看做一种特殊的卷积操作PointNet++:单个点云特征 -> 局部点云特征 -> 更大局部点云特征-> ... ->全局信息。PointNet的分层版本(相当于多次卷积 感受野逐渐变大)

采样:选取一些比较重要的点作为每一个局部区域的中心点分组:在这些中心点的周围选取k个近邻点(欧式距离给定半径内)PointNet: 使用PointNet提取局部特征(一次PointNet相当于一次卷积,故而称作PointNet卷积), 点云子集的特征结果输出到下一个set abstraction重复这个过程

多尺度分组:在每一个分组层都通过多个尺度来确定每一个中心点的邻域范围,并经过PointNet提取特征后将多个特征拼接起来,得到一个多尺度融合的新特征多分辨率分组:多分辨率分组法是考虑多种分辨率的融合。左边特征向量是通过一个set abstraction得到的(多次PointNet卷积),右边特征向量是直接对当前patch中所有点进行Pointnet卷积得到。并且当点云密度不均时可以通过判断当前patch的密度对左右两个特征向量给予不同权重,以此达到减少计算量的同时解决密度问题

PointNet:点云分别提取特征(顺序无关) -> 对称函数解决顺序问题(maxpooling) “处处小心顺序问题”PointCNN:点云领域提取特征(顺序相关) -> 用X变换解决顺序问题 “前期放开干/后期统一变”




Pixel-Based: 2D-gridVoxel-Based: 3D-gridTree-Based: Tree structPoint-Based: 对称函数 / X变换
输入:仅使用激光雷达数据特征学习网络卷积中间层网络区域提取网络(RPN)优缺点: 准确度很高, 但在TitanX GPU上只有4fps的低速度

体素分块(Voxel Partition)输入点云(D,H,W) 体素的深高宽为(vD,vH,vW) voxel grid点云分组(Grouping)将点云按照上一步分出来的体素格进行分组随机采样(Random Sampling)每一个体素格随机采样固定数目的点T 因为a) 网格单元内点云数量不均衡 b) 且64线一次扫描点云数量巨大(10w)全部处理需要消耗很多cpu和内存

三个全卷积层块(Block)每次尺度减半每一个块的输出都上采样到相同尺寸进行串联得到高分辨率特征图输出: Probability Score Map (二分类 例如是否为车) [None, 200/100, 176/120, 2] 和Regression Map(位置修正) [None, 200/100, 176/120, 14]

相关文章:

无人驾驶实战-第五课(动态环境感知与3D检测算法)
激光雷达的分类: 机械式Lidar:TOF、N个独立激光单元、旋转产生360度视场 MEMS式Lidar:不旋转 激光雷达的输出是点云,点云数据特点: 简单:x y z i (i为信号强度) 稀疏:7%&…...
Tomcat 的内存配置
修改 Tomcat 的内存配置,你需要调整 Tomcat 的 Java 虚拟机(JVM)参数。具体来说,你需要修改 catalina.sh(Linux/macOS)或 catalina.bat(Windows)脚本中的 JAVA_OPTS 变量。以下是一般…...

pycharm出现python test运行报错(pytest模式)
pycharm出现python test运行报错 一、python test 执行代码报错二、删除运行配置三、修改pycharm默认配置为 unittests四、成功! 一、python test 执行代码报错 二、删除运行配置 三、修改pycharm默认配置为 unittests 四、成功!...
JavaScript篇 this指向
文章目录 1.this 关键字2.this实质3.使用场合3.1.全局环境3.2.构造函数3.3.对象的方法 4. 使用注意4.1.避免多层 this4.2.避免数组处理方法中的 this4.3.避免回调函数中的 this 5.绑定this5.1.Function.prototype.call()5.2.Function.prototype.apply()5.3.Function.prototype.…...

操作系统复习总结1
操作系统复习总结,仅供笔者复习使用,参考教材: 《操作系统原理》 - 何静媛编著. 西安电子科技大学出版社《操作系统考研复习指导》2024年 - 王道论坛组编. 电子工业出版社 本文主要内容为:计算机系统概述; 计算机系…...

Matlab中图的最短路径
前言: 图的基本概念: 若想简单绘制图可以利用此网站: 左上角Undirected/Directed是无向图/有向图 左边 0-index ,1-index为0下标,1下标。 Node Count为节点个数 Graph Data:最初尾节点的名称ÿ…...
没有jodatime,rust里怎么将字符串转为日期呢?
关注我,学习Rust不迷路!! 在 Rust 中,有多种方法可以在时间和字符串之间进行转换。以下是五种常见的方式: 1. 使用 chrono 库进行转换: use chrono::{NaiveDateTime, DateTime, Utc, TimeZone};fn main(…...
【Markdown入门及使用】
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
大数据面试题:HBase的读写缓存
面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 参考答案: HBase上RegionServer的cache主要分为两个部分:MemStore & BlockCache。 MemStore是写缓存,Block…...

springboot基于vue的高校迎新系统的设计与实现8jf9e
随着时代的发展,人们的生活方式得到巨大的改变,从而慢慢地产生了大量高校迎新信息,高校迎新信息需要一个现代化的管理系统,进行高校迎新信息的管理。 高校迎新系统的开发就是为了解决高校迎新管理的问题,系统开发是基于…...

JVM入门到精通
一、JVM概念 1.1、什么是JVM Java Virtual Machine:Java虚拟机,用来保证Java语言跨平台 Java虚拟机可以看做是一台抽象的计算机,如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域 Java虚拟机与Java语言并没有必然…...
Hive执行引擎的区别
执行引擎 Tez、Spark 和 MapReduce 都是用于在大数据处理中执行任务的框架或引擎,它们在性能、优化、适用场景等方面有一些区别。 MapReduce: MapReduce 是 Hadoop 最早引入的批处理计算模型,它将任务分成 Map 和 Reduce 两个阶段,…...
分布式 - 服务器Nginx:常见问题总结(二)
文章目录 01. Nginx 虚拟主机怎么配置?02. Nginx location 指令的作用?03. Nginx location 指令如何与其他指令一起使用?04. Nginx root 命令的作用?05. Nginx if 模块的作用?06. Nginx include 指令的作用?07. Nginx…...

【Paper Reading】CenterNet:Keypoint Triplets for Object Detection
背景 首先是借鉴Corner Net 表述了一下基于Anchor方法的不足: anchor的大小/比例需要人工来确认anchor并没有完全和gt的bbox对齐,不利于分类任务。 但是CornerNet也有自己的缺点 CornerNet 只预测了top-left和bottom-right 两个点,并没有…...
【BASH】回顾与知识点梳理(三)
【BASH】回顾与知识点梳理 三 三. 命令别名与历史命令3.1 命令别名设定: alias, unalias3.2 历史命令:history同一账号同时多次登入的 history 写入问题无法记录时间 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 三. 命令…...
C#设计模式之---单例模式
单例模式(Singleton) 单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例。 1)普通单例模式 using System; namespace SingletonPattern {/// /// 单例模式(非线程安全)/// …...

Git工具安装
Git 工具安装 1. 下载Git安装包2. 安装Git工具3. 简单的使用配置用户名 1. 下载Git安装包 打开官网 https://git-scm.com/downloads点击下载 2. 安装Git工具 右击以管理员身份运行 
深度学习——注意力机制、自注意力机制
什么是注意力机制? 1.注意力机制的概念: 我们在听到一句话的时候,会不自觉的捕获关键信息,这种能力叫做注意力。 比如:“我吃了100个包子” 有的人会注意“我”,有的人会注意“100个”。 那么对于机器来说…...

STM32入门学习之定时器中断
1.STM32的通用定时器是可编程预分频驱动的16位自动装载计数器。 STM32 的通用定时器可以被用于:测量输入信号的脉冲长度 ( 输入捕获 ) 或者产生输出波 形 ( 输出比较和 PWM) 等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形 周…...
基本数据类型与包装数据类型的使用标准
Reference:《阿里巴巴Java开发手册》 【强制】所有的 POJO 类属性必须使用包装数据类型。【强制】RPC 方法的返回值和参数必须使用包装数据类型。【推荐】所有的局部变量使用基本数据类型。 比如我们如果自定义了一个Student类,其中有一个属性是成绩score,如果用Integer而不用…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...