立即開始使用 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.pswp.cn/news/35422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35422.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35422.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

了解 Langchain?是個啥?:第 1 部分

一、說明 在日常生活中,我們主要致力于構建端到端的應用程序。我們可以使用許多自動 ML 平臺和 CI/CD 管道來自動化 ml 管道。我們還有像Roboflow和Andrew N.G.的登陸AI這樣的工具來自動化或創建端到端的計算機視覺應用程序。 如果我們想在OpenAI或擁抱臉的幫助下創…

Day 26 C++ list容器(鏈表)

文章目錄 list基本概念定義結構雙向迭代器優點缺點List和vector區別存儲結構內存管理迭代器穩定性隨機訪問效率 list構造函數——創建list容器函數原型示例 list 賦值和交換函數原型 list 大小操作函數原型示例 list 插入和刪除函數原型示例 list 數據存取函數原型注意示例 lis…

論文詳解 ——《SNR-Aware Low-light Image Enhancement》

文章目錄 Abstract1.Introduction2. Related Work3. Our Method3.1 Long- and Short-range Branches3.2 SNR-based Spatially-varying Feature Fusion3.3 SNR-guided Attention in Transformer3.4 Loss Function 4. Experiments4.1. Datasets and Implementation Details4.2 Co…

SpringBoot | 使用newWorkStealingPool和CompletableFuture進行并發異步處理

關注wx: CodingTechWork 需求 一個列表操作需要異步處理每個元素,最終需要將列表各個元素的操作結果統一返回,無需關注該列表中的順序執行。這個線程池不會保證任務的順序執行,即為WorkStealing搶占式的工作。 開發模板 線程池…

基于SpringBoot實現MySQL備份與還原

基于SpringBoot實現MySQL備份與還原,需求是在頁面上對所有的平臺數據執行備份和恢復操作,那么就需要使用代碼去調用MySQL備份和恢復的指令,下面是具體實現步驟; MySQL備份表設計 CREATE TABLE IF NOT EXISTS mysql_backups (id …

6.1 安全漏洞與網絡攻擊

數據參考:CISP官方 目錄 安全漏洞及產生原因信息收集與分析網絡攻擊實施后門設置與痕跡清除 一、安全漏洞及產生原因 什么是安全漏洞 安全漏洞也稱脆弱性,是計算機系統存在的缺陷 漏洞的形式 安全漏洞以不同形式存在漏洞數量逐年遞增 漏洞產生的…

前端開發:數組對象判斷重復的方法詳解

前言 在前端開發過程中,關于數據處理是非常常用的操作,尤其是通過算法處理從后端獲取的數據甚為重要。而且在前端開發中,兩大類型的數據處理是必備的:數組和對象。與其說是數據處理,不如說是數組和對象的處理。實際開發中,關于數組數據的處理所占比例更高,尤其是涉及到表…

使用Flask.Request的方法和屬性,獲取get和post請求參數(二)

1、Flask中的request 在Python發送Post、Get等請求時,我們使用到requests庫。Flask中有一個request庫,有其特有的一些方法和屬性,注意跟requests不是同一個。 2、Post請求:request.get_data() 用于服務端獲取客戶端請求數據。注…

理解ConcurrentSkipListMap(有點類似于并發的TreeMap)

是一個分層的結構。 從最上面開始查找,最后層層往下查。 插入和刪除有可能會引起節點Level的變更。 key是有序的,因此可以看做是并發的TreeMap

ubuntu18.04下配置muduoC++11環境

1.安裝muduo依賴的編譯工具及庫 Cmake sudo apt-get install cmakeBoost sudo apt-get install libboost-dev libboost-test-devcurl、c-ares DNS、google protobuf sudo apt-get install libcurl4-openssl-dev libc-ares-dev sudo apt-get install protobuf-compiler libp…

帶你了解SpringBoot支持的復雜參數--自定義對象參數-自動封裝

😀前言 本篇博文是關于SpringBoot 在響應客戶端請求時支持的復雜參數和自定義對象參數,希望您能夠喜歡😊 🏠個人主頁:晨犀主頁 🧑個人簡介:大家好,我是晨犀,希望我的文章…

go struct 的常見問題

go struct 的常見問題 1. 什么是struct?2. 如何聲明、定義和創建一個struct?3. struct和其他數據類型(如數組、切片、map等)有什么區別?4. 如何訪問struct字段?5. struct是否支持繼承,是否支持重…

JavaWeb_xml

文章目錄 1.xml是什么?2.xml的用途 1.xml是什么? xml 是可擴展的標記性語言 2.xml的用途 1、用來保存數據,而且這些數據具有自我描述性 2、它還可以做為項目或者模塊的配置文件 3、還可以做為網絡傳輸數據的格式(現在 JSON 為主…

【Github】SourceTree技巧匯總

sourceTree登錄github賬戶 會跳轉到瀏覽器端 按照Git Flow 初始化倉庫分支 克隆遠程倉庫到本地 推送變更到遠程倉庫 合并分支 可以看到目前的本地分支(main、iOS_JS)和遠程分支(origin/main、origin/HEAD、origin/iOS_JS)目前所處…

5134. 簡單判斷

文章目錄 Question輸入樣例1: 3 7 0 輸出樣例1: IdeasCode Question 給定三個非負整數 x,y,z ,請你按如下要求進行判斷并輸出相應結果: 如果 x>yz ,則輸出 。 如果 y>xz ,則輸出 -。 如果 xy 且 z0…

pip install總是報錯:ValueError: Trusted host URL must include a host part: ‘#‘

一、問題現象 報錯信息如下&#xff1a; Traceback (most recent call last):File "/user_name/anaconda3/bin/pip", line 11, in <module>sys.exit(main())^^^^^^File "/user_name/anaconda3/lib/python3.11/site-packages/pip/_internal/cli/main.py&…

14_基于Flink將pulsar數據寫入到HBase

3.7.基于Flink將數據寫入到HBase 3.7.1.編寫Flink完成數據寫入到Hbase操作, 完成數據備份, 便于后續進行即席查詢和離線分析 3.7.1.1.HBase基本介紹 hbase是基于Google發布bigTable論文產生一款軟件, 是一款noSQL型數據, 不支持SQL. 不支持join的操作, 沒有表關系, 不支持事…

Codeforces 757F. Team Rocket Rises Again 最短路 + 支配樹

題意&#xff1a; 給你 n 個點&#xff0c; m 條雙向邊&#xff0c;求爆了某個點后&#xff0c;從s出發的最短路距離&#xff0c;會改變最多的數量。 分析&#xff1a; 建出最短路樹&#xff08;DAG&#xff09;之后&#xff0c;在最短路樹上跑一下支配樹&#xff0c;找出支…

鏈表OJ詳解

&#x1f495;人生不滿百&#xff0c;常懷千歲憂&#x1f495; 作者&#xff1a;Mylvzi 文章主要內容&#xff1a;鏈表oj詳解 題目一&#xff1a;移除元素 題目要求&#xff1a; 畫圖分析&#xff1a; 代碼實現&#xff1a; struct ListNode* removeElements(struct List…