无人驾驶实战-第五课(动态环境感知与3D检测算法)

激光雷达的分类:
    机械式Lidar:TOF、N个独立激光单元、旋转产生360度视场
    MEMS式Lidar:不旋转
激光雷达的输出是点云,点云数据特点:
    简单:x y z i (i为信号强度)
    稀疏:7%(相同场景范围,与图像数据相比的结果)
    无序:N!(角度不同、震动、扫描顺序不同 ) 
    精确:+-2cm
图像VS点云
    点云:简单精确适合几何感知 
    图像:丰富多变适合语义感知
3D点云数据来源:
    CAD模型:一般分类问题的数据集是CAD (虚拟生成)
    LiDAR传感器 
    RGBD相机(结构光、双目相机)
无人驾驶公开数据集
点云数据的可视化:
一般转换为鸟瞰图和前视图。点云数据采用右手坐标系,可以设计一个空间位置与图像坐标的映射关系。
点云分析的传统方法的难点:
基于点云的目标检测:分割地面->点云聚类->特征提取->分类
地面分割依赖于人为设计的特征和规则,如设置一些阈值、表面法线等,泛化能力差 
多阶段的处理流程意味着可能产生复合型错误——聚类和分类并没有建立在一定的上下文基础上,目标周围的环境信息缺失 
这类方法对于单帧激光雷达扫描的计算时间和精度是不稳定的,这和自动驾驶场景下的安全性要求(稳定,小方差)相悖
点云分析的深度学习方法的难点:
非结构化数据,只是一堆点XYZI,没有网格之类的组织结构
无序性:相同的点云可以由多个完全不同的矩阵表示(只是点的摆放顺序不同而已) 
数量变化大:图像中像素数量是常数,点云的数量可能会有很大(例如:不同线的激光雷达) 
表现形式变化大:一辆车向左转,同一辆车向右转,会有不同的点云代表同一辆车 
缺少数据:没有图片数据多,扫描时通常被遮挡部分数据丢失,数据稀疏
深度学习中处理点云数据的几种思路:
1.Pixel-Base 基于像素的
基本思想:
3D->2D,三维点云在不同角度的相机投影(映射) 
再借助2D图像处理领域成熟的深度学习框架进行分析 
典型算法: MVCNN、MV3D、AVOD、 Appllo2.0、SqueezeSeg
MVCNN
最早用深度学习处理点云数据的方法,用于分类。
主要思路是用虚拟相机从12个不同的位置给点云数据拍照,成像结果送入CNN进行分类。
MV3D
输入:BV+FV+RGB: 并非简单投影,而是提取高度/密度/强度/距离等特征作为像素值
ROI:在BV训练一个3D RPN,分别向3种视图映射得到3种 ROI,并融合 
缺点:该方法在检测诸如行人和骑车人等小物体方面滞后(因为他们在BEV中特征本来就少又加上多次降采样),并且不能容易地适应具有垂直方向上的多个物体的场景(只用了BV)
AVOD
输入:BEV+RGB 从[-40, 40]×[0, 70]×[0, 2.5]范围内点云数据生成6-channel BEV map,分辨率为0.1m, 700x800x6 
Z轴上[0,2.5]平分5段,前五个通道是每个栅格单元的最大高度, 第六个通道是每个单元中的密度信息
其中的Feature Extractor采用编解码方式,全分辨率的Feature Map对小目标友好。
融合两种特征图:先通过1×1的卷积对两个feature map进行降维,每个3D anchor投影到BEV以及image获得两个roi,每个roi进行crop resized to 3x3然后进行像素级别的特征融合(特征风丰富,可适应垂直方向多物体)。
在融合的特征图上训练RPN(mv3d仅在BEV上训练RPN)在BEV上采用2D NMS将top k proposals 送入第二阶段检测网络
融合后的feature通过三层全连接层得到类别(全分类)、bounding box、方向的输出,得到精确有方向有类别的 3D bounding boxs。每个bounding box有四个可能的朝向,选取离regressed orientation vector最近的朝向。
Apollo 2.0
基于激光雷达的感知方案,
    俯视投影到地面网格(2D grid-map)
    每个网格计算8个统计量
    使用UNet做障碍物分割
