Generative Sparse Detection Networks for 3D Single-shot Object Detection稀疏检测网络(GSDN)
Generative Sparse Detection Networks for 3D Single-shot Object Detection
稀疏检测网络(GSDN),这是一种完全卷积的单帧稀疏检测网络,可以有效地生成对对象提议的支持。模型重要组成部分事一个稀疏的张量编码器,使用了转置卷积以及修剪层,丢弃了概率小的对象中心,以减小运行的时间和占用的内存。
Introduction
检测三维物体时遇到两个问题:
- 三维数据需要进行处理和保存较之二维数据更加复杂
- 三维数据是十分稀疏的,采样都来源于物体的表面
提出按层次稀疏张量编码器来解决三次复杂度,采用稀疏张量网络对大场景进行全卷积的有效处理。
边界框的锚点即扫描物体的中心点,但是在扫描过程中智能获得物体的表面无法获得中心点,这使得bounding box的坐标无法定位。
提出生成式稀疏张量解码器,重复的对输入的支持进行上采样 ,丢弃不太可能的中心点,保证较小的运行时间和内存占用。如下图:
GSDN由两部分组成:1. 分层式稀疏张量编码器 2. 生成式稀疏张量编码器
Preliminaries
在本文中,我们将使用小写字母表示可变标量,t;大写字母表示常数,N;小写粗体字母表示向量,v;大写粗体字母表示矩阵,R;稀疏张量,T;表示集合的符号,C
3.1Sparse Tensor
一个d阶稀疏张量,是一个d维的数组,其中大部分元素都为0,可以将稀疏矩阵表示为一组非零坐标C = supp(T),返回令T!=0的坐标,对应的是特征F,返回令T!=0的特征向量。
xid表示的是第d轴的第i个非零元素,fi表示的是第i个非零元素的特征。
这些非零元素的信息即等价于稀疏张量T对于C集合的特征向量F
Generative Sparse Detection Networks
网络主要由两部分组成:一个分层式稀疏张量编码器和一个生成式稀疏张量解码器。
网络的第一部分生成稀疏张量特征映射,能够有效的捕捉到目标的几何特征和特性。
第二部分则根据第一部分生成的特征映射提出支撑。
稀疏张量首先结果一系列卷积池化后,通过几个残差块处理,生成分层的稀疏张量特征,在第二阶段通过使用转置卷积和剪枝对稀疏张量特征映射进行上采样。
Hierarchical Sparse Tensor Encoder
使用ResNet作为backbone,可以被其他backbone替换
首先,网络以高分辨率的稀疏张量T0作为输入,通过一系列下采样和残差块生成T1特征映射,编码器可以被描述为:
将所有层级的特征向量Tl(l∈[1,.....,L])缓存下来,送入稀疏张量解码器。
Generative Sparse Tensor Decoder
网络的后半部分扩展了对分层稀释张量特征映射Tl的支持,以覆盖对bounging box锚点的支持。这个过程类似于一个转置卷积,但是生成的体素不一定包含了bounding box的锚点,通过剪枝的方法将这些多余的体素删除,减少内存和计算成本的消耗。这个过程叫做稀疏剪枝。在稀疏剪枝之后使用转置卷积来提高空间的分辨率。
Transposed Convolution and Sparsity Pruning
使用大小大于2的卷积核进行转置卷积,不仅是上采样,同时拓展了稀疏卷积的张量支持。
在数学形态上,在3d稀疏向量T与supp(T) = C 的转置卷积可以被定义为:
其中
N (x, y, z) = {(i, j, k)||x−i| ≤ K, |y−j| ≤ K, |z−k| <K,(i, j, k) ∈ C}
W是3d卷积和的权重,2K+1是卷积核的大小
转置卷积将稀疏点扩大为一个任意大的密集区域,并且多个区域是可以互相重叠的。如下图:
通过转置卷积将低分辨率的稀疏张量上采样为高分辨率,然后通过稀疏预测Ps剪枝掉一些生成的坐标。
在转置卷积之后,生成的坐标不一定包含了bonding box的锚点,因此引入了一个函数Ps返回每个体素给定特征的概率,将概率Ps小于阈值 τ的体素删除, τ作为稀疏剪枝的信任阈值。
Skip Connection and Sparse Tensor Addition
通过上采样能让神经网络看到更多的信息,但也丢失了很多的分辨率,为了恢复输入的细节,我们跳过了缓存特征映射和编码器之间的连接。
Multi-scale Bounding Box Anchor Prediction
在剪枝后每个体素都可能包含bounding box anchors,预测对每个稀疏张量进行预测。具体的说,就是对于每k个锚定盒,网络预测出一个目标锚定似然得分,6个关于锚定盒的偏执以及c个语义分类得分,每个体素共有(c+7)*k个输出。
对于锚定框,我们使用了不同的长宽高比:
总的来说,我们令k=13,
但仅靠这些变化量不足以覆盖所有的3d目标,因此在每一层构建锚,使前一层的锚的大小增加一倍。
Summary of GSDN Feed Forward
生成稀疏检测网络的前馈过程:
第三行:从先前的特征映射生成了L个级别的分级特征映射。
第四行:通过转置卷积进行上采样
第七行:将上采样的稀疏张量特征加到编码器中对于的稀疏张量特征映射中
第八行至第十二行:在生成阶段提取锚点以及相关的bounding box的信息,预测稀疏性并删除可能性低于阈值的体素,后进行转置卷积。
Losses
生成式稀释检测网络需要预测四个输出:稀疏性预测、描点预测、语义类、bounding box回归
稀疏性和锚点预测式二分类问题,但是大多数的体素是不包含锚点的,因此提出平衡交叉熵损失:
P和N分别是带有正例和反例标签的索引的集合。
IoU大于0.35的锚点定义为正例,小于0.2的定义为反例。
因为稀疏性预测需要包含后续级别的所有锚点,因此若与当前体素相关的所有锚点都是正例,我们定义这个稀疏性为正。在IoU∈(0.2,3.5)之间的锚点,我们不强制其施加损失。
对于正锚点,我们用标准交叉熵训练最高IoU最大的锚点的语义类预测Lcalss。
使用Huber loss计算bounding box的中心以及参数化的大小回归关于不同中心点位置的锚点的大小的损失Lreg
总的损失为:
其中:
Experiment
实验结果图:
P-R曲线:
不同IoU值下的性能:
Generative Sparse Detection Networks for 3D Single-shot Object Detection稀疏检测网络(GSDN)相关推荐
- Single shot object detection SSD using MobileNet and OpenCV
微信公众号:小白图像与视觉 关于技术.关注yysilence00.有问题或建议,请公众号留言. 主题:Single shot object detection SSD using MobileNet ...
- Single Shot Multibox Detection (SSD)实战(下)
Single Shot Multibox Detection (SSD)实战(下) Training 将逐步解释如何训练SSD模型进行目标检测. 2.1. Data Reading and Initi ...
- Single Shot Multibox Detection (SSD)实战(上)
Single Shot Multibox Detection (SSD)实战(上) 介绍了边界框.锚框.多尺度对象检测和数据集.现在,我们将利用这些背景知识构建一个目标检测模型:单次多盒检测(SSD) ...
- CV+Deep Learning——网络架构Pytorch复现系列——Detection(一:SSD:Single Shot MultiBox Detector 4.推理Detect)
上一话 CV+Deep Learning--网络架构Pytorch复现系列--Detection(一:SSD:Single Shot MultiBox Detector 3.loss)https:// ...
- SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)
承接上一篇SSD介绍:SSD+caffe︱Single Shot MultiBox Detector 目标检测(一) 如果自己要训练SSD模型呢,关键的就是LMDB格式生成,从官方教程weiliu89 ...
- 【3D 目标检测】3DSSD: Point-based 3D Single Stage Object Detector
一 核心思路 本篇通过观察point-based目标检测方法中,在PointNet++的上采样层(FP层)和refinement Module上面耗费了大量时间,因此作者借此提出了one-stage的 ...
- (CVPR 2020)3DSSD: Point-based 3D Single Stage Object Detector
摘要 目前,基于体素的3D单级检测器已经有很多种,而基于点的单级检测器仍处于探索阶段.在本文中,我们首先提出了一种轻量级且有效的基于点的3D单级目标检测器,名为3DSSD,在精度和效率之间取得了很好的 ...
- SSD(Single shot multibox detector)目标检测模型架构和设计细节分析
先给出论文链接:SSD: Single Shot MultiBox Detector 本文将对SSD中一些难以理解的细节做仔细分析,包括了default box和ground truth的结合,def ...
- SSD+caffe︱Single Shot MultiBox Detector 目标检测(一)
作者的思路就是Faster R-CNN+YOLO,利用YOLO的思路和Faster R-CNN的anchor box的思想. . 0 导读 (本节来源于BOT大赛嘉宾问答环节 ) SSD 这里的设计就 ...
最新文章
- 三步问题(求n中方式)
- C++中的继承(一)
- 把列表变成列向量_线性代数的本质11 抽象向量空间
- 修正IE6中FIXED不能用的办法,转载
- linux非守护线程一直不释放,Linux pthread 和 java thread 的是 / 非守护线程的行为
- Java机器学习,第2部分
- SQL Server中行列转换 Pivot UnPivot
- python的列表方法_Python列表的常用方法
- MongoDB 查询文档
- ENSP如何开启服务器的http_Centos\Liunx如何安装MySQL?
- 解决阿里云主机受到攻击的问题 2
- 百度地图定位SDK 之构想
- python代码写不出来怎么办_为什么python这个代码写出来的图片不显示?
- 从零基础入门Tensorflow2.0 ----三、7.自定义损失函数
- 一个简单的ZUI多文件上传的demo和sql练习
- 初次使用Vscode,遇到了一个极具没有水平的问题,解决之后瞬间感到无比尴尬
- Laravel 5.5 注册登录
- python测试开发课程_小蜗分享:Python测试开发全套学习路线
- Altium Designer简介及使用流程
- Linux磁盘故障和文件系统修复(救援模式Centos7、Centos8)
热门文章
- 《深度工作》一书摘抄
- DeleteDC() 与 ReleaseDC() 的区别
- 配置 chronyd时间同步服务器
- 关于extremedb
- 【Java】Socket网络编程实现内网穿透、端口映射转发、内网穿透上网工具的编写,设置IP白名单防火墙
- 用C语言编程,根据用户输入的半径计算球的表面积,体积,经过圆心的横切圆的面积以及以此球的半径、直径作为直径和高的圆柱体的侧面积、表面积和体积(将π定义成值为3.14的符号常量)
- 项目管理中会议纪要管理
- 【机器学习】Pandas入门
- Apache网页深入优化之ab压力测试、工作模式与目录属性优化
- 家具Furniture