使用 Python 對服裝影像進行分類
影像分類是一種機器學習任務,它涉及識別影像中的物體或場景。這是一項具有挑戰性的任務,但在現實世界的問題中有很多應用,例如人臉識別、物體檢測和醫學影像分析。
在本文中,我們將討論如何使用 Python 對服裝影像進行分類。我們將使用Fashion-MNIST資料集,這是一個包含 60,000 張 10 種不同服裝物品的灰度影像的集合。我們將構建一個簡單的神經網路模型來對這些影像進行分類。
匯入模組
第一步是匯入必要的模組。我們將需要以下模組
numpy: 用於處理陣列
matplotlib.pyplot: 用於繪製圖像
tensorflow: 用於構建和訓練神經網路。
請考慮以下命令來匯入模組。
import numpy as np import matplotlib.pyplot as plt import tensorflow as tf
載入和預處理資料
下一步是載入 Fashion-MNIST 資料集。此資料集包含在 TensorFlow 庫中。我們可以使用以下程式碼載入它
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
x_train 和 x_test 變數分別包含訓練和測試影像。y_train 和 y_test 變數分別包含訓練和測試影像的標籤。
Fashion-MNIST 資料集中的影像大小為28x28畫素。它們也是灰度影像,這意味著它們只有一個通道。在訓練模型之前,我們需要預處理影像。以下程式碼顯示瞭如何執行此操作
x_train = x_train.reshape(60000, 28, 28, 1) x_test = x_test.reshape(10000, 28, 28, 1) x_train = x_train / 255.0 x_test = x_test / 255.0
此程式碼將影像重新整形為具有第四個維度的影像,該維度表示通道數。它還將影像標準化為 0 到 1 之間的值。
構建模型
現在資料已預處理,我們可以構建模型了。我們將使用一個具有兩個隱藏層的神經網路。以下程式碼顯示瞭如何構建模型
model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28, 1)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ])
模型中的第一層是扁平化層。此層將 28x28 影像展平為 784 維向量。接下來的兩層是密集層。這些層是全連線層,這意味著一層中的每個神經元都連線到下一層中的每個神經元。最後一層是 softmax 層。此層輸出 10 個可能類別的機率分佈。
訓練模型
現在模型已構建,我們可以訓練它了。我們將使用 Adam 最佳化器和分類交叉熵損失函式。以下程式碼顯示瞭如何訓練模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=10)
模型訓練了 10 個週期。一個週期是指對訓練資料進行完整的一次遍歷。經過 10 個週期後,模型已學會以大約 92% 的準確率對服裝影像進行分類。
評估模型
現在模型已訓練完成,我們可以使用測試資料對其進行評估。以下程式碼顯示瞭如何執行此操作
loss, accuracy = model.evaluate(x_test, y_test) print('Test loss:', loss) print('Test accuracy:', accuracy)
該模型實現了 0.27 的測試損失和 91.4% 的測試準確率。
結論
總之,我們討論瞭如何使用 Python 對服裝影像進行分類。我們使用了 Fashion-MNIST 資料集,這是一個包含 60,000 張 10 種不同服裝物品的灰度影像的集合。我們構建了一個簡單的神經網路模型來對這些影像進行分類。該模型實現了 91.4% 的測試準確率。這是一個很有希望的結果,它表明機器學習可以用於解決現實世界的問題。
將來,我們可以透過使用更大的資料集、使用更復雜的模型以及使用更好的最佳化演算法來提高模型的準確性。我們還可以使用該模型即時地對服裝影像進行分類。這將對線上購物和自助結賬機等應用很有用。