圖像分類是計算機視覺的最重要應用之一。它的應用範圍包括從自動駕駛汽車中的物體分類到醫療行業中的血細胞識別,從製造業中的缺陷項目到建立可以對戴口罩的人進行分類的系統。在所有這些行業中,圖像分類都以一種或另一種方式使用。他們是如何做到的呢?他們使用哪個框架?
你必須已閱讀很多有關不同深度學習框架(包括TensorFlow,PyTorch,Keras等)之間差異的信息。TensorFlow和PyTorch無疑是業內最受歡迎的框架。下面我們將講解如何在PyTorch中訓練圖像分類模型。
PyTorch概述
PyTorch在深度學習社區中越來越受歡迎,並且被深度學習從業者廣泛使用,PyTorch是一個提供Tensor計算的Python軟體包。此外,張量是多維數組,就像NumPy的ndarray一樣,它們也可以在GPU上運行。
PyTorch的一個獨特功能是它使用動態計算圖。所述PyTorch的Autograd包從張量構建計算圖和自動計算梯度。而不是具有特定功能的預定義圖形。
PyTorch為我們提供了一個框架,可以隨時隨地構建計算圖,甚至在運行時更改它們。特別是,對於我們不知道創建神經網絡需要多少內存的情況,這很有用。你可以使用PyTorch應對各種深度學習挑戰。以下是一些挑戰:
圖像(檢測,分類等)
文字(分類,生成等)
強化學習
MNIST數據集
在開始之前,讓我們了解數據集。在本文中,我們將解決流行的MNIST問題。這是一個數字識別任務,其中我們必須將手寫數字的圖像分類為0到9這10個類別之一。
在MNIST數據集中,我們具有從各種掃描的文檔中獲取的數字圖像,其尺寸規格化並居中。隨後,每個圖像都是28 x 28像素的正方形(總計784像素)。數據集的標準拆分用於評估和比較模型,其中60,000張圖像用於訓練模型,而單獨的10,000張圖像集用於測試模型。
現在,我們也了解了數據集。因此,讓我們在PyTorch和TensorFlow中使用CNN構建圖像分類模型。我們將從在PyTorch中實現開始。我們將在google colab中實現這些模型,該模型提供免費的GPU以運行這些深度學習模型。
在PyTorch中實現CNN
讓我們首先導入所有庫:
我們還要在Google colab上檢查PyTorch的版本:
因此,我正在使用1.5.1版本的PyTorch。如果您使用任何其他版本,則可能會收到一些警告或錯誤,因此您可以更新到此版本的PyTorch。我們將對圖像執行一些轉換,例如對像素值進行歸一化,因此,讓我們也定義這些轉換:
現在,讓我們加載MNIST數據集的訓練和測試集:
接下來,我定義了訓練和測試加載器,這將幫助我們分批加載訓練和測試集。我將批量大小定義為64:
首先讓我們看一下訓練集的摘要:
因此,在每個批次中,我們有64個圖像,每個圖像的大小為28,28,並且對於每個圖像,我們都有一個相應的標籤。讓我們可視化訓練圖像並查看其外觀:
它是數字0的圖像。類似地,讓我們可視化測試集圖像:
在測試集中,我們還有一批64號。現在讓我們定義架構
定義模型架構
我們將在這裡使用CNN模型。因此,讓我們定義並訓練該模型:
我們還定義優化器和損失函數,然後我們將看一下該模型的摘要:
因此,我們有2個卷積層,這將有助於從圖像中提取特徵。這些卷積層的要素傳遞到完全連接的層,該層將圖像分類為各自的類別。現在我們的模型架構已經準備好,讓我們訓練這個模型十個時期:
可以看到訓練隨著時代的增加而減少。這意味著我們的模型是從訓練集中學習的模式。讓我們在測試集上檢查該模型的性能:
因此,我們總共測試了10000張圖片,並且該模型在預測測試圖片的標籤方面的準確率約為96%。這是ni 可以在PyTorch中構建卷積神經網絡的方法.