使用SCF進行影象分類
阿新 • • 發佈:2020-12-30
技術標籤:serverless案例
背景
影象相比文字能夠提供更加生動、容易理解及更具藝術感的資訊,是人們轉遞與交換資訊的重要來源,也是影象識別領域的一個重要問題,影象分類是根據影象的語義資訊將不同類別影象區分開來,是計算機視覺中重要的基本問題,也是影象檢測、影象分割、物體跟蹤、行為分析等其他高層視覺任務的基礎。影象分類在很多領域有廣泛應用,包括安防領域的人臉識別和智慧視訊分析等,交通領域的交通場景識別,網際網路領域基於內容的影象檢索和相簿自動歸類,醫學領域的影象識別等。一般來說,影象分類通過手工特徵或特徵學習方法對整個影象進行全部描述,然後使用分類器判別物體類別,因此如何提取影象的特徵至關重要。但是如果靠自己實現一個影象識別演算法是不容易的,我們可以使用ImageAI來完成這樣一個艱鉅的任務。
技術方案
使用雲函式實現,詳細步驟如下:
- 在雲控制檯新建python雲函式模板
- 編寫程式碼,實現如下:
from imageai.Prediction import ImagePrediction import os, base64, random execution_path = os.getcwd() prediction = ImagePrediction() prediction.setModelTypeAsSqueezeNet() prediction.setModelPath(os.path.join(execution\_path, "squeezenet\_weights\_tf\_dim\_ordering\_tf\_kernels.h5")) prediction.loadModel() def main_handler(event, context): imgData = base64.b64decode(event["body"]) fileName = '/tmp/' + "".join(random.sample('zyxwvutsrqponmlkjihgfedcba', 5)) with open(fileName, 'wb') as f: f.write(imgData) resultData = {} predictions, probabilities = prediction.predictImage(fileName, result\_count=5) for eachPrediction, eachProbability in zip(predictions, probabilities): resultData[eachPrediction] = eachProbability return resultData
3.簡單測試驗證:
import urllib.request import base64, time for i in range(0,10): start_time = time.time() with open("1.jpg", 'rb') as f: base64_data = base64.b64encode(f.read()) s = base64_data.decode() url = 'http://service-xxx.gz.apigw.tencentcs.com/release/image' print(urllib.request.urlopen(urllib.request.Request( url = url, data= json.dumps({'picture': s}).encode("utf-8") )).read().decode("utf-8")) print("cost: ", time.time() - start_time) 輸出結果: {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 2.1161561012268066 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 1.1259253025054932 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 1.3322770595550537 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 1.3562259674072266 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 1.0180821418762207 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 1.4290671348571777 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 1.5917718410491943 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 1.1727900505065918 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 2.962592840194702 {"prediction":{"cheetah":83.12643766403198,"Irish\_terrier":2.315458096563816,"lion":1.8476998433470726,"teddy":1.6655176877975464,"baboon":1.5562783926725388}} cost: 1.2248001098632812