立即开始使用 3D 图像

news2024/11/18 1:42:06

一、说明

        这个故事介绍了使用这种类型的数据来训练机器学习3D模型。特别是,我们讨论了Kaggle中可用的MNIST数据集的3D版本,以及如何使用Keras训练模型识别3D数字。

        3D 数据无处不在。由于我们希望构建AI来与我们的物理世界进行交互,因此使用3D数据来训练我们的模型非常有意义。

二、3D 数据从何而来?

        现在看看你周围的物体。它们是占据三维房间的三维实体,您 - 也是一个3D实体 - 此时此刻。如果这个房间里的所有东西都是静态的,我们可以将此环境建模为 3D 空间数据。

                                                                建筑扫描 — 来源

        3D 数据有多种来源,例如 2D 图像序列和 3D 扫描仪数据。在这个故事中,我们开始使用来自流行MNIST数据集的合成生成的3D版本的点云来处理3D数据。

三、3D MNIST 数据集

        以防万一您还不知道,MNIST是著名的2D手写数字图像集。MNIST 中的元素是小型 28x28 灰度图像。在这个故事中,我们将使用MNIST的3D版本:

MNIST 中的原始数字

                                                        修改后的3D版本

        可以使用此 jupyter 笔记本生成此数据集。

        增强型 MNIST 3D 中的 3D 图像是从 MNIST 中的原始 2D 图像中获得的,这些图像经过一组转换修改:

1 - 膨胀:这是堆叠 N 次相同数字图像以从 3D 数字获得 2D 身体的过程。

                                        手写数字的放大版本 3

2 - 噪声:对每个 3D 点应用显著的高斯噪声

                                                        具有高斯噪声的相同图像

3 - 着色:MNIST 中的寄存器是灰度图像。为了使事情更具挑战性,让我们将它们转换为包含随机颜色

4 - 旋转:一旦它们是 3D 对象,我们就可以旋转它们,这就是我们要做的

                                        具有不同旋转的相同图像

        有关3D MNIST数据集的更多详细信息可以在Kaggle中找到。现在,让我们直接跳到分步过程:

四、获取和加载数据

        首先要做的是:从Kaggle下载数据集文件。解压缩文件以获取 3d-mnist.h5。然后,加载数据集

        简而言之,train_x 或 test_x 中的每个寄存器都是一个 16x16x16 的立方体。每个立方体保存一个 3D 数字的点云数据。您可以轻松地从数据集中提取任何寄存器:

        结果如下:

事实上,这是MNIST中第3个元素的增强181D版本:

现在我们已经加载了数据集,我们可以使用它来训练我们的模型。

4.1 定义模型

        我们希望训练一个模型来识别立方体中数字的 3D 表示。在规范 2D 版本的 MNIST 中用于识别手写数字的模型不适合 3D 数据集版本。因此,为了处理3D数据,有必要使用3D转换,例如卷积3D和3D最大池化。实际上,Keras支持这种类型的过滤器。

定义一个3D模型来处理我们的3D数据确实非常简单:

        这是一个非常简单的模型,但可以完成这项工作。请记住,您可以在此处获取完整的源代码。

4.2 训练模型

让我们使用随机梯度下降来训练模型。随意使用您喜欢的另一个优化器(adamRMSProp等):

model = define_model()
model.compile(loss=tensorflow.keras.losses.categorical_crossentropy,optimizer=tensorflow.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9), metrics=['accuracy'])
history = model.fit(train_X_3D, train_y, batch_size=32, epochs=4, verbose=1, validation_split=0.2)

我刚刚运行了这段代码,这是我的输出:

4.3 训练结果

        这是我们的第一次审判。仅经过 4 个 epoch,我们在验证集上获得了 96.34% 的准确率!当然,对混淆矩阵进行适当的分析可以更好地理解这种性能。但是,至少在第一次运行中,这些结果是鼓舞人心的!

        请注意,验证损失在 4 个 epoch 中一直在减少。显然,这列火车比必要的时间更早完成。下一次,我们可能会设置更高的纪元数量并使用更详细的停止条件。

