当前位置: 首页 > news >正文

用3D扫描生成合成数据

合成数据集(Synthetic Datasets)正在成为计算机视觉模型训练的标准部分。 虽然新工具使合成数据集变得更容易访问,但除了标准机器学习过程之外,许多工具还需要对 3D 建模有基本的了解。 最简单的捷径是从现实世界中获取现有对象并将其导入 3D 场景中。

在这里插入图片描述

推荐:用 NSDT编辑器 快速搭建可编程3D场景

在本文中,我们将介绍如何对对象进行 3D 扫描以获取合成数据。 这是一个工作流程,可将你从真实对象带到 Blender 内的基本实现。 然后,使用合成数据工具包 zpy,你可以创建任意大小的合成数据集所需的标签、分段和随机变体。

要复制此实验,你需要使用 Blender、Meshroom、zpy 和手机摄像头。

1、3D 扫描物体

如果我们遵循一些最佳实践,拍摄 3D 扫描照片可能会非常简单。 尝试消除深阴影并保持照明一致。 为此,我们使用了一个非常简单的台灯。 尽可能保持整个物体的焦点。
在这里插入图片描述

使用手机摄像头,我们希望从各个可能的角度覆盖整个物体。 这有助于运动算法的结构找出物体的形状并将其重建为点云。

需要注意的是:一旦开始拍照,请勿移动物体或改变灯光,否则你将不得不重新开始。 即使是在背景中移动的物体(如上图所示的好奇宠物)也可能会导致 3D 重建出现问题。

我们在大约 5 分钟的时间内拍了 54 张照片。 一方面,不存在“图片太多”这样的问题,但试图获得“全面覆盖”却会让自己发疯。对于一个小物体,你不需要数千张图片,所以当遇到问题时就停下来。 你认为你已经足够了。

拍摄照片后,上传到 Meshroom 非常简单 - 只需拖放到图像文件夹中即可。 完成后,点击“开始”,Meshroom 会完成剩下的工作。 在 Meshroom 工作时密切关注它可能是件好事,否则就不清楚是否发生了任何事情。 Meshroom 有一个非常精彩的简短视频,介绍如何使用他们的产品,因此我们不会深入了解 Meshroom 的工作原理,但真正需要的只是几次点击和一些时间来输出模型。

在这里插入图片描述

完成模型后,我们可以检查输出中列出的 Meshroom 缓存。

2、导入Blender

接下来我们将导入并清理 Meshroom 输出。 打开 Blender 并单击“文件”,然后单击“导入”。 选择 OBJ,然后导航到 Meshroom Cache 以选择我们的纹理网格。 结果通常是模型未正确旋转或缩放。
在这里插入图片描述

我们可以使用屏幕左侧提供的简单工具来解决此问题,移动、旋转和缩放按钮是图中从上到下的三个按钮。
在这里插入图片描述

Blender 是一个非常复杂的软件包,拥有庞大的社区,因此如果你有更多问题并想深入研究 3D 动画,Youtube 上有大量教程。

现在,我们要让模型直立并调整尺寸。 我们可以通过点击最右侧的圆形按钮切换到纹理版本。 如果你的模型看起来很暗,请尝试添加灯光来调整场景的亮度。

在这里插入图片描述

即使没有任何编辑,我们已经得到了很好的结果!
在这里插入图片描述

但正如你所看到的,我们在网格中捕获了许多周围区域。 如果我们想创建机器学习数据集,我们需要将对象与背景隔离。

为了获得这种隔离,我们可以通过单击对象来选择对象,点击选项卡按钮,然后单击并拖动以框选我们要删除的区域。
在这里插入图片描述

点击删除按钮并选择“顶点”,然后再次点击选项卡,现在我们有了一个非常好的 3D 扫描模型可以在 Blender 中使用。

在这里插入图片描述

在我们开始数据集创建之前,需要进行更多的清理工作。 原点应该以我们的几何体为中心,以便我们获得一致的旋转和缩放。 通过选择“对象”选项卡,选择“选择原点”,然后选择“原点到几何体”来执行此操作。
在这里插入图片描述

