3D Tiles语义分割流水线

Dylan Chua 和 Anne Lee 开发了一个处理管线,用于对 3D Tiles 中包含的 GL 传输格式 (glTF) 模型进行语义分割。 该管道读取并遍历 3D Tileset,以输出包含元数据的经过转换的划分对象集。 该项目为 3D 语义分割器提供了最小可行产品,作为各种应用程序的概念验证。 他们接受模拟和培训系统中心首席工程师 How Chang Hong 的指导。

1、动机

现实世界的当代 3D 表示通常是手工制作且昂贵。 高保真模型还需要较长的生产时间,从而导致完成已经过时的模型。 新加坡的 3D 表示目前以 OneMap 的形式存在,“

权威的新加坡国家地图,包含新加坡土地管理局开发的最详细、最及时的更新信息”。 尽管OneMap中的模型干净而精致,但它缺乏树木和地形高程,更不用说完全没有桥梁等基础设施。

提取自 OneMap 

随着卫星摄影测量的出现,可以以较低的劳动力和资源成本快速构建逼真的地球 3D 模型。 先前的缺点可以通过这些 3D Tiles 的潜在力量来解决,只需很少的时间投资即可构建。 因此,数字孪生可以保持最新。 创建这些 3D 图块的自动性质会导致元数据很少的网格的嘈杂合并。 这就是开发一种处理和分类这些数据的方法的挑战。

2、现有工作

在3D分割领域,现有的分割方法可大致分为以下几类:

  • 多视角:以不同角度渲染物体的2D图像
  • 体块:转换为二元体素
  • 点云:使用顶点
  • 基于网格:使用网格图元

在上述四种技术中,基于“点云”的技术具有最深入的研究。 然而,由于两个主要考虑因素,并未对此进行探讨:

  • 大规模城市网格

3D语义分割领域的现有文献大多主要关注较小规模,例如区分瓶盖等特征或识别房间中家具的类型。 然而,该项目提供的数据类型需要针对大规模城市网格的独特特征量身定制的解决方案。

  • 数据限制

最先进的城市规模 3D 分割系统通常依赖于丰富的点云,这些点云通常使用移动激光扫描、机载激光扫描或 LiDAR 等 3D 激光扫描技术生成。 然而,给出的数据是通过摄影测量生成的。 因此,提供的网格缺乏生成稳健点云所需的细节水平。 在比较 OneMap 和 Google 地图图块的图像时,这种限制很明显,其中植被和建筑物之间的边界往往会混合在一起,并且车辆等伪影仍然存在于数据中。

因此,探索了新的分割方法(在下面的“方法”部分中介绍)。

3、整体管线

本质上,管道使用根tileset JSON并随后遍历tileset树。 每个 3D 模型 — 一个二进制 glTF (.glb) 文件 — 都会被分段,并且其顶点也会被分类。 体现类的元数据可以存储在tileset JSON 中或.glb 文件中。

4、实现方法

我们探索了两种分割 3D 模型的方法

  • 使用纹理图像
  • 基于网格的分割

4.1 图像分割

考虑到要转换的摄影测量 3D Tileset,包含的 3D 对象是附加有照片级真实感纹理的 .glb 文件。 二维图像分割的研究多种多样,并且存在大量训练有素的计算机视觉模型,尤其是在城市景观方面。 因此,可以对这些纹理执行语义分割。

3D模型示例

遗憾的是,由于该项目的持续时间有限,计算机视觉模型没有接受数据训练。 尽管如此,还是使用了基于 Facebook 的Mask2Former构建的预训练语义分割模型。 据报告,该模型的平均交集 (mIoU) 为 57.7,可以将区域标记为“道路”、“建筑物”和“植被”等。 尽管该模型是在城市景观上进行训练的,但与卫星图像得出的纹理有足够的相似性。 图像分割模型的结果如下所示,其中橙色表示建筑物,紫色表示植被。 目视检查显示分割具有足够的性能,将建筑物和植被的明显区域分开。 尽管如此,还是有一些纹理被错误地标记,并且肯定可以通过专门针对纹理的模型训练来改进。

对 3D 模型的纹理执行语义分割。 橙色:建筑; 紫色:植被

4.2 映射到 3D

要将 2D 分割转换为 3D,必须加载 .glb 文件以检索其顶点、面和纹理坐标。 诸如 trimesh 之类的高级库可以轻松获取这些内容,但这会带来数据压缩损失。 每个顶点都有一个各自的 UV 坐标,即一个包含 0 到 1 两个数字的 2D 矢量,对应于纹理上的像素。 因此,顶点可以根据它们在掩模上各自的值进行分类。

