LOBE connect – 本機端 api 呼叫

撰寫/攝影   曾吉弘 
難度

★★★★☆ (要理解 python 與基本網路呼叫,難度1~10)

時間

約1小時

材料表
  • 電腦,具備 python 環境
  • 要辨識的物體(例如兩種不同的扭蛋)

前言

  微軟在2020下半年推出了 LOBE.ai 神經網路訓練工具,我們馬上寫了這篇文章 [微軟 LOBE ai – 離線訓練影像辨識模型!],裡面有一個即時影像推論的範例,在一般電腦或是單板電腦(Rasbperry Pi 或 Jetson Nano) 上都可以執行,如下圖:

最近一次更新之後,可以匯出的神經網路模型格式更豐富了,也提供了 iOS / Android 的 app 樣板讓您可以更快完成一個視覺辨識 app。

    本篇文章是另一個小範例,LOBE 在訓練完神經網路之後就會產生一個本地端的 REST API 端點,可以自己呼叫自己,或是讓別台電腦透過 ip 來呼叫,並根據所訓練好的神經網路模型來回傳結果。適合不強調執行速度的情境下使用,程式也比較簡潔,基本上就對 LOBE API url 進行一次 POST 呼叫來送出一個 base64 影像,接著 LOBE 就會回傳預測結果,包含標籤與信心指數。

    請根據 [微軟 LOBE ai – 離線訓練影像辨識模型!] 快速訓練一個模型吧!完成之後請在 Use 中找到 Lobe Connect in the Use tab to get started integrating your model.

  點選之後會跳出一個選單,點選下拉式選單選到 [Python],可以看到所產生的端點與範例程式碼(本文末)其他選項還有 C#、Node.js、,方便不同技術背景的使用者快速使用。端點會長這樣:

http://localhost:38101/v1/predict/8658343e-1545-4354-b3ea-093f83ed9a4c

當然也可以把 localhost 改成您電腦的 IP,例如 192.168.x.x,就可以讓同一個網段的其他電腦來呼叫這個 LOBE 端點了!

 延續上一篇教學 中的 DOM 與 ZAKU,在此一樣使用這兩個相當具代表性的機器人來進行辨識,測試圖片如下圖:

 

    由於這個範例只進行 http 呼叫,只要有 Python 環境並且不需要安裝AI框架就可以執行,請新增以下 lobe_connect.py (或任意檔名),在終端機中執行就可以看到結果了。下圖進行了三次呼叫,辨識結果分別為zaku、zaku、dom:

 

< lobe_connect.py >
import base64
import requests

# 請設定正確的檔名與路徑
img_filepath = "./dom.jpg"

# Create base64 encoded string
with open(img_filepath, "rb") as f:
image_string = base64.b64encode(f.read()).decode("utf-8")

# 取得 POST 呼叫的回應
response = requests.post(
url="http://localhost:38101/v1/predict/8658343e-1545-4354-b3ea-093f83ed9a4c",
json={"image": image_string},
)
data = response.json()
top_prediction = data["predictions"][0] #取得預測值(信心指數)最高的項目

# 顯示信心最高的標籤名稱與信心值
print("predicted label:\t{}\nconfidence:\t\t{}".format(top_prediction["label"], top_prediction["confidence"]))

相關文章:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *