点云上的深度学习及其在三维场景理解中的应用————3D Scene Understanding with PointNet and PointNet++(三)

2023-05-16

最近在学3D方向的语义分析。

师兄推荐了一个哔哩大学的将门创投 | 斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用!的宝藏视频,我会多看几遍,并写下每次观看笔记。up主的个人网页:http://stanford.edu/~rqi
具体代码实现可参照:PointNet++代码的实现
下文的截图都源自讲解的PPT,在我的资源:祁芮中台点云讲解.pdf

全篇手码,内容较多会持续更新。
带问号的句子都是乘上引下的重点作用,文章分为三篇,这是第三篇,请耐心食用。

--------------------------------------------------------------------------------------------------

正文继续

前两篇介绍了PointNet++(PointNet)的网络结构以及其背后的原理,本篇为三维场景理解中的应用,主要讲解如何做三维目标检测(3D Object Detection),三维场景流(3D Scene Flow)暂不讨论。

如何做3D物体识别?如何用上PointNet和PointNet++?

在这里插入图片描述
我们的目标是得到物体的3D bounding(3D物体框)。
下图为在图片中的表达。
在这里插入图片描述
下图为在点云中可视化的例子。
在这里插入图片描述
(Previous Work)之前传统的工作是怎么处理三维物体识别的呢?
很多是基于下图这个思路,先在三维空间中做region proposal(区域提案),可能是基于点云投影到图片上,在图片中propose三维的bounding box,也可能是基于三维的CNN来做。propose完以后在把2D和3D的features结合到proposal中做一个分类。
这么做的缺点是三维空间的搜索非常大,计算量很大,3D的proposal因为点云的分辨率有限,很多时候很难发现小的物体。
在这里插入图片描述
另一种方法是基于图片,用RGB的图片来估计3D的bounding box,依赖一些物体大小的鲜艳知识,这时候很难精确估计物体深度和位置。另外depth image对领域的定义有局限,比如两个点可能距离很远,但投影后距离非常近。
所以在图片的表达的形势下,用2D的CNN还是有很多局限性,很难精确估计物体的深度和大小。
在这里插入图片描述
介绍一下本文做三维物体识别的思路,如何用上PointNet和PointNet++
结合2D和3D的优点,针对RGB-D的input,先在RGB的图片上用一个2D detectors得到一个二维的物体区域。比如图片中的车先得到一个红色的方框,得到二维的区域之后,大部分任务我们知道camera intreseace,那么由二维区域生成到一个三维的视锥区域(2D region (from CNN) to 3D frustum),右边红色的锥状体表示。接下来对物体的搜索就可以在这是视锥内搜索,而且可以转化为在三维点云中搜索的问题。
这么做的优点在于:

  1. 利用2D的detector来缩小搜索的范围,从全图缩小到视锥,减少计算量和复杂度。
  2. 因为视锥内可以直接在点云上操作,我们可以利用点云的精确性,以及我们点云3D深度学习的工具,比如PointNet,直接分析和处理点云数据得到精确的3D bounding box。

