溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用代碼能實現(xiàn)AI圖像識別

發(fā)布時間:2021-12-18 13:47:11 來源:億速云 閱讀:343 作者:柒染 欄目:網絡安全

本篇文章給大家分享的是有關如何使用代碼能實現(xiàn)AI圖像識別,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

隨著性能強大的計算機芯片比如NVIDIA  GPU和頂尖的圖像識別深度學習算法的出現(xiàn),比如Alex Krizhevsky等在2012年創(chuàng)造的AlexNet 算法、Kaeming  He等在2015年創(chuàng)造的ResNet 算法、Forrest Landola等在2016年創(chuàng)造的SqueezeNet 算法、Gao  Huang等在2016年創(chuàng)造的DenseNet 算法等,讓自定義人工智能模型通過學習一組圖片中的事物進而識別其他同類型事物成為可能。

訓練一個可以識別圖片中事物的人工智能模型涉及到很多應用數學和深度學習庫的專業(yè)知識,更別說還要花費大量時間和承受巨大壓力去寫實現(xiàn)這種算法的代碼以及使其和圖像相匹配。這就是我們要解決的問題所在。

我們在AI   Common的小組已經建立了一個只要五行代碼就可以訓練人工智能模型來識別任何物體的Python庫,這個python庫叫作ImageAI。建立這個庫是為了讓學生、開發(fā)者、研究人員等不同專業(yè)水平的人只用五行代碼就能建立起擁有最頂尖的計算機視覺功能的系統(tǒng)和應用。現(xiàn)在,讓我們開始建立你的第一個圖像識別人工智能模型。

既然你已經明白如何準備用于訓練人工智能模型的圖片數據集,我們將繼續(xù)指導你使用ImageAI訓練一個人用于識別職業(yè)的工智能模型。

首先你必須通過這個鏈接下載IdenProf 數據集壓縮包。你也可以用下面的鏈接查看用于識別職業(yè)的人工智能模型的所有細節(jié)和樣本結果。

因為訓練人工智能模型需要高性能計算機系統(tǒng),我強烈建議你確保用來做模型訓練的計算機擁有NVIDIA GPU。你也可以使用Google Colab(谷歌實驗室)來做這次實驗,它可以提供一個免費的NVIDIA K80 GPU。

接下來你必須安裝ImageAI 和它的依賴模塊。

1)從Python官網下載和安裝Pyhton3

https://python.org

2)使用pip安裝如下依賴包

i. Tensorflow

pip install tensorflow

ii. Numpy

pip install numpy

iii. SciPy

pip install scipy

iv. OpenCV

pip install opencv-python

v. Pillow

pip install pillow

vi. Matplotlib

pip install matplotlib

vii. H5py

pip install h6py

viii. Keras

pip install keras

ix. ImageAI

pip3 installhttps://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.2/imageai-2.0.2-py3-none-any.whl

新建一個python文件,比如“FirstTraining.py”,將IdenProf數據集壓縮包拷貝到你的Python文件所在目錄并解壓。然后拷貝下面的代碼到python文件。(比如FirstTraining.py)

from imageai.Prediction.Custom import ModelTraining

model_trainer = ModelTraining()
model_trainer.setModelTypeAsResNet()
model_trainer.setDataDirectory("idenprof")
model_trainer.trainModel(num_objects=10, num_experiments=200, enhance_data=True, batch_size=32, show_network_summary=True)


就是它!那是你訓練人工智能模型所需的所有代碼。運行前,讓我們來解釋下這些代碼。

在第一行,導入ImageAI的模型訓練類。在第二行,創(chuàng)建一個模型訓練類實例。在第三行,我們設置模型類型為ResNet(這里有4個模型類型可供選擇,分別為SqueezeNet,  ResNet, InceptionV3  和DenseNet)。在第四行,設置數據目錄(數據集目錄)為你解壓的數據集文件夾。然后第五行,我們調用trainModel  函數,并給下列參數賦值:

  • number_objects :數據集中不同職業(yè)的分類數;

  • num_experiments  :為了獲得最大準確率,模型學習數據集中所有圖片的次數;

  • Enhance_data (可選) :用來告訴模型訓練器創(chuàng)建數據集中修改好圖片的副本來確保獲得最大準確率;

  • batch_size:直到學習完所有圖片前,訓練器一次學習的圖片數;

  • Show_network_summary (可選):用于顯示你當前使用訓練人工智能模型的類型結構;

  • 現(xiàn)在你可以開始運行Python文件開始訓練了。當訓練開始時,你可以看到如下的結果:


