首頁 後端開發 Python教學 從資料到部署

從資料到部署

Nov 03, 2024 am 01:43 AM

DataWhisper:掌握深度學習專案生命週期

作者:Abdellah Hallou(LinkedIn、Twitter)

歡迎來到深度學習計畫入門指南!本教程為任何想要深入學習令人興奮的深度學習世界的人提供了全面的資源。無論您是初學者還是經驗豐富的開發人員,本指南都將引導您從頭到尾完成建立深度學習專案的過程。

目錄

  • 你將學到什麼
  • 誰該學本教學
  • 需要幫助或有疑問?
  • 讓我們開始吧!
  • 匯入並載入資料集
  • 資料集結構
  • 探索性資料分析 (EDA)
  • 預處理資料
  • 建構模型
  • 評估準確度
  • 儲存並匯出模型
  • 做出預測
  • 部署
    • 建立一個新的flutter專案
    • 設定相機
    • 建立相機螢幕
    • 整合圖片上傳
    • 使用 TensorFlow Lite 進行物體辨識
    • 在影像上運行模型
    • 在對話框中顯示結果
    • 建構使用者介面

你將學到什麼

在本教程中,您將學習在行動應用程式中建立和部署深度學習模型所涉及的基本步驟。我們將涵蓋以下主題:

  1. 準備資料:我們將探索各種資料預處理方法,以確保訓練資料集穩健可靠。

  2. 模型建立:您將了解如何設計和建造 CNN 模型。

  3. 訓練模型:我們將深入研究使用 TensorFlow 訓練深度學習模型的過程。

  4. 在行動應用中部署:模型訓練完成後,我們將引導您完成使用 TensorFlow Lite 將其整合到行動應用中的步驟。您將了解如何隨時隨地進行預測!

誰應該學習本教程

本教學適合對深度學習概念和 Python 程式設計有基本了解的初學者和中級開發人員。無論您是資料科學家、機器學習愛好者還是行動應用開發人員,本指南都將為您提供啟動深度學習專案所需的知識。

需要協助或有疑問嗎?

如果您在學習本教學課程時遇到任何問題、有疑問或需要進一步說明,請隨時在此儲存庫「從資料到部署」中建立 GitHub 問題。我將非常樂意為您提供協助並提供必要的指導。

要建立問題,請按一下此儲存庫頁面頂部的「問題」 選項卡,然後按一下「新問題」 按鈕。請提供盡可能多的有關您所面臨的問題或疑問的背景和詳細資訊。這將幫助我更了解您的疑慮,並為您提供及時、準確的答案。

您的回饋很有價值,也可以幫助其他使用者改進本教學。因此,如果您需要任何幫助,請隨時與我們聯繫。讓我們一起學習,一起成長吧!

讓我們開始吧!

首先,請確保您已安裝所需的依賴項和程式庫。本教程分為幾個易於理解的部分,每個部分涵蓋深度學習專案工作流程的特定方面。請隨意跳至您最感興趣的部分或從頭到尾閱讀。

你準備好了嗎?

導入並載入資料集

讓我們開始對我們的程式碼進行必要的導入。我們將在本教程中使用 Fashion Mnist 資料集。

# Import the necessary libraries
from __future__ import print_function
import keras
from google.colab import drive
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV
import tensorflow as tf
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
登入後複製
登入後複製
登入後複製
登入後複製

資料集結構

在任何深度學習專案中,理解數據至關重要。在深入模型創建和訓練之前,我們首先載入資料並深入了解其結構、變數和整體特徵。

# Load the Fashion MNIST dataset
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
登入後複製
登入後複製
登入後複製
登入後複製

探索性資料分析 (EDA)

現在資料已加載,讓我們執行一些探索性資料分析,以便更好地了解其特徵。

print("Shape of the training data : ",x_train.shape)
print("Shape of the testing data : ",x_test.shape)
登入後複製
登入後複製
登入後複製
登入後複製
Shape of the training data :  (60000, 28, 28)
Shape of the testing data :  (10000, 28, 28)
登入後複製
登入後複製
登入後複製
登入後複製

時尚 MNIST 資料集包含 10 個類別的 70,000 個 灰階影像。這些影像以低解析度顯示單件衣物(28 x 28 像素),如下所示:
From Data to Deployment

60,000 張影像用於訓練網絡,10,000 張影像用於評估網路學習分類影像的準確性。

# Printing unique values in training data
unique_labels = np.unique(y_train, axis=0)
print("Unique labels in training data:", unique_labels)
登入後複製
登入後複製
登入後複製
Unique labels in training data: [0 1 2 3 4 5 6 7 8 9]
登入後複製
登入後複製

