【3D目标检测】SECOND: Sparsely Embedded Convolutional Detection

news2024/11/18 5:59:58

目录

  • 概述
  • 细节
    • 网络结构
    • 稀疏卷积
    • 方向分类
    • 损失函数

概述

首先,本文是基于点云,并且将点云处理成体素的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个坐标)以及车的方向分类损失。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

第二节:数据类型与变量【java】

目录 📃前言 📗1.数据类型 📕2. 变量 2.1 变量概念 2.2 语法格式 📙3.整型变量 3.1 整型变量 3.2 长整型变量 3.3 短整型变量 3.4 字节型变量 📘4.浮点型变量 4.1 双精度浮点型 4.2 单精度浮点型 &#…

[SpringBoot] AOP-AspectJ 切面技术

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

python的编译器与解释器

作者介绍: 🐥作者:小刘在C站 👆每天分享课堂笔记,一起努力,共赴美好人生 🍁夕阳下,是最美的绽放 目录 一.为什么会有编译器和解释器 二.编译器和解释器的区别 三.python解释器种类…

RK3399应用开发 | 移植libdrm到rk3399开发板(2.4.113)

一、下载源码 下载地址:https://dri.freedesktop.org/libdrm/。 这里我下载最新的2.4.113版本: wget https://dri.freedesktop.org/libdrm/libdrm-2.4.113.tar.xz解压: xz -d libdrm-2.4.113.tar.xz tar -xf libdrm-2.4.113.tar二、编译环境安装 1. 更新python ubuntu安…

CalBioreagents 艾美捷重组BCOADC-E2蛋白说明书

艾美捷CalBioreagents 重组BCOADC-E2蛋白英文说明: PRODUCT DESCRIPTION: Branched Chain 2-Oxo-Acid Dehydrogenase Complex E2 protein, recombinant. CLINICAL INDICATION: Primary biliary cirrhosis CATALOG NUMBER: A268 SOURCE: Recombinant protein ex…

《CTF攻防世界web题》之茶壶我爱你(2)

前言 🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 🍁个人主页:被吉师散养的职业混子 🫒文章目的:记录唯几我能做上的题 🍂相应专栏:CT…

Pytorch调用GPU时显示CUDA版本过低的解决方案

在调用torch.cuda.is_available时,有如下报错: cuda initialization: The Nvidia driver on your system is too old. 事情的发展是这样的: 1. 服务器的CUDA版本是10.1,仅支持pytorch版本最高1.7;前几天跑项目需要用…

Oracle 中常用的字符串函数总结

一、substr 函数 —— 字符串截取 格式1: substr(string,start_pos,length) 格式2: substr(string,start_pos) 说明: 从指定位置start_pos截取字符串string的length位,如果不指定length(格式2)则从指…

【数据挖掘】2022数据挖掘之Pandas库相关使用

数据挖掘之Pandas库相关使用一、概念1、介绍2、Pandas的优点3、软件推荐(Jupyter Notebook)4、软件下载网址以及参考文档二、基础知识1、DataFrame属性和方法1.1 结构(1)行索引(2)列索引1.2 常用属性&#…

配置非法AP设备检测和反制

1、业务需求 某企业分支机构为了保证工作人员可以随时随地访问公司网络资源,部署WLAN基本业务实现移动办公。且在覆盖区域内移动发生漫游时,不影响用户的业务使用。 分支机构位于开放式场所,容易受到网络入侵,例如攻击者在WLAN网络…

摒弃“短板”——数据中心基础设施运维管理建议书

数据中心是数字基础设施的重要组成部分,同时也是一整套复杂的设施。它不仅仅包括计算机系统和其它与之配套的设备(例如通信和存储系统),还包含冗余的数据通信连接、环境控制系统、监控系统以及各种安全系统。运维管理又是数据中心…

基于智能优化算法实现自动泊车的路径动态规划(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 作为一种方便、快捷的交通工具,汽车已成为人们生活和工作的重要组成部分。随着汽车数量的逐年增加,有限…

在ubuntu上用QT写一个简单的C++小游戏(附源码)

最近老师让用Qt写一个可视化界面,然后就给了一个小视频,好奇的不得了,就照着做了一下 视频链接如下:C案例教学–一个类游戏小程序的设计与实现全过程–用到QT-简单的STL容器 创建项目 1、打开QT 如果不知道怎么下载的话&#xff…

【牛客网刷题】VL8-VL10 generate for语句、比较数大小、function的使用

👉 写在前面 👉 本系列博客记录牛客网刷题记录 👉 日拱一卒,功不唐捐! 目录 VL8 使用generate for语句简化代码 题目描述 输入描述 输出描述 RTL 设计 testbench 设计 仿真测试 VL9 使用子模块实现三输入数的大…

【C++ 程序设计入门基础】- Chapter One

目录 一、什么是 C? 1、概念 2、标准库 二、第一个 C 程序 1、下载 C 开发工具 2、开始下载好之后,我们先设置一下编码,解决中文注释不显示的问题。 3、下面我们就可以新建一个源代码 4、 编写完成后,我们就可以运行查看结果…

MyBatis:缓存机制详解

本篇内容包括:MyBatis 缓存机制概述、一级缓存与二级缓存的介绍、配置和具体流程。 一、MyBatis 缓存机制概述 在我们常见的 OLTP(on-line transaction processing,联机事务处理)类型的 Web 应用中,性能的瓶颈往往来源…

【Transformer 相关理论深入理解】注意力机制、自注意力机制、多头注意力机制、位置编码

目录前言一、注意力机制:Attention二、自注意力机制:Self-Attention三、多头注意力机制:Multi-Head Self-Attention四、位置编码:Positional EncodingReference前言 最近在学DETR,看源码的时候,发现自己对…

【码上掘金编程挑战赛】- 前端可冲【简历加分项】

【码上掘金编程挑战赛】1.比赛报名2. 比赛介绍赛题一:码上游戏赛题二:码上创意赛题三:码上文言文赛题四:码上10243.报名4.提交作品1.比赛报名 比赛报名链接 https://juejin.cn/challenge/1?utm_source3169 2. 比赛介绍 赛题一…

Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】

Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码讲解 【上篇】 Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码讲解 【下篇】 以上两篇采用的是注解开发形式xml配置…

自己动手写操作系统系列第3篇,实现时钟和键盘中断

对应labOS版本1.3 程序源码可以私聊我 picirq.h int 0x20~0x2f接收中断信号IRQ0~15,因为int 0x00~0x1f不能用于IRQ。 picirq.c pic0_mask0xfb即1111 1011;PIC1以外全部禁止。pic1_mask0xff即1111 1111;禁止所有中断 pic_enable函数就是将…