4.3 TUDelft 的语义城市网格分割 (SUMS)

另一种探索的方法是使用 TUDelft 制作的鲜为人知的分割工具。 与上述方法的主要区别在于,除了对纹理图像进行图像分割之外,它还会考虑网格特征(例如几何、上下文信息)。 SUMS 由代尔夫特理工大学 (TUDelft) 的 3D 地理信息研究小组构建。 它是一个开源程序,可以对大规模城市网格进行自动语义分割。 他们的 Github 存储库在这里。

SUMS by TUDelft

它主要用 C++ 实现,并利用 CGAL 和 Easy3D 等开源库。

  • 为什么选择SUMS

它提供了一个在精心注释的网格数据集上训练的预训练语义分割模型。 该数据集跨越 1900 万个三角形,覆盖赫尔辛基 4 平方公里的区域,包含城市环境中常见的六种对象类别:地形、高植被、建筑、水、车辆和船只。 重要的是要承认该数据集与数据集之间的相似程度

提供的数据,测试数据与给定数据越接近,模型性能提高的可能性就越高。 SUMS 还提供了通过使用网格注释工具来细化模型的潜力。

  • SUMS — 引擎盖下

其工作原理和技术细节可以在他们的论文中阅读。 本质上,它对网格进行过度分割以对三角形进行分组,识别平面(即平坦)段并提取特征。 然后将这些特征输入随机森林分类器以进行网格分割。

  • 根据给定的数据

提供的数据最初为.glb 格式,但需要转换为.ply 格式以与SUMS 兼容。

文件转换示意

标记的输出如下所示:

从原始 .glb 文件到转换后的 .ply 文件的转换过程以及颜色编码输出

由于 SUMS 在大型城市网格上进行了训练,因此也在更高级别的网格上进行了测试。

低级和高级网格上的 SUMS 检测

下表显示了 SUM 在两种网格上的性能比较。

与低级网格相比,应用于高级网格时,其性能提高了约 4.5 倍,这主要归因于网格与训练 SUMS 所依据的数据的相似性。 在这些输出表示中,每个三角形面都经过颜色编码以表示

其各自的类别或类别。 每个三角形面都包含三个顶点,每个顶点在 3D 空间内都有自己的一组坐标。 每个顶点都被标记以表示其关联的类。

4.4 元数据

等效的元数据可以存储在 3D 模型本身中,也可以存储在包含它的 JSON 文件中。 分层存储如下图所示。 标记要素和顶点必须位于 .glb 文件内,而更高级别的信息属于 3D Tileset JSON 文件。

具有不同级别元数据的 3D Tiles 结构展示

4.5 在 .glb 文件内

通过 glTF 扩展 EXT_MESH_FEATURES ,每个顶点特征可以包含到 .glb 文件本身中。 附录 C 演示了顶点的类如何打包成字节并可以由加载器检索。

单独的顶点语义元数据可以轻松可视化。 可以使用自定义着色器,根据每个顶点的类别赋予不同的外观,例如颜色。 更多细节稍后将在可视化部分中展开。

4.6 在 3D Tileset JSON 中

为了对图块集进行分段,每个 3D 模型都按类别分为多个 .glb 文件。 通过每个顶点的类别,可以选择并提取模型的面。 面的分类可能取决于朝向每个面的顶点的方法。 如果将面按其顶点的每一类进行分类,则保证所有面都被分组,但可能会出现重叠。 相反,分配给所有顶点共有的一个类可以防止重叠,但可能会导致未分类的面。

3D模型与顶点类的分离

由于一个 .glb 模型现在被拆分为多个文件,因此图块必须包含多个内容,每个内容都标有其所属的类。 3D Tiles 1.1 版新支持语义元数据和每个图块的多个内容,而给定的图块集仍为 1.0 版。 此后,需要一个基于 py3dtiles 的 3D Tiles 读取器和导出器。 拆分为多个内容可以对分段模型进行操作。 也就是说,它允许选择特定的类来渲染网格并与其交互。 例如,可以关闭植被,从其中删除分类网格
现场。

4.7 输出

从单个 .glb 文件到整个图块集,为了完全分割 3D Tiles 数据,需要遍历图块集树以找到要分割的 .glb 文件。 由于 3D 图块内容 URI 可能与图块集 JSON 文件相关,因此遍历器会考虑搜索子图块和 .glb 文件的相对路径。 考虑到 3D 文件较大且数量众多,仅处理了数据的子集。 特定感兴趣区域的提取从超过 75,500 个需要分割的 3D 模型减少到仅 174 个。