你现在已经获得了现实世界对象的 3D 模型。 围绕它创建一个场景可能需要做更多的工作,但是这是否值得花费时间和精力完全取决于你的用例以及你希望将场景发展到什么程度。

3、生成综合数据

3D 模型完成后,你就可以开始使用 zpy 了。 作为一个为 Blender 添加功能的开源工具包,它允许我们创建各种各样的图像,这些图像构成了用于机器学习目的的数据集。 你可以选择为 3D 模型实现随机背景、随机相机角度、随机照明,甚至引入其他对象以增加数据集的复杂性。

开始使用 zpy(可在 GitHub 上获取)的最简单方法是按照这个简短视频教程系列中概述的步骤进行操作。

希望这能让你对如何 3D 扫描物体并开始使用合成数据有一个坚实的了解。


原文链接:用3D扫描生成合成数据 — BimAnt

相关文章:

用3D扫描生成合成数据

合成数据集(Synthetic Datasets)正在成为计算机视觉模型训练的标准部分。 虽然新工具使合成数据集变得更容易访问,但除了标准机器学习过程之外,许多工具还需要对 3D 建模有基本的了解。 最简单的捷径是从现实世界中获取现有对象并…...

pip安装依赖报错

执行命令时 pip install --upgrade pip 报错: pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。pip install --upgrade pip~~~ Category…...

规范的项目流程图怎么写

编写规范的项目流程图可以遵循以下步骤: 1.明确项目目标:首先,明确项目的目标以及需要实现的结果。这有助于确定项目的范围和要求。 2.识别项目任务:识别和列出所有的任务,这可以包括获得资源、实施动作、收集信息等…...

模型部署笔记--Pytorch-FX量化

目录 1--Pytorch-FX量化 2--校准模型 3--代码实例 3-1--主函数 3-2--prepare_dataloader函数 3-3--训练和测试函数 1--Pytorch-FX量化 Pytorch在torch.quantization.quantize_fx中提供了两个API,即prepare_fx和convert_fx。 prepare_fx的作用是准备量化&#…...

解决XXLJOB重复执行问题--Redis加锁+注解+AOP

基于Redis加锁注解AOP解决JOB重复执行问题 现象解决方案自定义注解定义AOP策略redis 加锁实践 现象 线上xxljob有时候会遇到同一个任务在调度的时候重复执行,如下图: 线上JOB服务运行了2个实例,有时候会重复调度到同一个实例,有…...

云安全(1)--初识容器逃逸之特权容器逃逸

文章目录 前言privileged,特权容器逃逸环境配置实际利用实际环境利用计划任务/var/spool/cron/crontabs/ 适用于ubuntu debain/var/spool/cron 适用于centos ld.so.preloadssh 前言 在10.15号的上海中华武数杯的渗透赛里做到了一个k8s的题目,这应该是我第一次在比赛…...

二阶系统时域响应

二阶系统微分方程 二阶系统传递函数 二阶系统单位阶跃响应 过阻尼系统 临界阻尼系统 欠阻尼系统 无阻尼系统 二阶系统阶跃响应仿真 在Matlab中进行仿真,设置不同阻尼比2、1、0.5和0,可以得到结论: 阻尼比越小,系统响应速度越快&…...

mstsc改端口为33389

windows 远程默认端口3389不太安全,改成33389防下小人 把下面的2个文本存在后缀.reg的文件,双击导入注册表,"PortNumber"dword:0000826d 这个就是33389对应的端口号的16进制值,要想自己改成其它的换下值即可 Windows …...

经典算法试题(二)

文章目录 一、岁数1、题目2、思路讲解3、代码实现4、结果 二、打碎的鸡蛋1、题目2、思路讲解3、代码实现4、结果 三、分糖1、题目2、思路讲解3、代码实现4、结果 四、兔子产子1、题目2、思路讲解3、代码实现4、结果 五、矩阵问题1、题目2、思路讲解3、代码实现4、结果 六、谁是…...

