圖像分類是人工智能領(lǐng)域的一個熱門話題,通俗來講,就是根據(jù)各自在圖像信息中反映的不同特征,把不同類別的目標區(qū)分開。圖像分類利用計算機對圖像進行定量分析,把圖像或圖像中的每個像元或區(qū)域劃歸為若干個類別中的某一種,代替人的視覺判讀。
在實際生活中,我們也會遇到圖像分類的應用場景,例如我們常用的通過拍照花朵來識別花朵信息,通過人臉匹對人物信息等。通常,圖像識別或分類工具都是在客戶端進行數(shù)據(jù)采集,在服務端進行運算獲得結(jié)果。因此,一般都會有專門的 API 來實現(xiàn)圖像識別,云廠商也會有償提供類似的能力:
華為云圖像標簽本文將嘗試通過一個有趣的 Python 庫,快速將圖像分類的功能搭建在云函數(shù)上,并且和 API 網(wǎng)關(guān)結(jié)合,對外提供 API 功能,實現(xiàn)一個 Serverless 架構(gòu)的 " 圖像分類 API"。
入門 ImageAI首先,我們需要一個依賴庫:ImageAI。
什么是 ImageAI 呢?其官方文檔是這樣描述的:
ImageAI 是一個 python 庫,旨在使開發(fā)人員能夠使用簡單的幾行代碼構(gòu)建具有包含深度學習和計算機視覺功能的應用程序和系統(tǒng)。ImageAI 本著簡潔的原則,支持最先進的機器學習算法,用于圖像預測、自定義圖像預測、物體檢測、視頻檢測、視頻對象跟蹤和圖像預測訓練。ImageAI 目前支持使用在 ImageNet-1000 數(shù)據(jù)集上訓練的 4 種不同機器學習算法進行圖像預測和訓練。ImageAI 還支持使用在 COCO 數(shù)據(jù)集上訓練的 RetinaNet 進行對象檢測、視頻檢測和對象跟蹤。 最終,ImageAI 將為計算機視覺提供更廣泛和更專業(yè)化的支持,包括但不限于特殊環(huán)境和特殊領(lǐng)域的圖像識別。
簡單理解,就是 ImageAI 依賴庫可以幫助用戶完成基本的圖像識別和視頻的目標提取。不過,ImageAI 雖然提供一些數(shù)據(jù)集和模型,但我們也可以根據(jù)自身需要對其進行額外的訓練,進行定制化拓展。
其官方代碼給出了這樣一個簡單的 Demo:
from imageai.Prediction import ImagePrediction
import os
execution_path = os.getcwd()
prediction = ImagePrediction()
prediction.setModelTypeAsResNet()
prediction.setModelPath(os.path.join(execution_path, "resnet50_weights_tf_dim_ordering_tf_kernels.h5"))
prediction.loadModel()
predictions, probabilities = prediction.predictImage(os.path.join(execution_path, "1.jpg"), result_count=5 )
for eachPrediction, eachProbability in zip(predictions, probabilities):
print(eachPrediction + " : " + eachProbability)
我們可以在本地進行初步運行,指定圖片1.jpg為下圖時:
可以得到結(jié)果:
convertible : 52.459537982940674
sports_car : 37.61286735534668
pickup : 3.175118938088417
car_wheel : 1.8175017088651657
minivan : 1.7487028613686562
讓 ImageAI 上云(部署到 Serverless 架構(gòu)上)通過上面的 Demo,我們可以考慮將這個模塊部署到云函數(shù):
首先,在本地創(chuàng)建一個 Python 的項目:mkdir imageDemo新建文件:vim index.py根據(jù)云函數(shù)的一些特殊形式,我們對 Demo 進行部分改造將初始化的代碼放在外層;將預測部分當做觸發(fā)所需要執(zhí)行的部分,放在入口方法中(此處是 main_handler);云函數(shù)與 API 網(wǎng)關(guān)結(jié)合對二進制文件支持并不是十分的友善,所以此處通過 base64 進行圖片傳輸;入?yún)⒍閧"picture": 圖片的 base64},出參定為:{"prediction": 圖片分類的結(jié)果}實現(xiàn)的代碼如下:
閱讀更多如果你想閱讀更多相關(guān)內(nèi)容,可以點擊文末了解更多查看