Total params: 23,608,202

Trainable params: 23,555,082

Non-trainable params: 53,120

______________________________________

Using Enhanced Data Generation

Found 4000 images belonging to 4 classes.

Found 800 images belonging to 4 classes.

JSON Mapping for the model classes saved to  C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json

Number of experiments (Epochs) :  200

Epoch 1/100

1/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500

2/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500

3/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500

..............................,
..............................,
..............................,

279/280 [===========================>..] - ETA: 1s - loss: 2.3097 - acc: 0.0625Epoch 00000: saving model to C:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h6


280/280 [==============================] - 51s - loss: 2.3095 - acc: 0.0600 - val_loss: 2.3026 - val_acc: 0.1000

讓我們詳細解釋下以上內容:

1.“JSON  Mapping for the model classes saved to  C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json”這段話表示模型訓練器已經被保存為JSON文件,可以使用自定義圖像預測類來識別其他圖片(后面將對其進一步解釋)。

2.Epoch 1/200這行表示網絡執(zhí)行了目標值200個訓練的第一個訓練。

3.1/280 [>………………………..]?—?ETA: 52s?—?loss: 2.3026?—?acc: 0.2500 這行表示當前實驗已經訓練的批次。

4.Epoch  00000: saving model to  C:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h6這行表示當前訓練后保存的模型。ex_000表示當前階段的實驗,acc0.100000和valacc表示當前實驗后的模型準確率(最高準確率為1.0)。這個結果幫助我們知道哪個圖像預測模型是表現(xiàn)最好的。訓練完模型后,你可以使用準確率最高模型的“CustomImagePrediction”類進行圖片預測。

以防你缺少NVIDIA GPU而無法進行人工智能模型訓練,出于本教程的目標,我們提供了一個用IdenProf數據集訓練好的人工智能模型,你可以用它來進行數據集中圖片的職業(yè)預測。

這個模型在訓練61次后已經取得了79%的準確率。點擊此鏈接下載該模型。
同樣,如果你沒有進行模型訓練,通過鏈接下載IdenProf模型的JSON文件。然后,你就可以跟隨如下指令,使用模型進行圖像識別了。

下一步,創(chuàng)建一個Python文件并命名比如FirstCustomImageRecognition.py   ,拷貝你下載的人工智能模型或者你訓練的準確率最高的模型,將其復制到你新建Python文件所在目錄。同樣拷貝下載的或者訓練產生的JSON文件,將其復制到新建Python文件所在目錄。

拷貝一個或多個屬于IdenProf數據集中職業(yè)種類的圖片到新建Python文件所在目錄。然后拷貝下面的代碼到你的Python文件中。

from imageai.Prediction.Custom import CustomImagePrediction
import os

execution_path = os.getcwd()

prediction = CustomImagePrediction()
prediction.setModelTypeAsResNet()
prediction.setModelPath("idenprof_061-0.7933.h6")
prediction.setJsonPath("idenprof_model_class.json")
prediction.loadModel(num_objects=10)

predictions, probabilities = prediction.predictImage("image.jpg", result_count=3)

for eachPrediction, eachProbability in zip(predictions, probabilities):
print(eachPrediction , " : " , eachProbability)

請看如下的樣本圖片和結果。


是不是很簡單!現(xiàn)在讓我們解釋上面產生這個預測結果的代碼。

第一和第二行代碼分別導入了ImageAI中用于圖像識別的CustomImagePrediction   類(自定義圖像預測類)和os類。第三行代碼創(chuàng)建了一個變量并賦值了一個路徑,該路徑下包含Python文件(比如FirstCustomImageRecognition.py文件)和下載或訓練的ResNet模型文件。

以上,我們用第4行代碼創(chuàng)建了一個ImagePrediction()類實例,然后在第5行代碼通過調用.setModelTypeAsResNet()  來設置預測對象的模型類型為ResNet  。然后在第6行,我們設置模型路徑為拷貝到項目文件夾的人工智能模型路徑(idenprof_061–0.7933.h6)。在第7行,我們設置JSON文件路徑,在第8行加載模型。最后進行圖像預測并打印結果到命令行。

以上就是如何使用代碼能實現(xiàn)AI圖像識別,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ai
AI