提取的 3D 图块区域

该管道在 174 个 .glb 文件上运行,只花了不到 5 分钟,平均每个文件大约需要 1.5 秒。 大部分计算时间都花在了机器学习模型上。 第一种方法每个纹理图像大约需要 1 秒。 第二个模型每个网格和相应的纹理图片大约需要 5 秒。

5、可视化

Cesium 是引入 3D Tiles 的平台,也开发了可视化 3D Tiles 的库。 我们特别关注 Web 版的 CesiumJS 和 Unity 版的 Cesium。 在这两种情况下,本地服务器都会提供图块集数据。 使用 Express 的 Node.js Web 应用程序设置了数据路径作为静态目录,允许应用程序托管文件。

CesiumJS 是 Cesium 提供的开源 JavaScript 库,旨在处理海量数据集,广泛用于创建用于共享地理空间数据的交互式 Web 应用程序。

Node.js 应用程序同时提供 HTML 和 JavaScript 文件以可视化浏览器中的数据,并使用 CesiumJS 来提供基于浏览器的可视化工具。

分割后的 3D Tiles 的可视化是通过将自定义着色器输入 CesiumJS 来完成的,该着色器识别每个顶点的类 ID,并为每个类生成唯一的外观。 可以切换该着色器以显示原始纹理或类的颜色。

CesiumJS 中区分建筑物(蓝色)和植被(绿色)的自定义着色器

Cesium 的 Unity 插件有助于在 Unity 中渲染 3D 图块,从而实现交互性并创建沉浸式 VR 体验。 完成此操作的详细过程可以在项目的 GitHub 存储库中找到。 为了导航和探索地图,按照本教程中提供的说明,将人形头像合并到游戏中。 使用 WASD 键可以控制头像。

新加坡碧山的一个人形头像在 3D Tiles中行走

也可以在 Unity 中选择和查看元数据。

Unity 中元数据显示为文本的示例场景

6、结束语

尽管大规模城市纹理的 3D 网格分割是一个相对较新的新兴领域,但我们对执行分割任务的两种不同方法进行了探索:一种依赖于纹理图像分析,另一种采用基于网格的分割方法。

这些方法可以对每个网格内的顶点和面进行分组,从而有助于添加有价值的元数据以增强数据组织和分析。

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

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

相关文章

视频技术2:把rtsp转为各种格式,包括webrtc

前题是启动ABLMediaServer,把ini里的hls_enable1 1、添加rtsp到视频服务器 http://127.0.0.1:7088/index/api/addStreamProxy?secret035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost_defaultVhost_&appMedia&streamCamera_00001&enable_hls1&ur…

【数据结构与算法】设计循环队列

🧑‍🎓个人主页:简 料 🏆所属专栏:C 🏆个人社区:越努力越幸运社区 🏆简 介:简料简料,简单有料~在校大学生一枚,专注C/C/GO的干货分…

2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第一部分】

最近回顾了Java B组的试题,深有感触:脑子长时间不用会锈住,很可怕。 兄弟们,都给我从被窝里爬起来,赶紧开始卷!!! 2022年第十三届蓝桥杯Java B组(第一部分 A~F题) 目录 一、填空题 …

详解基于快速排序算法的qsort的模拟实现

目录 1. 快速排序 1.1 快速排序理论分析 1.2 快速排序的模拟实现 2. qsort的模拟实现 2.1 qsort的理论分析 2.2 qsort的模拟实现 qsort函数是基于快速排序思想设计的可以针对任意数据类型的c语言函数。要对qsort进行模拟实现,首先就要理解快速排序。 1. 快…

【数据结构】堆的创建

文章目录 一、堆的概念及结构1、什么是堆2、堆的性质3、堆的结构及分类 二、堆的创建1、堆向下调整算法2、堆向上调整算法3、堆的创建(向上调整算法) 一、堆的概念及结构 1、什么是堆 堆就是以二叉树的顺序存储方式来存储元素,同时又要满足父…

智慧城市中的智慧生活:便捷、舒适与高效

目录 一、智慧城市中的智慧生活概述 二、智慧生活带来的便捷性 1、智慧交通的便捷出行 2、智慧购物的轻松体验 3、智慧政务的一站式服务 三、智慧生活带来的舒适性 1、智慧环境的绿色宜居 2、智慧医疗的健康保障 3、智慧教育的均衡发展 四、智慧生活带来的高效性 1、…

