1. 程式人生 > 其它 >使用SCF進行影象分類

使用SCF進行影象分類

技術標籤:serverless案例

背景

影象相比文字能夠提供更加生動、容易理解及更具藝術感的資訊,是人們轉遞與交換資訊的重要來源,也是影象識別領域的一個重要問題,影象分類是根據影象的語義資訊將不同類別影象區分開來,是計算機視覺中重要的基本問題,也是影象檢測、影象分割、物體跟蹤、行為分析等其他高層視覺任務的基礎。影象分類在很多領域有廣泛應用,包括安防領域的人臉識別和智慧視訊分析等,交通領域的交通場景識別,網際網路領域基於內容的影象檢索和相簿自動歸類,醫學領域的影象識別等。一般來說,影象分類通過手工特徵或特徵學習方法對整個影象進行全部描述,然後使用分類器判別物體類別,因此如何提取影象的特徵至關重要。但是如果靠自己實現一個影象識別演算法是不容易的,我們可以使用ImageAI來完成這樣一個艱鉅的任務。

技術方案

使用雲函式實現,詳細步驟如下:

  1. 在雲控制檯新建python雲函式模板
  2. 編寫程式碼,實現如下:
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