Squeeze Seg
使用的是球面投影,(x,y,z)->(θ,ϕ)  3D->2D,ϕ(azimuth) θ(Altitude)。
球面坐标系下的每一个点都可以使用一个直角坐标系中点表示的点表示,提取点云中每一个点的5个特征:(x, y,z, intensity, range)放入对应的二维坐标 (i,j)。
由于高度64小于其宽度512,网络主要对宽度进行降维(通过Max Pooling),最后被输入到一个条件随机场中做进一步的矫正
单纯的CNN逐像素分类结果会出现边界模糊的问题(下采样丢失细节),为解决该问题,CNN输出的label map被输入到一个CRF(由RNN实现)进一步的矫正CNN输出的label map。
优点:速度快
缺点:分割的精度仍然偏低 需要大量的训练集,而语义分割数据集标注困难 
改进版:SqueezeSegV2
2.Voxel-Base 基于体素的
将点云划分成均匀的空间三维体素(体素网格提供了结构,体素数量像图片一样是不变的,也解决了顺序问题)
优点:表示方式规整,可以将卷积池化等神经网络运算迁移到三维 
缺点:体素表达的数据量大(计算量很大 例如256x256x256 = 16777216),一般会减小分辨率(引入量化误差/局限性 例如64x64x64)
基于Tree的结构化点云:
使用tree来结构化点云 对稀疏点云进行高效地组织 再套用成熟的神经网络进行处理 ,常用的有八叉树、k-d tree 
优点:与体素相比是更高效的点云结构化方法 (该粗的粗该细的细) 
缺点:仍然需要额外步骤对数据进行处理(类似体素化) 所以在端到端处理方面存在劣势
基于点的方法:直接对点云进行处理,有以下几个问题要解决。使用对称函数解决点的无序性,使用空间变换解决旋转/平移性。
    无序性:点云本质上是一堆点(nx3矩阵,其中n是点数) 点的顺序不影响它在空间中对整体形状的表示(相同的点云可以由两个完全不同的矩阵表示) 。希望不同的点云顺序可以得到相同的特征提取结果,可以用对称函数g (例如maxpooling或sumpooling)。
    旋转/平移性: 相同的点云在空间中经过一定的刚性变化(旋转或平移)坐标发生变化,希望不论点云在怎样的坐标系下呈现网络都能正确的识别出,  可以通过STN(spacial transform network)解决。
PointNet
maxpooling作为对称函数解决无序性问题:每个点云分别提取特征之后,maxpooling可以对点云的整体提取出global feature
空间变换网络解决旋转问题:三维的STN可以通过点云本身的位姿信息学习(loss调整)到一个最有利于网络进行分类或分割的变换矩阵,将点云变换到合适的视角(例如 俯视图看车 正视图看人)
两次STN,第一次input transform 可以理解为将原始点云旋转出一个更有利于分类或分割的视角,第二次feature transform是在特征层面对点云进行变换。
PointNet++
PointNet:单个点云特征 -> 全局特征,中间缺少局部信息(相当于用很大的卷积核/pooling只做了一层卷积/pooling  感受野一下就变最大) 单个PointNet操作可以看做一种特殊的卷积操作
PointNet++:单个点云特征 -> 局部点云特征 -> 更大局部点云特征-> ... ->全局信息。PointNet的分层版本(相当于多次卷积 感受野逐渐变大)
set abstraction的步骤:
    采样:选取一些比较重要的点作为每一个局部区域的中心点 
    分组:在这些中心点的周围选取k个近邻点(欧式距离给定半径内) 
    PointNet: 使用PointNet提取局部特征(一次PointNet相当于一次卷积,故而称作PointNet卷积), 点云子集的特征 
    结果输出到下一个set abstraction重复这个过程
解决点云密度不均匀问题: 激光扫描时会出现采样密度不均的问题,所以通过固定范围选取的固定个数的近邻点是不合适的。PointNet++提出了两个解决方案:
    多尺度分组:在每一个分组层都通过多个尺度来确定每一个中心点的邻域范围,并经过PointNet提取特征后将多个特征拼接起来,得到一个多尺度融合的新特征 
    多分辨率分组:多分辨率分组法是考虑多种分辨率的融合。左边特征向量是通过一个set abstraction得到的(多次PointNet卷积),右边特征向量是直接对当前patch中所有点进行Pointnet卷积得到。并且当点云密度不均时可以通过判断当前patch的密度对左右两个特征向量给予不同权重,以此达到减少计算量的同时解决密度问题
