Convolutional Occupancy Networks【ECCV】
论文:https://arxiv.org/pdf/2003.04618
代码:GitHub - autonomousvision/convolutional_occupancy_networks: [ECCV'20] Convolutional Occupancy Networks
图 1:卷积占据网络。传统的隐式模型 (a) 由于其全连接网络结构,表现能力受到限制。我们提出了卷积占据网络 (b),利用卷积,从而实现可扩展且等变的隐式表示。我们通过线性插值在 3D 位置 查询卷积特征。与占据网络(ONet) 相比,所提出的特征表示 依赖于输入 和 3D 位置 。图 (c) 显示了在 Matterport3D 数据集上从一个噪声点云重建的两层建筑。
摘要:
最近,隐式神经表示在基于学习的3D重建中变得流行起来。尽管展示了有前景的结果,但大多数隐式方法仅限于相对简单的单个对象几何形状,并且无法扩展到更复杂或大规模的场景。隐式方法的关键限制因素是其简单的全连接网络架构,这不允许在观察中整合局部信息或结合诸如平移等变性等归纳偏置。在本文中,我们提出了卷积占据网络,这是一种更灵活的隐式表示,用于详细重建物体和3D场景。
通过结合卷积编码器和隐式占据解码器,我们的模型结合了归纳偏置,从而在3D空间中实现结构化推理。我们通过从噪声点云和低分辨率体素表示中重建复杂几何形状来研究所提出表示的有效性。我们通过实验证明,我们的方法可以实现单个对象的细粒度隐式3D重建,扩展到大型室内场景,并且可以从合成数据很好地泛化到真实数据。
主要贡献:
- 我们识别了当前隐式3D重建方法的主要限制。
- 我们提出了一种灵活的平移等变架构,使得从物体到场景层次的精确3D重建成为可能。
- 我们证明了我们的模型能够从合成场景泛化到真实场景,并能够泛化到新的物体类别和场景。
相关工作:
基于学习的3D重建方法可以根据它们使用的输出表示进行广泛分类。
体素: 体素表示是基于学习的3D重建最早期的表示之一【5, 46, 47】。由于体素表示的立方体内存需求,一些工作提出在多个尺度上操作或使用八叉树进行有效的空间分割【8, 14, 25, 37, 38, 42】。然而,即使使用自适应数据结构,体素技术在内存和计算方面仍然有限。
点云: 另一种3D重建的输出表示是3D点云,已在【9, 21, 34, 49】中使用。然而,基于点云的表示在处理点的数量方面通常受到限制。此外,它们无法表示拓扑关系。
网格: 一种流行的替代方法是使用神经网络直接回归网格的顶点和面【12, 13, 17, 20, 22, 44, 45】。虽然这些工作中的一些需要变形固定拓扑的模板网格,其他则导致带有自相交网格面的非水密重建。
隐式表示: 最近的隐式占据【3, 26】和距离场【27, 31】模型使用神经网络在给定任何3D点作为输入时推断占据概率或距离值。与上述需要离散化的显式表示(例如体素、点或顶点数量)相比,隐式模型连续表示形状,并且自然处理复杂的形状拓扑。隐式模型已被用于从图像学习隐式表示【23, 24, 29, 41】,编码纹理信息【30】,进行4D重建【28】,以及基于原语的重建【10, 11, 15, 32】。不幸的是,所有这些方法都仅限于相对简单的单个对象的3D几何形状,不能扩展到更复杂或大规模的场景。关键限制因素是简单的全连接网络架构,这不允许整合局部特征或结合平移等变性等归纳偏置。
值得注意的例外是PIFu【40】和DISN【48】,它们使用像素对齐的隐式表示来重建穿衣人【40】或ShapeNet对象【48】。虽然这些方法也利用了卷积,但所有操作都在2D图像域中进行,限制了这些模型到基于图像的输入和单个对象的重建。相比之下,在这项工作中,我们提出在物理3D空间中聚合特征,利用2D和3D卷积。因此,我们的以世界为中心的表示独立于相机视点和输入表示。此外,我们证明了隐式3D重建在场景级别的可行性,如图1c所示。
在并行工作中,Chibane等人【4】提出了一个与我们的卷积体积解码器相似的模型。与我们相比,他们仅考虑单一变体的卷积特征嵌入(3D),使用有损离散化进行3D点云编码,并且仅展示了单个对象和人类的结果,而不是完整的场景。在另一项并行工作中,Jiang等人【16】利用形状先验进行场景级隐式3D重建。与我们不同的是,他们使用3D点法线作为输入,并且在推理时需要优化。
方法:
我们的目标是使隐式3D表示更加具有表现力。我们模型的概览如图2所示。我们首先将输入x(例如,一个点云)编码成2D或3D特征网格(左侧)。这些特征经过卷积网络处理,然后通过全连接网络解码为占据概率。我们在实验中研究平面表示(a+c+d)、体积表示(b+e)以及它们的组合。接下来,我们详细解释编码器(第3.1节)、解码器(第3.2节)、占据预测(第3.3节)和训练过程(第3.4节)。
3.1 编码器
虽然我们的方法与输入表示无关,但我们专注于3D输入,以展示我们的模型恢复精细细节和扩展到大场景的能力。更具体地说,我们假设输入x是噪声稀疏的点云(例如,来自结构运动或激光扫描),或者是粗糙的占据网格。
我们首先用一个与任务相关的神经网络处理输入x,以获得每个点或体素的特征编码。对于体素化的输入,我们使用一个单层3D CNN,对于3D点云,我们使用一个浅层的PointNet [35] 并进行局部池化。在获得这些特征之后,我们按照以下方式构建平面和体积特征表示,以包含局部邻域信息。
平面编码器:如图2a所示,对于每个输入点,我们执行正交投影到一个规范平面上(即,与坐标系的轴对齐的平面),我们将其离散化为分辨率为H × W像素单元。对于体素输入,我们将体素中心视为一个点并将其投影到平面上。我们使用平均池化来聚合投影到相同像素的特征,从而得到具有维度H × W × d的平面特征,其中d是特征维度。
在我们的实验中,我们分析了我们模型的两个变体:一个变体将特征投影到地面平面,另一个变体将特征投影到所有三个规范平面。虽然前者在计算上更有效率,但后者允许在z维度中恢复更丰富的几何结构。
体积编码器:虽然平面特征表示允许在较大的空间分辨率下进行编码(1282像素及以上),但它们局限于二维。因此,我们还考虑体积编码(见图2b),它更好地表示3D信息,但局限于较小的分辨率(通常在我们的实验中为323个体素)。与平面编码器类似,我们执行平均池化,但这次是针对落入同一个体素单元的所有特征,从而得到具有维度H × W × D × d的特征体积。
3.2 解码器
我们通过使用2D和3D卷积的Hourglass(U-Net)网络[6, 39]处理来自编码器的特征平面和特征体积,为我们的模型赋予了平移等变性,该网络由一系列下采样和上采样卷积组成,并带有跳跃连接,以整合局部和全局信息。我们选择U-Net的深度,使其感受野等于相应特征平面或体积的大小。
我们的单平面解码器(图2c)使用2D U-Net处理地面平面特征。多平面解码器(图2d)分别使用具有共享权重的2D U-Net处理每个特征平面。我们的体积解码器(图2e)使用3D U-Net。由于卷积操作具有平移等变性,我们的输出特征也具有平移等变性,从而实现了结构化推理。此外,卷积操作能够“修复”特征同时保留全局信息,从而实现了从稀疏输入进行重构。
3.3 占据预测
给定聚合的特征图,我们的目标是估计3D空间中任意点p的占据概率。对于单平面解码器,我们将每个点p正交投影到地面平面,并通过双线性插值查询特征值(图2c)。对于多平面解码器(图2d),我们通过对所有3个平面的特征求和来聚合来自3个规范平面的信息。对于体积解码器,我们使用三线性插值(图2e)。将输入x在点p处的特征向量表示为ψ(p, x),我们使用一个小型全连接的占据网络来预测点p的占据情况:
网络包括多个ResNet块。我们使用[29]的网络架构,将ψ添加到每个ResNet块的输入特征中,而不是之前工作中提出的更消耗内存的批量归一化操作[26]。与[29]不同,我们使用32作为隐藏层的特征维度。有关网络架构的详细信息可在补充材料中找到。
3.4 训练和推断
在训练时,我们在感兴趣的体积内均匀采样查询点p ∈ R 3,并预测它们的占据值。我们应用预测值ˆop和真实占据值op之间的二元交叉熵损失:
结论:
我们引入了卷积占据网络(Convolutional Occupancy Networks),这是一种将卷积神经网络的表现力与隐式表示的优势结合起来的新型形状表示方法。我们分析了2D和3D特征表示之间的权衡,并发现融合卷积操作有助于推广到未见类别、新颖的房间布局和大规模室内空间。我们发现我们的三平面模型在内存效率方面表现良好,对合成场景效果好,并允许更大的特征分辨率。相比之下,我们的体积模型在真实场景中表现出色,但消耗更多内存。
最后,我们指出我们的方法不具备旋转等变性,而且只在与定义的体素大小的倍数相关的平移中具有平移等变性。此外,合成数据和真实数据之间仍然存在性能差距。虽然本文的重点是基于学习的3D重建,在未来的工作中,我们计划将我们的新型表示方法应用于其他领域,如隐式外观建模和4D重建。
相关文章:

Convolutional Occupancy Networks【ECCV】
论文:https://arxiv.org/pdf/2003.04618 代码:GitHub - autonomousvision/convolutional_occupancy_networks: [ECCV20] Convolutional Occupancy Networks 图 1:卷积占据网络。传统的隐式模型 (a) 由于其全连接网络结构,表现能力…...

Android Studio 问题集锦
报 Plugin [id: ‘com.android.application’, version: ‘8.1.3’, apply: false] was not found in any of the following sources: 场景:在一个Android 11的项目中添加一个Android 9的项目作为其Module,结果导致原项目无法正常运行,且原项…...

J.搬砖【蓝桥杯】/01背包+贪心
搬砖 01背包贪心 思路:要让重量更小的在更前面,价值更大的在更后面,vi−wj>vj−wi viwi>vjwj 第 i 个箱子放在第 j 个箱子下面就显然更优。所以进行排序再用01背包即可。 #include<iostream> #include<algorithm> #defi…...

拥塞控制的微观行为与力学解释
本文以 tcptrace 图为基,描述传输的微观行为,并给出一个初中几何描述的压水井模型。 统计复用网络的拥塞控制,宏观看 inflight,微观看 pacing rate,宏观大方向不对,微观再正确也不行。 而网络的统计动力学…...

每日一读: 硬件网卡tx支持哪些功能特性offload(ixgbe驱动为例)
ixgbe驱动 rte_eth_dev_info_get -> ixgbe_dev_info_get -> ixgbe_get_tx_port_offloads uint64_t ixgbe_get_tx_port_offloads(struct rte_eth_dev *dev) {uint64_t tx_offload_capa;struct ixgbe_hw *hw IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);tx_…...

MyBatis的坑(动态SQL会把0和空串比较相等为true)
文章目录 前言一、场景如下二、原因分析1. 源码分析2. 写代码验证 三、解决办法代码及执行结果如下 总结 前言 在开发过程中遇到MyBatis的动态SQL的if条件不生效的情况,但经过debuger发现并不是参数问题,已经拿到了参数并传给了MyBatis,且从表…...

Springboot事务控制中A方法调用B方法@Transactional生效与不生效情况实战总结
介绍 本篇对Springboot事务控制中A方法调用B方法Transactional生效与不生效情况进行实战总结,让容易忘记或者困扰初学者甚至老鸟的开发者,只需要看这一篇文章即可立马找到解决方案,这就是干货的价值。喜欢的朋友别忘记来个一键三连哈&#x…...

python -【三】循环语句
一、while 循环 while 语法 while 条件: 条件满足时,做事情 a 0 while a < 100:print(i like python ...)a 1求 1-100 的总和 i 1 sum 0 while i < 100:sum ii 1 print(f1-100 的和是 {sum})""" 1-100 的和是 5050 ""&…...

类的内存对齐位段位图布隆过滤器哈希切割一致性哈希
文章目录 一、类的内存对齐1.1规则1.2原因 二、位段2.1介绍2.2内存分配问题2.3跨平台问题2.4使用的注意事项 三、位图的应用3.1 给40亿个不重复的无符号整数,找给定的一个数。(int的范围可以到达42亿多)3.2 给定100亿个整数,设计算…...

于ThinkPHP开发的赛事报名小程序
基于ThinkPHP开发的赛事报名微信小程序 功能包括 1、参赛公告 2、会员中心(会员注册、登录、成绩查询、资料管理、参赛记录管理) 3、个人报名和企业报名 (身份证验证防止重复报名) 4、培训报名 5、查询是否在库人员,根…...

前端学习--React部分
文章目录 前端学习--React部分前言1.React简介1.1React的特点1.2引入文件1.3JSX🍉JSX简介与使用🍉JSX语法规则 1.4模块与组件🍉模块🍉组件 1.5安装开发者工具 2.React面向组件编程2.1创建组件🍉函数式组件🍉…...

24V_2A_1.2MHZ|PCD0303升压恒频LCD背光源专用电路超小体积封装
概述 PCD0303是一个恒定频率,6针SOT23电流模式升压转换器用于小型低功耗应用。PCD0303 以1.2MHz切换,并且允许使用微小的,低成本电容器和电感器2mm或更小,内部软启动会产生较小的涌入电流延长电池寿命。PCD0303具有自动切换至轻负载下的脉冲…...

python生成词云图
生成词云图的话需要先对数据进行分词处理 , 分词方法点击查看 import pandas as pd from collections import Counter from wordcloud import WordCloud import matplotlib.pyplot as plt# 假设您已经按照之前的步骤处理了数据,并且处理后的数据保存在comments_proc…...

【使用ChatGPT构建应用程序】应用程序开发概述:1. 管理秘钥、2. 数据安全、3. 与应用程序解耦、4. 注意提示语的注入攻击
文章目录 一. 首先注意的两个方面1. 管理API密钥1.1. 用户提供API密钥1.2. 你自己提供API密钥 2. 数据安全和数据隐私 二. 软件架构设计原则:与应用程序解耦三. 注意LLM提示语的注入攻击1. 分析输入和输出2. 监控和审计3. 其他要注意的注入情况 在了解了ChatGPT的文…...

【JavaScript脚本宇宙】不可或缺的Web开发工具:图表和可视化
图形化你的数据:六款顶级JavaScript库全接触 前言 在本文中,我们将深入探讨六个强大的JavaScript库,这些库被广泛应用于数据可视化和交互式图形展示。我们将了解每个库的概述、主要特性、使用示例以及使用场景,以帮助读者更全面…...

自然语言处理(NLP)中的迁移学习
Transfer Learning in NLP 迁移学习(Transfer Learning)无疑是目前深度学习中的新热点(相对而言)。在计算机视觉领域,它已经应用了一段时间,人们使用经过训练的模型从庞大的ImageNet数据集中学习特征&…...

PLC集成BL121PO网关优化智能电网的远程管理PLC转OPC UA协议
随着工业自动化技术的不断发展,智能电网等复杂系统对于设备之间高效通信的需求日益增加。PLC转OPC UA协议转换网关BL121PO作为一款领先的协议转换设备,通过其独特的设计和功能,为用户提供了高效、安全的PLC接入OPC UA的解决方案。 设备概述 …...

爬虫案例(读书网)
一.我们还是使用简单的bs4库和lxml,使用xpath: 导入下面的库: import requests from bs4 import BeautifulSoup from lxml import etree 我们可以看见它的div和每个书的div框架,这样会观察会快速提高我们的简单爬取能力。 二.实…...

Linux系统编程(五)多线程创建与退出
目录 一、基本知识点二、线程的编译三、 线程相关函数1. 线程的创建(1)整型的传入与接收(2)浮点数的传入与接收(3)字符串的传入与接收(4)结构体的传入与接收 2. 线程的退出3. 线程的…...

计算机毕业设计 | SpringBoot个人博客管理系统(附源码)
1,绪论 1.1 背景调研 在互联网飞速发展的今天,互联网已经成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。互联网上发布信息主要是通过网站来实现的,获取信息也是要在互联网中…...

字母的大小写转换
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中,字符串对象提供了lower()方法和upper()方法进行字母的大小写转换,即可用于将大写字母转换为小写字母或者将小写字…...

JTW结构
JTW(JSON Web Token)的结构 在这篇笔记中,我们将了解JTW(JSON Web Token)的结构。我们将看到JTW是如何创建的,令牌的各个部分是什么,以及您如何自己构建和构造JTW。您还将了解一些这种结构的含义,以及使用JTW进行授权时的一些结果优缺点。 基本上,JTW本质上就是一个…...

debian11安装留档@VirtualBox
因为debian12无法安装tpot,所以又把11重新安装一遍,以前的安装文档:安装Debian 11 留档-CSDN博客 下载光盘 华为云地址:https://repo.huaweicloud.com/debian-cd/11.0.0/amd64/iso-cd/ 使用了debian11 教育版,比较有…...

SpringBoot——整合Thymeleaf模板
目录 模板引擎 新建一个SpringBoot项目 pom.xml application.properties Book BookController bookList.html 编辑 项目总结 模板引擎 模板引擎是为了用户界面与业务数据分离而产生的,可以生成特定格式的页面在Java中,主要的模板引擎有JSP&…...

电商推荐系统+电影推荐系统【虚拟机镜像分享】
电商推荐系统电影推荐系统【虚拟机镜像分享】 所有组件部署好的镜像下载(在下面),仅供参考学习。(百度网盘,阿里云盘…) 博主通过学习尚硅谷电商推荐电影推荐项目,将部署好的虚拟机打包成ovf文…...

(函数)判断素数(C语言)
一、运行结果; 二、源代码; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明素数判断函数; void prime(int number);int main() {//初始化变量值;int number 0;//获取用户输入的数据;printf(&quo…...

git 学习随笔
git 学习随笔 基本概念 git 对待数据类似快照流的形式而不是类似 cvs 那样的纪录文件随时间逐步积累的差异 git 中所有数据在存储钱都会计算校验和(hash) 三种状态:已提交(committed),已修改(modified),已暂存(staged)。 add…...

【因果推断python】1_因果关系初步1
目录 为什么需要关心因果关系? 回答不同类型的问题 当关联确实是因果时 为什么需要关心因果关系? 首先,您可能想知道:它对我有什么好处?下面的文字就将围绕“它”展开: 回答不同类型的问题 机器学习目…...

(函数)颠倒字符串顺序(C语言)
一、运行结果; 二、源代码; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <string.h>//声明颠倒函数; void reverse(char a[]) {//初始化变量值;int i, j;char t;//循环颠倒;for (i 0, j strl…...

自定义数据集上的3D目标检测:使用OpenPCDet训练CenterPointPillar模型
前言 在自动驾驶和机器人领域,3D目标检测是关键技术之一。它能够提供关于周围环境中物体的精确位置和尺寸信息。OpenPCDet是一个基于PyTorch的开源3D目标检测框架,支持多种3D检测网络。在本文中,我们将探讨如何使用OpenPCDet框架和CenterPoi…...