在这里插入图片描述
框架起名叫Frustum-based 3D Object Detection(基于视锥的三维物体识别),这个识别有两个挑战,一个是下图中一个人在打电话,我们发现点云中有很多前景的遮挡(Foreground occluder)和后边干扰(Background Clutter)的出现。传统的方法很难应对这种情况。
在这里插入图片描述
如何解决上述有遮挡的问题呢?
我们的 方法是使用 PointNet解决这个问题,是一种基于3D点云数据的方法,大概的算法框架如下图。分三步:

  1. 先在2D的图片上得到一个2D detection的结果,然后我们根据camera
    intreseace可以把一个2D的box换到一个3D的区域对应一个视锥的范围,这个过程为Frustum Proposal(视锥方案)。

  2. 可以直接在视锥的点云里找这个3D的box,但因为有很多前景和后景的干扰,我们希望先把关键的点拿出来,而不受干扰的影响。我们做一个3D的物体分割的网络,也是由PointNet的分割网络实现。

  3. 我们把这个物体分割出来以后,再利用另外一个网络去精确的估计物体的三维bounding box,去估计他的姿态大小以及精确的3D位置。
    在这里插入图片描述
    在汽车的语义分割上,网络的优异结果如下图
    在这里插入图片描述
    在一些更小的物体上(行人、自行车)优势更大
    在这里插入图片描述
    为什么有这么优异的结果?
    因为由2D到3D,直接在3D点云上分割。
    在这里插入图片描述
    另外,可以对输入做很容易的归一化,我们基于点云做操作,对点云的归一化可以简化学习的问题。举个栗子:
    这是一个俯视图的视锥,有一辆汽车,汽车在左或右侧视锥的范围变化会非常大,x坐标的变化会非常大。
    在这里插入图片描述
    为了归一化这个问题,我们把坐标系进行旋转,这样所有的z轴都会指向视锥的中心方向。这样点在x轴的分布就会非常简化,学习的问题就会很容易。
    在这里插入图片描述进一步物体在深度上有很大区别,z有很大分布,我们基于3D物体的分割可以找到分割后物体的中心,这样物体的点会集中在原点附近,使得后面的学习问题大幅度继续简化。同时可以用另一个网络去估计这个物体真实的中心,红色的中心仅仅是物体分割的中心,物体的真实中心用另一个网络进一步估计。
    在这里插入图片描述
    最后在这个绿色的坐标系下进行最后bounding box的估计。
    在这里插入图片描述
    结果上,经过一系列的归一化操作,结果很棒,estimation accuracy飞速提升。而且这些操作很简单,只不过是一些矩阵的旋转、乘法(狗头)。
    在这里插入图片描述
    展示!
    即便右下角就半个车,也能估计出来。
    在这里插入图片描述
    室内的检测:
    在这里插入图片描述

总结

本文介绍了针对点云的网络结构pointnet,有对输入顺序的置换不变性,同时是轻量级的结构,能对数据的丢失很鲁棒,而且提供了一个统一的框架,可以为很多不同的任务服务。进而介绍了这个网络结构在很多场景中的应用,具体为3D识别的应用。还有很多场景,比如场景分割、局部特征的估计。
在这里插入图片描述
相关的文献:
在这里插入图片描述
完结完结!
--------------------------------------------------------------------------------------------------
其他两篇文章链接:
点云上的深度学习及其在三维场景理解中的应用————PointNet(一)
点云上的深度学习及其在三维场景理解中的应用————From PointNet to PointNet++(二)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