PointCNN
PointNet:点云分别提取特征(顺序无关) -> 对称函数解决顺序问题(maxpooling)   “处处小心顺序问题”
PointCNN:点云领域提取特征(顺序相关) -> 用X变换解决顺序问题  “前期放开干/后期统一变”
X-Conv算子主要思想就是针对输入来说,以核K,中心p,领域点P,领域的特征F为输入,得到一个K×K的矩阵,这个矩阵就是X变换,它可以保证点云的无序性,然后再通过卷积核K对其进行卷积。最后得到的特征Fp来代表p点的特征,相当于一个映射。
Frustum PointNet
提取视锥体:RGB提取2D box (ROI) 2D box -> 3D视锥体(使用相机投影矩阵)
分割:对成视锥体内点云分割得到物体实例分割(3d mask  类似Mask-RCN在ROI内做二分类)
Point RCNN
3D RRN from raw point(使用PointNet++提取特征)
Refining 3D proposals
体素方法小结, 解决顺序问题(结构问题):
Pixel-Based: 2D-grid 
Voxel-Based: 3D-grid 
Tree-Based: Tree struct 
Point-Based: 对称函数 / X变换
Volex Net
基本思想:在3D网格单元上使用Pointnet学习的特征,而不使用手工制作的网格特征(例如 h_max等)。 
整体框架: 
输入:仅使用激光雷达数据 
特征学习网络 
卷积中间层网络 
区域提取网络(RPN) 
优缺点: 准确度很高, 但在TitanX GPU上只有4fps的低速度
其中特征学习网络:
    体素分块(Voxel Partition)输入点云(D,H,W) 体素的深高宽为(vD,vH,vW)  voxel grid 
    点云分组(Grouping)将点云按照上一步分出来的体素格进行分组 
    随机采样(Random Sampling)每一个体素格随机采样固定数目的点T  因为a) 网格单元内点云数量不均衡 b) 且64线一次扫描点云数量巨大(10w)全部处理需要消耗很多cpu和内存
类似PointNet中的 分层多次卷积 -> 小邻域变大邻域,每个卷积中间层ConvMD:3维卷积+BN层+非线性层(ReLU)。
区域提取网络(RPN)
三个全卷积层块(Block)每次尺度减半 
每一个块的输出都上采样到相同尺寸进行串联得到高分辨率特征图 
输出: Probability Score Map (二分类 例如是否为车)  [None, 200/100, 176/120, 2] 和Regression Map(位置修正)  [None, 200/100, 176/120, 14]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【肺炎分类数据集】数据量非常充足的新冠肺炎分类数据共享

一、肺炎数据集介绍🍉: 1.1 格式🎈 按照标准的格式分为了①训练集train(134138575198张),②验证集val(8816张),③测试集test(234390624张)&#…

Windows server上用nginx部署vue3项目

Windows server上用nginx部署vue3项目 一、Node中node_modules文件夹及package.json文件的作用说明二、VUE3项目打包三、Windows Server上的Nginx部署 一、Node中node_modules文件夹及package.json文件的作用说明 node_modules是安装node后用来存放用包管理工具下载安装的包的…

【项目 计网3】Socket介绍 4.9字节序 4.10字节序转换函数

文章目录 4.8 Socket介绍4.9字节序简介字节序举例 4.10字节序转换函数 4.8 Socket介绍 所谓 socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进…

VUE之JWT前后端分离认证,学生管理系统

参考资料: SpringBoot搭建教程 SpringCloud搭建教程 JWT视频教程 JWT官网 Vue视频教程 JWT视频参考资料、VUE视频资料,及前后端demo 特别有参考价值的JWT博客1 特别有参考价值的JWT博客2 cookie、localstorage和sessionStorage的区别1 cookie、localstorage和sessi…

总结七大排序!

排序总览 外部排序:依赖硬盘(外部存储器)进行的排序。对于数据集合的要求特别高,只能在特定场合下使用(比如一个省的高考成绩排序)。包括桶排序,基数排序,计数排序,都是o…

【数据库】将excel数据导入mysql数据库

环境:Windows10 mysql8以上 将你要导入的excel表另存为txt格式 打开txt格式文件,删除表头行并另存为并更改编码方式(由于与数据库的编码不同,会导致导入报错) 通过命令行登录数据库 winr cmd进入 进入装mysql的目录位…

软件设计原则

文章目录 一、软件设计原则1. 开闭原则2. 里氏代换原则3. 依赖倒转原则4. 接口隔离原则5. 迪米特法则6. 合成复用原则 一、软件设计原则 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据软件…

【ASP.NET MVC】使用动软(四)(12)

一、筛选器类和Cookie实现路由 需解决的问题: 网站登录往往需要用户名密码验证,为避免重复验证,一般采用Cookie 、Session等技术来保持用户的登录状态: Session是在服务端保存的一个数据结构,用来跟踪用户的状态&…

Last-Mile Embodied Visual Navigation 论文阅读

论文阅读 题目:Last-Mile Embodied Visual Navigation 作者:JustinWasserman, Karmesh Yadav 来源:CoRL 时间:2023 代码地址:https://jbwasse2.github.io/portfolio/SLING Abstract 现实的长期任务(例如…

antv/l7地图,鼠标滚动,页面正常滑动-- 我们忽略的deltaY

背景 在官网项目中,需要使用一个地图,展示产品的分布区域及数量。希望的交互是,鼠标放上标点,tooltip展示地点和数量等信息。鼠标滚动,则页面随着滚动。但是鼠标事件是被地图代理了的,鼠标滚动意味着地图的…

4,链表【p5】

链表 4.1哈希表简介4.2有序表简介4.3链表4.3.1例1-反转单向和双向链表4.3.2例2-打印两个有序链表的公共部分4.3.3面试时链表解题的方法论4.3.4例3-判断一个链表是否为回文结构4.3.4.1快慢指针 4.3.5例4-将单向链表按某值划分成左边小、中间相等、右边大的形式4.3.6例5-复制好友…

RabbitMQ - 简单案例

目录 0.引用 1.Hello world 2.轮训分发消息 2.1 抽取工具类 2.2 启动两个工作线程接受消息 2.4 结果展示 3.消息应答 3.1 自动应答 3.2 手动消息应答的方法 3.3 消息自动重新入队 3.4 消息手动应答代码 4.RabbitMQ 持久化 4.1 队列如何实现持久化 4.2 消息实现持久化 5.不…

DBSCAN聚类

一、概述 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,簇集的划定完全由样本的聚集程度决定。聚集程度不足以构成簇落的那些样本视为噪声点,因此DBSCAN聚类的方式也可以用于异常点的检测。 二、算法…

【音视频SDK测评】线上K歌软件开发技术选型

摘要 在线K歌软件的开发有许多技术难点,需考虑到音频录制和处理、实时音频传输和同步、音频压缩和解压缩、设备兼容性问题等技术难点外,此外,开发者还应关注音乐版权问题,确保开发的应用合规合法。 前言 前面写了几期关于直播 …

SpringBoot+SSM实战<一>:打造高效便捷的企业级Java外卖订购系统

文章目录 项目简介项目架构功能模块管理端用户端 技术选型用户层网关层应用层数据层工具 项目优缺点结语 黑马程序员最新Java项目实战《苍穹外卖》:让你轻松掌握SpringBootSSM的企业级开发技巧项目简介 《苍穹外卖》是一款为餐饮企业(餐厅、饭店&#x…

leetcode 1290.二进制链表转整数

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;二进制链表转整数 ps&#xff1a; 1 0 1 (0 << 1) 1 0 1 1 (1 << 1) 0 2 0 2 (2 << 1) 1 4 1 5代码&#xff1a; int getDecimalValue(struct ListNode* head) {int ans 0;while(head !…

滇医通微信小程序分析笔记

注意 本文章仅供学习交流使用&#xff0c;如果你是铁粉你就会知道博主之前发布过一篇相关的文章&#xff0c;但是由于代码涉及到法律相关所以就隐藏了&#xff0c;两年的时间过去了&#xff0c;因为女朋友已经早早安排上了&#xff0c;所以就搁置了&#xff0c;本次不做代码分…

视频监控汇聚平台EasyCVR视频分享页面WebRTC流地址播放不了是什么原因?

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

微信小程序nodejs+vue+uniapp个人家庭理财系统--论文

随着Internet的发展&#xff0c;人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化&#xff0c;网络化和电子化。网上管理&#xff0c;它将是直接管理家庭理财系统app的最新形式。本论文是以构建家庭理财系统app为目标&#xff0c;使用nodejs技术制作&…

macOS下Django环境搭建

1. macOS升级pip /Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip 2. 卸载Python3.9.5版本 $ sudo rm -rf /usr/local/bin/python3 $ sudo rm -rf /usr/local/bin/pip3 $ sudo rm -rf /Library/Frameworks/Python.framework 3. 安装P…
最新文章