让我们看看它在测试数据上的表现如何!

4.4 评估模型

        以下是我们将如何检查性能:

score = model.evaluate(test_X_3D, test_y, verbose=0)
print('Test accuracy: %.2f%% Test loss: %.3f' % (score[1]*100, score[0])) 

        这是我们目前的结果:

        我不得不说我真的很惊讶。这个简单的模型实现了良好的性能,即使数据几乎没有被噪声、旋转和随机颜色映射所修改。

        此外,考虑到数据量和不使用 GPU,训练速度太快了!凉!

        我们可以调整超参数和训练优化器,以轻松获得更好的结果。然而,高性能并不是我们的目标。

        我们学习了如何使用3D卷积,现在我们知道如何创建简单但功能强大的CNN网络来处理我们的3D数据。

五、下一步是

下一步是训练模型以识别从 4D 图像时间序列生成的 3D 数据中的事件。敬请期待!

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

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

相关文章

安装LED透明屏需要注意这4点

随着LED显示屏的广泛应用,各种大屏幕随处可见。透明LED显示屏的安装方法多种多样,涵盖了屋顶式、立柱式、挂式、壁挂式和镶嵌式等多种方式。虽然安装LED透明屏不像安装空调等广告载体那样简单,但也并非极其复杂。考虑到LED透明屏的特殊性&…

LM+retrieval

retrievalLM https://acl2023-retrieval-lm.github.io/ 在input层利用retrieval信息 主要是通过通过相似度计算或者重要性计算在datasets中得到与询问x最相关的k个document,讲文档放在询问x前面组成新的LM的输入,获取额外知识以回答问题。 在intermediate layer…

nacos2.2.3 删除永久实例

问题描述 在nacos2.2.3中删除非临时性实例 报错 解决方案 在命令行下执行命令: curl -X DELETE "http://127.0.0.1:8848/nacos/v1/ns/instance?serviceNamenacos-restTemplate-stock&groupNameDEFAULT_GROUP&namespaceIdpublic&ip192.168.1…

全网最牛,接口自动化-Linux系统安装Jenkins+Ant详细步骤

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 在Linux系统上安装…

GPT-4助力数据分析:提升效率与洞察力的未来关键技术 | 京东云技术团队

摘要 随着大数据时代的到来,数据分析已经成为企业和组织的核心竞争力。然而,传统的数据分析方法往往无法满足日益增长的数据分析需求的数量和复杂性。在这种背景下,ChatGPT-4作为一种先进的自然语言处理技术,为数据分析带来了革命…

FastAPI和Flask:构建RESTful API的比较分析

Python 是一种功能强大的编程语言,广泛应用于 Web 开发领域。FastAPI 和 Flask 是 Python Web 开发中最受欢迎的两个框架。本文将对 FastAPI 和 Flask 进行综合对比,探讨它们在语法和表达能力、生态系统和社区支持、性能和扩展性、开发工具和调试支持、安…

一键批量删除文件名中的空格,轻松整理您的文件

随着数字化时代的到来,我们的电脑里积攒了越来越多的文件,但是随之而来的问题是,文件名中的空格可能会导致一些不便和混乱。为了解决这一问题,我们开发了一款便捷实用的工具,可以一键批量删除文件名中的空格&#xff0…

ORM 之 阿里 Fluent-Mybatis主推动态SQL 你学废了吗?

Mybatis作为在东亚开发者市场上占有绝对的使用优势,在中国大陆上讨论Mybatis优化的项目也是挺活跃。 局限于原始Mybatis繁琐的流程,自动代码生成、声明式SQL、动态SQL,以及诸多细节的内容:多租户、多数据源、数据脱敏、SQL审计、…

