立即开始使用 3D 图像

一、说明

        这个故事介绍了使用这种类型的数据来训练机器学习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.rhkb.cn/news/83372.html

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

相关文章

8月9日上课内容 nginx负载均衡

负载均衡工作当中用的很多的,也是面试会问的很重要的一个点 负载均衡:通过反向代理来实现(nginx只有反向代理才能做负载均衡) 正向代理的配置方法(用的较少) 反向代理的方式:四层代理与七层代…

【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

牛客小白月赛75C题题解

文章目录 方豆子问题建模问题分析代码 方豆子 问题建模 给定一个整数n,要求输出n级好豆豆,n级好豆豆由3个n-1级好豆豆和1个n-1级坏豆豆组成,已经给出了1级好豆豆和1级坏豆豆。 问题分析 由于最终的豆豆是由其上一级的豆豆产生的&#xff0…

单片机外部晶振故障后自动切换内部晶振——以STM32为例

单片机外部晶振故障后自动切换内部晶振——以STM32为例 作者日期版本说明Dog Tao2023.08.02V1.0发布初始版本 文章目录 单片机外部晶振故障后自动切换内部晶振——以STM32为例背景外部晶振与内部振荡器STM32F103时钟系统STM32F407时钟系统 代码实现系统时钟设置流程时钟源检测…

ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用全流程科研能力提升

查看原文>>>ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合能力 本文将利用ArcGIS Pro 将您的 GIS 工作组织到工程中,您可以使用 ArcGIS Pro 映射 2D 和 3D 数据。借助 ArcGIS Pro&#xff…

float 属性的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ float 是什么?⭐ float 属性值⭐ 使用 float 的注意事项:⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门…

力扣hot100刷题记录

二刷hot100&#xff0c;坚持每天打卡&#xff01;&#xff01;&#xff01; 1. 两数之和 // 先求差&#xff0c;再查哈希表 public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> map new HashMap<>();for(int i 0;i<nums.length;i){int key …

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 实验四 蜂鸣器

目录 前言 一、原理图及知识点介绍 1.1、蜂鸣器原理图&#xff1a; 二、代码分析 前言 第一个实验:51单片机&#xff08;普中HC6800-EM3 V3.0&#xff09;实验例程软件分析 实验一 点亮第一个LED_ManGo CHEN的博客-CSDN博客 第二个实验:51单片机&#xff08;普中HC6800-EM…

《2023年中国企业数字化转型发展白皮书》发布

导读 本报告主要采用市场调查、行业深度访谈、桌面研究等方法&#xff0c;并使用艾媒咨询旗下各大数据计算系统和相关计算模型。 对部分相关的公开信息进行筛选&#xff0c;通过对行业专家、相关企业与网民进行深度访谈&#xff0c;了解相关行业主要情况&#xff0c;获得相应…

解决Qt的列表加载大量数据卡顿的问题

问题概述 本人在使用QListView插入大量数据时&#xff0c;界面卡顿十分严重。数据量大概只有上千左右&#xff0c;但是每个Item的内容比较多。当数据不停地插入一段时间后&#xff0c;卡顿到鼠标的移动都有点困难。 解决思路 QListView是典型的MVC思想的产物。界面呈现出来的数…

创建型模式-单例模式

文章目录 一、创建型模式1. 单例设计模式1.1 单例模式的结构1.2 单例模式的实现&#xff08;1&#xff09;饿汉式-方式1&#xff08;静态变量方式&#xff09;&#xff08;2&#xff09;饿汉式-方式2&#xff08;静态代码块方式&#xff09;&#xff08;3&#xff09;懒汉式-方…

vue+element 下载压缩包和导出

export function goodsInspectionReportDwnloadZip (params) {return axios({url: "/warehouse-entry-server/v1/goodsInspectionReport/downloadZip",method: "get",params,responseType: "blob"}) } //下载handleDownloadFile() {if (!this.$r…

AMBA总线(AHB)

1.AMBA AMBA(Advanced Microcontroller Bus Architecture)高级微控制器总线结构&#xff0c;定义了用于设计高性能嵌入式微控制器的片上通信标准。   AMBA规范中定义了三种不同的总线&#xff1a;   &#xff08;1&#xff09;高级高性能总线&#xff08;Advanced High-per…

基于nodejs+vue+uniapp微信小程序的短视频分享系统

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 3.1小程序端 用户注册页面&#xff0c;输入用户的个人信息点击注册即可。 注册完成后会返回到登录页面&#xff0c;用户输入自己注…

无人车沿着指定线路自动驾驶与远程控制的实践应用

有了前面颜色识别跟踪的基础之后&#xff0c;我们就可以设定颜色路径&#xff0c;让无人车沿着指定线路做自动驾驶了&#xff0c;视频&#xff1a;PID控制无人车自动驾驶 有了前几章的知识铺垫&#xff0c;就比较简单了&#xff0c;也是属于颜色识别的一种应用&#xff0c;主要…

神码ai火车头伪原创设置【php源码】

大家好&#xff0c;给大家分享一下python编写学生信息管理系统的学生信息保存在哪里&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 火车头采集ai伪原创插件截图&#xff1a; 要求描述&#xff1a; 学生的信息包括&#xff1a;学号&#…

蓝牙资讯|苹果发布AirPods最新开发者固件,最新功能引人关注

苹果面向 AirPods 耳机发布了开发者固件更新 AirPods 6.0 Beta 3&#xff0c;最新内部版本号为 6A5289c。 本次更新适用于 AirPods 3、AirPods Pro 2 和 AirPods Max&#xff0c;不过并非所有 AirPods 耳机都获得了更新。包含5 种新功能 / 新特性&#xff1a; 自适应音频&am…

MySQL5.7 与 MariaDB10.1 审计插件兼容性验证

这是一篇关于发现 MariaDB 审计插件导致 MySQL 发生 crash 后&#xff0c;展开适配验证并进行故障处理的文章。 作者&#xff1a;官永强 爱可生DBA 团队成员&#xff0c;擅长 MySQL 运维方面的技能。热爱学习新知识&#xff0c;亦是个爱打游戏的宅男。 本文来源&#xff1a;原创…

flask使用cookie (设置cookie与查看cookie内容)

1.flask包cookie的使用 设置cookie app.route(/set_cookie) def set_cookie():resp make_response(Setting cookie)resp.set_cookie(username, John)return resp查看cookie: app.route(/get_cookie) def get_cookie():username request.cookies.get(username)return Welco…

Elasticsearch之kibana相关命令

1.中文分词器相关命令 2.拼音分词器相关命令