令人欣慰的是,我們已經成功地讓機器人具備了通過榜樣學習和感知周圍環境的與生俱來的能力。 根本的挑戰是那些教計算機像人類一樣“看”的人需要更多的時間和精力。
但是,當我們考慮到這項技能目前為組織和企業提供的實用價值時,這種努力是值得的。 在本文中,您將了解圖像分類、它的工作原理及其實際實現。 讓我們開始。
什麼是圖像分類?
將圖像輸入到 神經網絡 並讓它為該圖片輸出某種形式的標籤稱為圖像識別。 網絡的輸出標籤將對應於預定義的類。
可能有許多類分配給圖片,或者只是一個。 當只有一個類時,經常使用“識別”一詞,而當有多個類時,則經常使用“分類”一詞。
物體檢測 是圖片分類的一個子集,其中對象的特定實例被檢測為屬於給定類別,例如動物、車輛或人類。
圖像分類是如何工作的?
計算機分析像素形式的圖像。 它通過將圖片視為矩陣的集合來實現這一點,矩陣的大小由圖像分辨率決定。 簡單地說,圖片分類是從計算機的角度利用算法研究統計數據。
圖像分類是在數字圖像處理中通過將像素分組到預定的組或“類”來完成的。 該算法將圖像劃分為一系列值得注意的特徵,從而減輕了最終分類器的負擔。
這些品質使分類器了解圖像的含義和潛在的分類。 因為圖片分類的其餘過程都依賴於它,所以特徵提取方法是最關鍵的階段。
提供的數據 該算法在圖像分類中也很重要,尤其是監督分類。 與基於類別的數據不平衡以及低圖片和註釋質量的糟糕數據集相比,優化良好的分類數據集表現出色。
在 python 中使用 Tensorflow 和 Keras 進行圖像分類
我們將使用 CIFAR-10 數據集(包括飛機、飛機、鳥類和其他 7 種事物)。
1. 安裝要求
下面的代碼將安裝所有先決條件。
2. 導入依賴
在 Python 中創建一個 train.py 文件。 下面的代碼將導入 TensorFlow 和 Keras 依賴項。
3. 初始化參數
CIFAR-10 僅包含 10 個圖片類別,因此 num classes 僅指要分類的類別數量。
4. 加載數據集
該函數使用 TensorFlow Datasets 模塊加載數據集,我們將 with info 設置為 True 以獲取有關它的一些信息。 您可以將其打印出來以查看哪些字段及其值,我們將使用該信息來檢索訓練和測試集中的樣本數量。
5. 創建模型
現在我們將構建三層,每層由兩個具有最大池和 ReLU 激活功能的 ConvNet 組成,然後是一個完全連接的 1024 單元系統。 與最先進的模型 ResNet50 或 Xception 相比,這可能是一個相對較小的模型。
6. 訓練模型
我使用 Tensorboard 測量每個 epoch 的準確率和損失,並在導入數據和生成模型後為我們提供漂亮的顯示。 運行以下代碼; 根據您的 CPU/GPU,訓練將需要幾分鐘時間。
要使用 tensorboard,只需在終端或當前目錄的命令提示符下鍵入以下命令:
您會看到驗證損失正在減少,準確率上升到大約 81%。 這太妙了!
測試模型
訓練完成後,最終的模型和權重保存在結果文件夾中,允許我們訓練一次並隨時進行預測。 遵循名為 test.py 的新 python 文件中的代碼。
7. 導入實用程序進行測試
8.製作python目錄
製作一個 Python 字典,將每個整數值轉換為數據集的相應標籤:
9.加載測試數據和模型
以下代碼將加載測試數據和模型。
10. 評估與預測
以下代碼將對青蛙圖像進行評估和預測。
11。 結果
該模型以 80.62% 的準確率預測青蛙。
結論
好的,我們完成了這一課。 雖然 80.62% 對小 CNN 來說並不好,但我強烈建議您更改模型或查看 ResNet50、Xception 或其他尖端模型以獲得更好的結果。
現在您已經在 Keras 中構建了您的第一個圖像識別網絡,您應該對模型進行試驗,以了解不同的參數如何影響其性能。
發表評論