MyBatis查询数据库之三(#{}vs${},like查询,resultMap,as,多表查询)

目录 查询操作 1.单表查询 1.1 参数占位符#{}和${} 1.2 ${}的优点 1.3 sql注入问题 ​编辑 面试常问:${}与#{}的区别 1.4 like查询 2.多表查询 2.1 返回字典映射:resultMap 2.2 多表查询 (1)建立 Articalinfo 实体类&a…

所有AI图都在这了

最近一直在玩AI生图,有点拔不出来了,喜欢生图的感觉,日积月累,已经有几千张图片了,想把这些图片都分享出来给大家欣赏,云盘、图片APP,感觉都不好用,最后熬夜码了一个属于自己的图片管…

(树) 剑指 Offer 68 - II. 二叉树的最近公共祖先 ——【Leetcode每日一题】

❓剑指 Offer 68 - II. 二叉树的最近公共祖先 难度:简单 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科 中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是…

2462. 雇佣 K 位工人的总代价

题目描述&#xff1a; 主要思路&#xff1a; 分别维护两个堆&#xff0c;取左右两边最小的那个。 class Solution { public:long long totalCost(vector<int>& costs, int k, int candidates) {priority_queue<int,vector<int>,greater<int>> ql…

清洗无效邮箱地址,让邮件营销更高效

作为一种低成本、高回报的营销手段&#xff0c;电子邮件营销因其传播效率高、营销范围广的特点被广泛应用。虽然现在短视频营销、搜索引擎营销、自媒体营销、内容营销等各种网络营销方式层出不穷。但是在整个网络营销宣传活动中&#xff0c;大多数企业还是会选择把邮件营销作为…

【Java从入门到大牛】File和IO流上篇

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年8月9日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e…

《合成孔径雷达成像算法与实现》Figure3.5

clc clear all close all%参数设置 TBP 100; %时间带宽积 T 10e-6; %脉冲持续时间%参数计算 B TBP/T; %信号带宽 K B/T; …

如何简化大型网络服务提供商中的DDoS防护事宜

分布式拒绝服务&#xff08;DDoS&#xff09;攻击对服务提供商构成重大威胁&#xff0c;它们有可能破坏关键基础设施并扰乱业务运营。然而对于大型服务提供商而言实施和管理有效的DDoS防护解决方案可能非常复杂且成本高昂。 下面&#xff0c;火伞云将和大家一起探讨如何简化大型…

【云原生】kubernetes控制器deployment的使用

目录 ​编辑 1 Controller 控制器 1.1 什么是 Controller 1.2 常见的 Controller 控制器 1.3 Controller 如何管理 Pod 2 Deployment 2.1 创建 deployment 2.2 查看 deployment 2.3 扩缩 deployment 2.4 回滚 deployment 2.5 删除 deployment 1 Controller 控制器 …

idea如何上传项目到github(超详细)

idea如何上传项目到github 1、IDEA配置2、项目上传到本地仓库2.1、创建本地git仓库2.2、Add操作2.3、Commit操作 3、项目上传到Github4、拿到登录Github的token 1、IDEA配置 File-Settings-VersionControl-Git Git的安装路径下bin目录下的git.exe可执行文件 可以直接点 Gene…

【生成式AI】Diffusion Model 原理详解

Diffusion Model 【碎碎念】感觉Diffusion Model里面的数学公式太多了QwQ&#xff0c;所以自己稍微梳理一下。 我自己是听B站的课程&#xff1a;李宏毅课程听懂的&#xff0c;感觉讲得很清楚 概念模型 Diffusion Model的基本思想就是&#xff1a; 把一张图片通过 T T Tstep …

Redis类型检查与命令多态

Redis中用于操作键的命令基本上可以分为两种类型。 其中一种命令可以对任何类型的键执行&#xff0c;比如说DEL命令、EXPIRE命令 、RENAME命令、TYPE命令、OBJECT命令等。 举个例子&#xff0c;以下代码就展示了使用DEL命令来删除三种不同类型的键: # 字符串键 redis> SE…