CSS案例-5.margin产品模块练习

效果1 相关数据 整体长:298px,高:415px 效果2 知识点 外边距margin 块级盒子水平居中 条件: 必须有宽度左右外边距设为auto 三种写法: margin-left:auto;margin-right:auto&…

高架学习笔记之信息安全基础

目录 一、信息安全基础 1.1. 概念 1.2. 信息存储安全 1.3. 网络安全 二、信息安全系统的组成框架 三、信息加解密技术和数字签名 四、访问控制技术 五、信息安全的保障体系与评估方法 5.1. 计算机信息系统安全保护等级 5.2. 安全风险管理 一、信息安全基础 1.1. 概念 …

linux安装WordPress问题汇总,老是提示无法连接到FTP服务器解决方案

最近在做一些建站相关的事情,遇到一些大大小小的问题都整理在这里 1.数据库密码和端口,千万要复杂一点,不要使用默认的3306端口 2.wordpress算是一个php应用吧,所以安装流程一般是 apache http/nginx——php——mysql——ftp &…

MQTT和Modbus的物联网网关协议区别分析

MQTT和Modbus的物联网网关协议区别分析 MQTT(Message Queuing Telemetry Transport)与Modbus是两种广泛应用在物联网环境中的通信协议,它们各自具有独特的优势和适用场景,下面将从多个维度对这两种网关协议进行详细区别分析。 首…

win10 使用 IIS 搭建 FTP

0. 背景 首先描述一下需求,大概情况就是,视频文件是存储在笔记本电脑里面,然后偶尔需要投屏到电视上。之前考虑过是否可以通过U盘拷贝的方式,后来发现不行,这样太局限了,需要先明确可能用到的教程&#xf…

汽车功能安全整体方法

摘 要 ISO26262道路车辆功能安全标准已经制定实践了多年,主要目标是应对车辆的电子和电气(E/E)系统失效。该方法践行至今,有些系统功能安全方法已经成熟,例如电池管理系统(BMS),并且…

Latex插入pdf图片,去除空白部分

目录 参考链接: 流程: 参考链接: ​科研锦囊之Latex-如何插入图片、表格、参考文献 http://t.csdnimg.cn/vpSJ3 流程: Latex的图片插入支持PDF文件,这里笔者建议都使用PDF文件进行图片的插入,因为PDF作…

基于spring boot实现接口管理平台

数据库结构 /* Navicat MySQL Data TransferSource Server : localhost_3306 Source Server Version : 50724 Source Host : localhost:3306 Source Database : interfaceTarget Server Type : MYSQL Target Server Version : 50724 File Encoding…

Android14之HIDL报错:Invalid sparse file format at header magic(一百九十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

学习笔记Day8:GEO数据挖掘-基因表达芯片

GEO数据挖掘 数据库:GEO、NHANCE、TCGA、ICGC、CCLE、SEER等 数据类型:基因表达芯片、转录组、单细胞、突变、甲基化、拷贝数变异等等 常见图表 表达矩阵 一行为一个基因,一列为一个样本,内容是基因表达量。 热图 输入数据…

Java语言: JVM

1.1 内存管理 1.1.1 JVM内存区域 编号 名字 功能 备注 1 堆 主要用于存放新创建的对象 (所有对象都在这里分配内存) jdk1.8之后永久代被替换成为了元空间(Metaspace) 2 方法区(加、常、静、即) 被虚拟机加载的类信息(版本、字段、方法、接口…

Git——GitHub远端协作详解

目录 Git&GitHub1、将内容Push到GitHub上1.1、在GitHub上创建新项目1.2、upstream1.3、如果不想要相同的分支名称 2、Pull下载更新2.1、Fetch指令2.2、Fetch原理2.3、Pull指令2.4、PullRebase 3、为什么有时候推不上去3.1、问题复现3.2、解决方案一:先拉再推3.3…

孙溟㠭于北京大学北大书店现场创作

孙溟㠭于北京大学北大书店现场创作篆刻作品 孙溟㠭北大书店现场创作 孙溟㠭于北京大学北大书店展览期间现场创作 孙溟㠭北京大学篆刻展现场创作 图文/氿波

Nadaraya-Watson核回归

目录 基本原理 ​编辑 核函数的选择 带宽的选择 特点 应用 与注意力机制的关系 参考内容 在统计学中,核回归是一种估计随机变量的条件期望的非参数技术。目标是找到一对随机变量 X 和 Y 之间的非线性关系。 在任何非参数回归中,变量 Y 相对于变量…