点云上的深度学习及其在三维场景理解中的应用————3D Scene Understanding with PointNet and PointNet++(三) 的相关文章

  • 无人机学习

    无人机飞行原理及控制方法 xff08 以四旋翼无人机为例 xff09 四旋翼无人机一般是由检测模块 xff0c 控制模块 xff0c 执行模块以及供电模块组成 检测模块实现对当前姿态进行量测 xff1b 执行模块则是对当前姿态进行解算 xf
  • 安装完torch geometric,import torch_geometric然后报错:OSError: [WinError 127] 找不到指定的模块

    1 出错原因 xff1a 对于import torch geometric xff0c 然后报错 xff1a OSError WinError 127 找不到指定的模块 我出错的原因是 xff1a pytorch的版本我用的是1 4 xff
  • Word中设置不同页面的页眉不一样的方法(页脚、页码同理)

    目录 1 不同部分页眉的修改 2 如何删除页眉中的横线 1 不同部分页眉的修改 在Word中设置也没的时候默认每页都是一样的 xff0c 如果我们想要不同部分的页眉内容不一样 xff0c 则需要在不同的部分之间加入分节 符 xff0c 注意
  • 【MYSQL】 三大范式 表的关系 外键 ER图

    三大范式 第一范式 xff08 每列保持原子性 xff09 每一列属性都是不可再分的属性值 xff0c 确保每一列的原子性 两列的属性相近或相似或一样 xff0c 尽量合并属性一样的列 xff0c 确保不产生冗余数据 第二范式 xff08
  • 五年嵌入式经验工作与心得

    不知不觉已经从事嵌入式行业5年了 xff0c 大学4年工作5年一直专心从事嵌入式工作 下面我谈一下我对嵌入式的看法 可能对大神们没什么用 xff0c 希望对刚入门或者即将走出校园的同学们有些帮助 嵌入式在工作中分为固件程序 xff08 fi
  • JavaScript-----详细讲解js节点以及节点操作

    x1f353 获取元素通常使用两种方式 x1f407 利用DOM提供的方法获取元素 document querySelector document getElementsByClassName document getElementsByT
  • echarts 全局换肤 echarts根据系统颜色换肤,echarts自定义icon,echarts发光效果

    官网定义颜色网址 效果 代码 span class token tag span class token tag span class token punctuation lt span template span span class t
  • 计算机网络

    计网 2022 4 6 BDY 猛猪猪语录 xff1a Hash xff01 文章目录 计网一 网络分层 xff08 OSI 和 TCP IP 网络分层模型详解 xff09 1 OSI 七层模型2 TCP IP模型3 问题 xff1a 为什
  • 基于STM32四轴飞控制作笔记

    基于STM32四轴飞控制作笔记 前言 大四选了个四轴飞控作为毕业设计的题目 xff0c 近来没事 xff0c 把之前的制作做个总结开源出来 硬件设计 1 遥控MCU模块和飞控的MCU模块都采用stm32f103c8t6单片机 xff0c 很
  • ubuntu20.04 ROS打开gazebo 世界一片灰,模型没有显示颜色

    文章目录 2023年2月10日 更新原回答配置问题描述解决方案其他 2023年2月10日 更新 Win11 43 Ubuntu20 04双系统 43 ROS noetic 影子不显示 xff0c 模型没颜色 大概率是显卡的问题 xff0c
  • STM32学习笔记:PWM互补输出(无刷直流电机驱动控制)

    需要达成的目的为CH1通道输出PWM波 xff0c CH1N通道输出高电平等 最新方法已在新博客贴出 xff0c 更为简便 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6
  • Postman如何设置成中文?(汉化)

    一 汉化补丁下载安装 点击下方这个链接 xff0c 进入gitee xff0c 在里面下载一个插件 我在写这篇文章的时候 xff0c 补丁包的最新版本号为 9 12 2 xff1a 下载 Postman 汉化补丁包 汉化补丁下载链接 xff
  • 记录:在ubuntu中以C语言实现json文件读取遇到的问题(1)(说不定会有2)

    4 12 记录在ubuntu中以C语言实现json文件读取遇到的问题 xff08 1 xff09 xff08 说不定会有2 xff09 暂记录遇到的问题及解决 xff0c 其中还有些原因没有搞明白 xff09 1 首先过程参考自一位大佬的博
  • 标量/向量/矩阵求导方法

    这篇博客源于在看论文时遇到了一个误差向量欧氏距离的求导 xff0c 如下 xff1a 在看了一堆资料后得出以下结论 xff1a 这个结论是怎么来的呢 xff1f 这就涉及标量 向量 矩阵的求导了 由于标量 向量都可以看做特殊的矩阵 xff0
  • 自学笔记:单片机蜂鸣器(包含程序)

    蜂鸣器的工作原理 xff08 搬运 xff09 蜂鸣器主要分为压电式蜂鸣器 无源蜂鸣器 和电磁式蜂鸣器 xff08 有源蜂鸣器 xff09 两种类型 压电式蜂鸣器 主要由多谐振荡器 压电蜂鸣片 阻抗匹配器及共鸣箱 外壳 等组成 多谐振荡器由
  • Invalid bound statement (not found):常见报错原因解决

    问题场景 xff1a 在SpringMVC项目中 xff0c 通过mapper接口加载映射文件 xff0c 完成数据库的操作 问题描述 报错 xff1a Invalid bound statement not found 原因分析 xff1
  • 记录一次策略模式优化代码案例

    策略模式优化案例 优化之前 优化之后 把原来的switch case 用接口方式实现 bean 注入采用map方式 key为 实现类的名称 xff0c value为实现类的bean xff0c 在所有bean注入之后执行init 方法 xf
  • 树莓派无屏幕连接

    无屏幕通过VNC显示树莓派远程桌面 我自己本来是有一个7寸屏幕的 xff0c 但是因为机器人那边需要看IP地址 xff0c 我就把屏幕装在机器上上面了 xff0c 只能vnc连接了 刷好系统的时候 xff0c 现在版本的树莓派是默认没有ss
  • SMPL论文解读和相关基础知识介绍

    SMPL论文解读和相关基础知识介绍 本文首发于微信公众号 视觉三维重建 欢迎大家关注公众号 和你分享计算机视觉算法工程师工作的点点滴滴 文章目录 SMPL论文解读和相关基础知识介绍 1 动画制作专业术语 2 SMPL 2 1 简介 2 2
  • 学术论文阅读方法

    文章目录 学术论文阅读过程大量阅读学术论文方法 xff1a 目的 xff1a 复现优秀论文提出创新点整理成文 看不懂怎么办幻灯博客视频课程代码 More研究生生活工作业务要求英语老师建议 近期基本完成机器学习和深度学习的学习 xff0c 开