Linux——生产者消费者模型

目录 一.为何要使用生产者消费者模型 二.生产者消费者模型优点 三.基于BlockingQueue的生产者消费者模型 1.BlockingQueue——阻塞队列 2.实现代码 四.POSIX信号量 五.基于环形队列的生产消费模型 一.为何要使用生产者消费者模型 生产者消费者模式就是通过一个容器来解决生…...

Oracle缓存表

Oracle缓存表(db_buffer_pool)由三部分组成: buffer_pool_defualt buffer_pool_keep buffer_pool_recycle 如果要把表钉死在内存中,也就是把表钉在keep区。相关的命令为: alter table 表名 storage(buffer_pool k…...

智能变电站自动化系统的应用与产品选型

摘要:现如今,智能变电站发展已经成为了电力系统发展过程中的内容,如何提高智能变电站的运行效率也成为电力系统发展的一个重要目标,为了能够更好地促进电力系统安全稳定运行,本文则就智能变电站自动化系统的实现进行了…...

reactnative 底部tab页面@react-navigation/bottom-tabs

使用react-navigation/native做的页面导航和tab‘ 官网:https://reactnavigation.org/docs/getting-started 效果图 安装 npm install react-navigation/nativenpm install react-navigation/bottom-tabs封装tabbar.js import { View, StyleSheet, Image } from …...

运维中心—监控大盘

一、监控大盘内容分类 1、告警 2、业务趋势 3、异常码 4、主机 5、服务状态 6、系统账单 二、API分类 【基础数据】 1、分组查询各自子系统 2、子系统查询名下各个微服务 【主机】 根据分组查询主机信息,按照子系统分组,按照CPU和内存排序 步骤&#xf…...

Node.js的安装

直接在浏览器中搜索Node.js即可 打开下载好的文件 验证是否安装成功 在cmd中输入 node -v,若结果为版本号那就是成功的 环境配置 配置全局模块所在的路径缓存cache的路径 在安装目录中新建两个文件夹,文件夹名为:node_cache和node_global 输…...

vsCode git 修改、清空、重置、保存账号名密码

1、保存账号名密码,之后拉取代码都不用重新输入: git config --global credential.helper store 2、查看git用户名: git config user.name 3、清空所有的用户名和密码: git config --system --unset credential.helper 4、清…...

Docker 安装oracle12c容器并创建新用户

Docker 安装oracle12c容器并创建新用户 下载镜像 docker pull truevoly/oracle-12c启动镜像 8080和22端口没有映射出来,有需要自己 docker run -d -p 8123:1521 -restartalways --privilegedtrue -v /data/docker/Oracle12c_sichuan:/u01/app/oracle/ --name oracle…...

LabVIEW中管理大型数据

LabVIEW中管理大数据 LabVIEW的最大优势之一是自动内存管理。这种内存管理允许用户轻松创建字符串、数组和集群,而无需C/C用户经常担心。但是,这种内存管理设计为绝对安全,因此数据被非常频繁地复制。这通常不会造成任何问题,但是…...

dirsearch网站目录暴力破解

介绍: dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。相比其他扫描工具disearch的特点是: 支持HTTP代理多线程支持多种形式的网页(asp,php)生成报告&#xff0…...

【数据结构】线性表(三)循环链表的各种操作(创建、插入、查找、删除、修改、遍历打印、释放内存空间)

目录 线性表的定义及其基本操作(顺序表插入、删除、查找、修改) 四、线性表的链接存储结构 1. 单链表 2. 循环链表 a. 循环链表节点结构体 b. 创建新节点 c. 在循环链表末尾插入节点 d. 删除循环链表中指定值的节点 e. 在循环链表中查找指定值的…...

UP Squared i12 Edge迷你主机:工业自动化与边缘计算利器

1. UP Squared i12 Edge迷你主机深度解析 这款来自AAEON的UP Squared i12 Edge迷你主机,可以说是工业自动化领域的一把瑞士军刀。作为长期从事边缘计算设备评测的技术人员,我第一眼就被它紧凑的无风扇设计所吸引——1309468mm的机身尺寸,重量…...

自动驾驶图像增强技术:雨雪效果模拟与实现

1. 图像增强技术解析:为自动驾驶训练数据添加雨雪效果去年参与某自动驾驶项目时,我们遇到了一个棘手问题:测试车辆在雨雪天气的识别准确率骤降30%。原因很简单——训练数据集里99%都是晴天场景。这个经历让我深刻认识到,通过图像增…...

从基础到进阶:最短路径辅助的快速扫描法(SPAFSM)在复杂介质走时计算中的精度提升实践

1. 快速扫描法(FSM)基础与原理解析 快速扫描法(Fast Sweeping Method, FSM)是地震波走时计算中的经典算法,由Zhao在2005年首次提出。它的核心思想是通过有限差分法求解程函方程(Eikonal equation),模拟地震波在地下介质中的传播时间。想象一下&#xff0…...

【YOLOv11】032、YOLOv11注意力机制集成:SE、CBAM、ECA等注意力模块添加

昨天深夜调试一个产线瑕疵检测模型,问题很典型:小尺寸的划痕和污渍总被背景噪声淹没。常规的卷积层平等对待所有特征通道,那些微弱的缺陷信号在层层传递中被稀释了。这时候就该请出注意力机制了——不是赶时髦,而是实际问题倒逼的技术选择。 为什么YOLO需要注意力模块? …...

SQL如何实现按自定义排序进行分组汇总_ORDERBY与聚合函数

GROUP BY 结果顺序未定义,ORDER BY 仅排序最终结果;需用 CASE WHEN 或 FIELD() 构造有序分组键,再 GROUP BY 该键与原始字段,最后 ORDER BY 控制输出。ORDER BY 不能直接用在 GROUP BY 后做自定义排序分组汇总SQL 标准里&#xff…...

Vue3-Marquee 架构深度解析:零依赖跑马灯组件的设计哲学与实践

Vue3-Marquee 架构深度解析:零依赖跑马灯组件的设计哲学与实践 【免费下载链接】vue3-marquee A simple marquee component with ZERO dependencies for Vue 3. 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-marquee 在 Vue 3 生态系统中,动…...

麒麟系统上ArcGIS Runtime SDK for Qt 100.8.0的保姆级安装避坑指南

麒麟系统上ArcGIS Runtime SDK for Qt 100.8.0的保姆级安装避坑指南 在国产化操作系统浪潮下,麒麟系统作为主流选择之一,其生态适配一直是开发者关注的焦点。对于GIS开发者而言,在麒麟系统上部署ArcGIS Runtime SDK for Qt堪称一场"硬仗…...

Webcamoid:智能高效的跨平台网络摄像头管理解决方案

Webcamoid:智能高效的跨平台网络摄像头管理解决方案 【免费下载链接】webcamoid Webcamoid is a full featured and multiplatform camera suite. 项目地址: https://gitcode.com/gh_mirrors/we/webcamoid 在数字化时代,网络摄像头已成为视频会议…...

从溶解到燃烧:UE材质特效避坑指南,解决边缘锯齿与噪点采样常见问题

从溶解到燃烧:UE材质特效避坑指南,解决边缘锯齿与噪点采样常见问题 在虚幻引擎中实现溶解、燃烧等动态材质效果时,开发者常会遇到边缘锯齿、噪点采样不当等问题。这些问题不仅影响视觉效果,还可能破坏游戏或应用的沉浸感。本文将深…...

AI专著生成全攻略:利用AI写专著,3天完成20万字高品质专著!

对于许多学术研究者来说,撰写专著最大的挑战,往往是“有限的时间”与“无限的期待”之间的不平衡 编写一本专著通常需要消耗3到5年,甚至更长的时间,而研究者们还要兼顾教学、科研项目以及学术沟通等多方面的职责,能够…...