IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【3D目标检测】SECOND: Sparsely Embedded Convolutional Detection -> 正文阅读

[人工智能]【3D目标检测】SECOND: Sparsely Embedded Convolutional Detection

概述

首先,本文是基于点云,并且将点云处理成体素的3D目标检测网络,提出的SECOND可以看做是VoxelNet的升级版。
提出动机与贡献

  1. VoxelNet计算量比较大,速度比较慢(训练和推理),作者引入稀疏卷积代替朴素的3D卷积
  2. VoxelNet编码偏航角的方法是直接预测,但直接预测会导致一个问题,也就是当预测bbox的偏航角与gt box的偏航角差异为 ± π \pm \pi ±π的时候,损失会比较大,但是这个bbox其实与真实的边界框已经很相似了。因为作者对于偏航角使用了一个新的损失函数,并且设计了一个方向分类器。
  3. 提出了一种新的数据增广方式

细节

网络结构

第一张图是本文的网络结构,第二张图是VoxelNet的网络结构。我们对比一下可以发现,SECOND是VoxelNet的升级版,大体上是一样的,只是SECOND将中间卷积层的3D卷积操作换成了稀疏卷积操作,并且最终的输出多了一个方向分类的结果。
在这里插入图片描述
在这里插入图片描述

稀疏卷积

首先推荐一篇讲的超级好的笔记:通俗易懂的解释Sparse Convolution过程

目标:对稀疏的输入数据尽可能高效的进行卷积操作,所以只对有用的元素做卷积,而不是滑动窗口遍历所有可能。

概述:如果把稀疏卷积当成黑盒的话,它的输入输出和标准卷积是一致的(形状一致,子流形稀疏卷积输出值不一致,但原始稀疏卷积输出值是一致的)。

两种稀疏卷积:一种是现在常用的子流形稀疏卷积(3D Semantic Segmentation with Submanifold Sparse Convolutional Networks中提出的),只有卷积核的中心覆盖有用元素的时候才得到对应的输出;另一种是原始稀疏卷积(Spatially-sparse convolutional neural networks),就像普通的卷积一样,只要卷积核覆盖(卷积核中任意元素)一个有用元素,就计算输出。PS:子流形稀疏卷积出现的背景是作者发现,原始稀疏卷积会使得数据的稀疏性指数下降,从而提出了一种保持数据的稀疏性的方法。但是如果只用子流形稀疏卷积,卷积核的感受野会限制在一定范围内,所以本文作者将两者混合在一起用了。

稀疏卷积思想:

  1. 将输入的稀疏数据中的有效元素的位置用hash表存起来,根据对有用元素卷积的规则得到有用元素对应的输出数据位置,将这个位置也使用hash表存起来。(PS:上述的两种稀疏卷积的最大差别就是这个有用元素卷积的规则,即哪种情况下才能得到输出,原始稀疏卷积的规则和标准卷积一样,而子流形稀疏卷积的规则就会严格一点)
  2. 构建 Rulebook,也就是将有用元素和卷积核中哪个位置的元素相乘再相加得到对应的输出(算法是对每个有用元素单独考虑的,所以就相当于除了当前有用元素,其他位置就是0)这一个过程形式化地表示出来,主要包含输入hash表中的key,输出hash表中的key以及对应的卷积核元素位置。迭代上面的步骤,我们就将卷积的操作表示在了Rulebook中。
  3. 根据Rulebook得到计算结果,并将结果放到对应的位置,得到正确的稀疏输出。

接着看一下SECOND的3D特征提取网络:白色的子流形稀疏卷积+黄色的原始稀疏卷积+红色的结果处理层(将稀疏张量转换成密集张量,应该和VoxelNet一样,将特征维度C和深度维度D合并,得到鸟瞰图)
在这里插入图片描述

方向分类

首先是一个背景,也就是VoxelNet中,当预测bbox的偏航角与gt box的偏航角差值为 π \pi π的时候,损失会比较大,但是这个bbox其实与真实的边界框已经很相似了。因此作者为偏航角设计了一个新的损失函数 L θ = S m o o t h L 1 ( s i n ( θ p ? θ t ) ) L_{\theta}=SmoothL1(sin(\theta_p-\theta_t)) Lθ?=SmoothL1(sin(θp??θt?)),其中 θ p \theta_p θp?是预测的偏航角 θ t \theta_t θt?是真实的偏航角。对比原来的公式 L θ = S m o o t h L 1 ( θ p ? θ t ) L_{\theta}=SmoothL1(\theta_p-\theta_t) Lθ?=SmoothL1(θp??θt?),我们可以发现其实就是给角度的差包了一层sin函数,要是这个差值是 ± π \pm \pi ±π的时候,这部分的损失是0。

那么问题就来了,这样做的话,模型是能够得到很好的训练了,但是不符合真实场景呀。一种可能的结果是,前面的车子向你冲来了,你却以为人家在倒车(方向判断错了)。作者给出的一个弥补方案就是模型同时做一个方向分类,也就是,判断目标是正向的还是逆向的,这是一个简单的二分类。

损失函数

损失主要是三部分:bbox的分类损失、7个参数的回归损失(偏航角和6个坐标)以及车的方向分类损失。
在这里插入图片描述
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:56:46  更:2022-10-31 11:59:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 5:26:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码