随机推荐

  • 微信小程序未读消息右上角红点数字显示

    从weui中获得灵感 xff0c 稍微改造 xff0c 效果还不错 在消息数量为1 99时正常显示即可 xff0c 而大于99时显示99 43 使用wx if搞定 wxml部分 xff1a span class token tag span
  • [2022]李宏毅深度学习与机器学习第十五讲(必修)-Meta Learning

    2022 李宏毅深度学习与机器学习第十五讲 xff08 必修 xff09 Meta Learning 做笔记的目的Meta LearningML vs meta learningWhat is learnable in learning a
  • 浅谈esp8266

    esp8266 前言简单介绍esp8266esp8266的开发方式主流应用结语 前言 很早就听说了esp8266 xff0c 作为物联网上的入门级产品 xff0c 有一段时间曾在b站上掀起过一阵风潮 xff0c 什么用来获取显示b站粉丝量
  • 【无标题】

    一级标题1 QGC二次开发方法 手段 xff08 包括基本介绍 xff09 一级标题2 QGC编译过程步骤以及中遇到的问题和相应的解决办法 1 QGC二次开发方法 手段 xff08 包括基本介绍QGC和QT xff09 QGC二次开发工具
  • 实数插值方法及其 python 实现

    本文主要介绍两种常用的实数插值方法 xff1a 拉格朗日 xff08 Lagrange xff09 插值 以及 牛顿 xff08 Newton xff09 插值 及其python实现 运行效果如下 xff1a 目录 1 拉格朗日插值 2 牛
  • VS CMake 禁止警告

    cmake minimum required VERSION 3 0 project DiableWarn if WIN32 add compile options W4 add compile options wd4100 add com
  • Failed to read artifact descriptor for xxx:jar maven deploy的问题解决

    Failed to read artifact descriptor for xxx jar maven deploy的问题解决 问题描述问题分析可用方案 问题描述 我们项目使用的自定义jar包 xff0c 上传到私服仓库中 xff0c 其
  • 移动通信中的信道编码基础

    线性分组码 假设信源输出为有限域GF xff08 2 xff09 上连续的二元符号序列 xff0c 称为消息序列 在分组码中每一个消息分组含有k个信息比特 xff0c 一共有2k个不同的消息 xff0c 对应2k个不同的码字 所有码字的集合
  • 【Linux多线程服务端编程】| 【01】线程安全的对象生命期管理笔记

    文章目录 索引一 线程安全的对象生命期管理1 1 析构函数遇多线程1 2 对象销毁1 3 线程安全的observer多难1 4 原始指针有什么不好的地方1 5 shared ptr或weak ptr1 6 系统地避免指针错误1 7 应用到O
  • 计算机保研面试题总汇(网上搜集的题 自己写的答案)

    文章目录 计算机专业知识数学方向内容高数线代概率论 其他 计算机专业知识 哪些图算法中用到了动态规划的思想 xff1f Floyd算法 背包算法 TSP 进程之间的通信方式 管道Pipe 命名管道FIFO 消息队列MQ 共享存储 信号量 套
  • VSLAM框架:ORB_SLAM2采用ROS Bag获取数据

    ORB SLAM2采用ROS Bag获取数据 前言一 ROS bag数据1 ROS bag简介2 获取数据集3 查看数据集信息 二 配置文件1 配置ros文件2 配置内参文件三 启动节点1 回放ROS bag数据集2 深度相机节点 前言 之
  • for无限循环

    span class token keyword int span i span class token operator 61 span span class token number 0 span span class token pu
  • Dockerfile【超级详细】

    Dockerfile 基础知识 FROM 基础镜像 xff0c 一切从这里开始构建 MAINTAINER 镜像是谁写的 xff0c 姓名 43 邮箱 RUN 镜像构建的时候需要运行的命令 ADD 步骤 xff0c tomcat镜像 xff0
  • VDO(虚拟数据优化器)原理及配置

    1 原理 VDO xff08 Virtual Data Optimize xff09 是RHEL8 Centos8上新推出的一个存储相关技术 xff08 最早在7 5测试版中开始测试 xff09 xff0c 是Redhat收购的Permab
  • 2022爱分析·SD-WAN市场研究报告 | 爱分析报告

    报告编委 报告指导人 黄勇 爱分析 合伙人 amp 首席分析师 报告执笔人 潘天 爱分析 高级分析师 易丹 爱分析 分析师 于婉贞 爱分析 分析师 目录 1 SD WAN重构企业广域网接入市场 2 重点行业先发 xff0c SD WAN市场
  • numpy 对二维数组的常用操作

    目录 1 提取二维数组的某几列或某几行 2 获取某个范围的数据 3 所有元素求和 4 计算数组中非零元素的个数 5 使用布尔型掩码提取某些行或某些列 6 获取数组的行数或列数 7 获取最后一列 xff08 或行 xff09 的元素 8 获取
  • 群起集群 DataNode 没有启动的解决方法

    错误 启动服务 xff0c 发现没有DataNode没有启动 此原因是namenode和datanode的clusterID不一致导致datanode无法启动 产生的原因 是多次hdfs namenode format而造成的 每一次格式化
  • ajax实现图片的回显功能

    前端页面 给文件上传域绑定一个改变事件 lt tr gt lt td class 61 34 three 34 gt 图片介绍 lt td gt lt td gt lt br gt lt div id 61 34 imgDiv 34 sty
  • 为ESP8266编译时出错

    图 1 当出现图1的问题时 xff0c 是因为我们的文件扩展名为 c 实测当我们将文件扩展名改为 cpp的时候就能如图二一样正常编译 图2 由于C 43 43 是全面兼容C的 xff0c 即使我们之前使用的是C语言 xff0c 在更改文件后
  • 点云上的深度学习及其在三维场景理解中的应用————3D Scene Understanding with PointNet and PointNet++(三)

    最近在学3D方向的语义分析 师兄推荐了一个哔哩大学的将门创投 斯坦福大学在读博士生祁芮中台 xff1a 点云上的深度学习及其在三维场景理解中的应用 xff01 的宝藏视频 xff0c 我会多看几遍 xff0c 并写下每次观看笔记 up主的个