標籤是一個整數數組,範圍從 0 到 9。它們對應於圖像代表的服裝類別:
|標籤| R類 |
| - |-|
| 0 | T卹/上衣|
| 1 |褲子|
| 2 |套頭衫|
| 3 |洋裝|
| 4 |外套|
| 5 |涼鞋|
| 6 |襯衫|
| 7 |運動鞋 |
| 8 |包|
| 9 | 及踝靴|

由於類別名稱不包含在資料集中,因此將它們儲存在此處以便稍後在繪製圖像時使用:

# Numeric labels
numeric_labels = np.sort(np.unique(y_train, axis=0))
# String labels
string_labels = np.array(['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'])
# Mapping numeric labels to string labels
numeric_to_string = dict(zip(numeric_labels, string_labels))
print("Numeric to String Label Mapping:")
print(numeric_to_string)
登入後複製
登入後複製
Numeric to String Label Mapping:
{0: 'T-shirt/top', 1: 'Trouser', 2: 'Pullover', 3: 'Dress', 4: 'Coat', 5: 'Sandal', 6: 'Shirt', 7: 'Sneaker', 8: 'Bag', 9: 'Ankle boot'}
登入後複製
登入後複製

預處理數據

在訓練網路之前必須先對資料進行預處理。
我們首先定義資料集中的類別數(本例為 10)和輸入影像的尺寸(28x28 像素)。

# Import the necessary libraries
from __future__ import print_function
import keras
from google.colab import drive
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV
import tensorflow as tf
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
登入後複製
登入後複製
登入後複製
登入後複製

這部分負責重塑輸入影像資料以符合神經網路模型的預期格式。格式取決於所使用的後端(例如 TensorFlow 或 Theano)。在此程式碼片段中,我們使用 K.image_data_format() 檢查影像資料格式,並根據結果應用適當的重塑。

# Load the Fashion MNIST dataset
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
登入後複製
登入後複製
登入後複製
登入後複製

資料中影像的像素值在0到255的範圍內。
在將這些值輸入 CNN 模型之前,將它們縮放到 0 到 1 的範圍。

print("Shape of the training data : ",x_train.shape)
print("Shape of the testing data : ",x_test.shape)
登入後複製
登入後複製
登入後複製
登入後複製

將類別標籤(表示為整數)轉換為二進位類別矩陣格式,這是多類別分類問題所需的。

Shape of the training data :  (60000, 28, 28)
Shape of the testing data :  (10000, 28, 28)
登入後複製
登入後複製
登入後複製
登入後複製

建構模型

在這一步驟中,我們定義並建立用於影像分類的捲積神經網路(CNN)模型。模型架構由多個層組成,例如卷積層、池化層、dropout 層和密集層。 build_model 函數將類別的數量、訓練和測試資料作為輸入,並傳回訓練歷史記錄和建構的模型。

# Printing unique values in training data
unique_labels = np.unique(y_train, axis=0)
print("Unique labels in training data:", unique_labels)
登入後複製
登入後複製
登入後複製
Unique labels in training data: [0 1 2 3 4 5 6 7 8 9]
登入後複製
登入後複製
# Numeric labels
numeric_labels = np.sort(np.unique(y_train, axis=0))
# String labels
string_labels = np.array(['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'])
# Mapping numeric labels to string labels
numeric_to_string = dict(zip(numeric_labels, string_labels))
print("Numeric to String Label Mapping:")
print(numeric_to_string)
登入後複製
登入後複製

評估準確性

為了評估訓練模型的效能,我們根據測試資料進行評估。評估方法用於計算測試損失和準確性。然後這些指標將列印到控制台。

Numeric to String Label Mapping:
{0: 'T-shirt/top', 1: 'Trouser', 2: 'Pullover', 3: 'Dress', 4: 'Coat', 5: 'Sandal', 6: 'Shirt', 7: 'Sneaker', 8: 'Bag', 9: 'Ankle boot'}
登入後複製
登入後複製

From Data to Deployment

num_classes = 10
# input image dimensions
img_rows, img_cols = 28, 28
登入後複製
if K.image_data_format() == 'channels_first':
    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)
登入後複製

儲存並匯出模型

訓練模型後,我們使用 save 方法將其儲存為分層資料格式 (HDF5) 檔案格式。然後透過呼叫 move_to_drive 函數將模型匯出到 Google Drive。此外,使用 h52tflite 函數將模型轉換為 TensorFlow Lite 格式,產生的 TFLite 模型也儲存在 Google Drive 中。傳回已儲存的模型和TFLite模型的路徑。

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
登入後複製

做出預測

為了視覺化模型的預測,我們隨機選擇一組測試影像。該模型使用預測方法預測這些圖像的類別標籤。然後將預測標籤與地面真實標籤進行比較,以使用 matplotlib.
顯示影像及其對應的預測標籤

# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
登入後複製

From Data to Deployment

有關模型的更多信息,請查看以下資源:

  1. https://www.tensorflow.org/tutorials/keras/classification
  2. https://github.com/cmasch/zalando-fashion-mnist/tree/master

部署

建立一個新的 Flutter 項目

在建立新的 Flutter 專案之前,請確保正確安裝 Flutter SDK 和其他 Flutter 應用程式開發相關的要求:https://docs.flutter.dev/get-started/install/windows

專案建立後,我們將實作 UI 以允許使用者拍照或從圖庫上傳映像,並使用匯出的 TensorFlow Lite 模型執行物件辨識。
首先,我們需要安裝這些軟體包:

  1. 相機:0.10.4
  2. 影像選擇器:
  3. tflite:^1.1.2

為此,請複製以下程式碼片段並將其貼到專案的 pubspec.yaml 檔案中:

# Import the necessary libraries
from __future__ import print_function
import keras
from google.colab import drive
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV
import tensorflow as tf
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
登入後複製
登入後複製
登入後複製
登入後複製

在專案的main.dart檔案中匯入必要的套件

# Load the Fashion MNIST dataset
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
登入後複製
登入後複製
登入後複製
登入後複製

配置相機

為了啟用相機功能,我們將使用camera套件。首先,導入必要的套件並實例化相機控制器。使用 availableCameras() 函數取得可用攝影機的清單。在本教程中,我們將使用清單中的第一個相機。

print("Shape of the training data : ",x_train.shape)
print("Shape of the testing data : ",x_test.shape)
登入後複製
登入後複製
登入後複製
登入後複製

創建相機螢幕

建立一個名為 CameraScreen 的新 StatefulWidget,它將處理相機預覽和影像擷取功能。在 initState() 方法中,初始化相機控制器並設定解析度預設。此外,實作 _takePicture() 方法,該方法使用相機控制器捕捉影像。

Shape of the training data :  (60000, 28, 28)
Shape of the testing data :  (10000, 28, 28)
登入後複製
登入後複製
登入後複製
登入後複製

整合圖片上傳

要允許使用者從圖庫上傳映像,請匯入 image_picker 套件。實作 _pickImage() 方法,該方法利用 ImagePicker 類別從圖庫中選取映像。選擇影像後,可以使用 _processImage() 方法對其進行處理。

# Printing unique values in training data
unique_labels = np.unique(y_train, axis=0)
print("Unique labels in training data:", unique_labels)
登入後複製
登入後複製
登入後複製

使用 TensorFlow Lite 進行物件識別

為了執行物件識別,我們將使用 TensorFlow Lite。首先導入 tflite 套件。在 _initTensorFlow() 方法中,從資產載入 TensorFlow Lite 模型和標籤。您可以指定模型和標籤檔案路徑並調整執行緒數和 GPU 委託使用等設定。

# Import the necessary libraries
from __future__ import print_function
import keras
from google.colab import drive
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV
import tensorflow as tf
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
登入後複製
登入後複製
登入後複製
登入後複製

在圖像上運行模型

實作 _objectRecognition() 方法,該方法將影像檔案路徑作為輸入並在影像上運行 TensorFlow Lite 模型。此方法傳回已識別物件的標籤。

# Load the Fashion MNIST dataset
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
登入後複製
登入後複製
登入後複製
登入後複製

在對話方塊中顯示結果

處理影像時,使用 showDialog() 方法在對話方塊中顯示結果。自訂對話方塊以顯示已識別的物件標籤並提供取消選項。

print("Shape of the training data : ",x_train.shape)
print("Shape of the testing data : ",x_test.shape)
登入後複製
登入後複製
登入後複製
登入後複製

建構使用者介面

Shape of the training data :  (60000, 28, 28)
Shape of the testing data :  (10000, 28, 28)
登入後複製
登入後複製
登入後複製
登入後複製

From Data to Deployment
From Data to Deployment

以上是從資料到部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1668
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
Python:遊戲,Guis等 Python:遊戲,Guis等 Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python與C:學習曲線和易用性 Python與C:學習曲線和易用性 Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python和時間:充分利用您的學習時間 Python和時間:充分利用您的學習時間 Apr 14, 2025 am 12:02 AM

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

Python標準庫的哪一部分是:列表或數組? Python標準庫的哪一部分是:列表或數組? Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

學習Python:2小時的每日學習是否足夠? 學習Python:2小時的每日學習是否足夠? Apr 18, 2025 am 12:22 AM

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Python:自動化,腳本和任務管理 Python:自動化,腳本和任務管理 Apr 16, 2025 am 12:14 AM

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python vs. C:了解關鍵差異 Python vs. C:了解關鍵差異 Apr 21, 2025 am 12:18 AM

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

See all articles