LOBE connect - 本機端 api 呼叫
| 撰寫/攝影 | 曾吉弘 |
| 難度 |
★★★★☆ (要理解 python 與基本網路呼叫,難度1~10) |
| 時間 |
約1小時 |
| 材料表 |
|
前言
微軟在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,在此一樣使用這兩個相當具代表性的機器人來進行辨識,測試圖片如下圖:
[gallery columns="2" size="large" ids="41748,41744"]
由於這個範例只進行 http 呼叫,只要有 Python 環境並且不需要安裝AI框架就可以執行,請新增以下 lobe_connect.py (或任意檔名),在終端機中執行就可以看到結果了。下圖進行了三次呼叫,辨識結果分別為zaku、zaku、dom:
[pastacode lang="python" manual="import%20base64%0Aimport%20requests%0A%0A%23%20%E8%AB%8B%E8%A8%AD%E5%AE%9A%E6%AD%A3%E7%A2%BA%E7%9A%84%E6%AA%94%E5%90%8D%E8%88%87%E8%B7%AF%E5%BE%91%0Aimg_filepath%20%3D%20%22.%2Fdom.jpg%22%0A%0A%23%20Create%20base64%20encoded%20string%0Awith%20open(img_filepath%2C%20%22rb%22)%20as%20f%3A%0A%20%20%20%20image_string%20%3D%20base64.b64encode(f.read()).decode(%22utf-8%22)%0A%0A%23%20%E5%8F%96%E5%BE%97%20POST%20%E5%91%BC%E5%8F%AB%E7%9A%84%E5%9B%9E%E6%87%89%0Aresponse%20%3D%20requests.post(%0A%20%20%20%20url%3D%22http%3A%2F%2Flocalhost%3A38101%2Fv1%2Fpredict%2F8658343e-1545-4354-b3ea-093f83ed9a4c%22%2C%0A%20%20%20%20json%3D%7B%22image%22%3A%20image_string%7D%2C%0A)%0Adata%20%3D%20response.json()%0Atop_prediction%20%3D%20data%5B%22predictions%22%5D%5B0%5D%20%20%23%E5%8F%96%E5%BE%97%E9%A0%90%E6%B8%AC%E5%80%BC(%E4%BF%A1%E5%BF%83%E6%8C%87%E6%95%B8)%E6%9C%80%E9%AB%98%E7%9A%84%E9%A0%85%E7%9B%AE%0A%0A%23%20%E9%A1%AF%E7%A4%BA%E4%BF%A1%E5%BF%83%E6%9C%80%E9%AB%98%E7%9A%84%E6%A8%99%E7%B1%A4%E5%90%8D%E7%A8%B1%E8%88%87%E4%BF%A1%E5%BF%83%E5%80%BC%0Aprint(%22predicted%20label%3A%5Ct%7B%7D%5Cnconfidence%3A%5Ct%5Ct%7B%7D%22.format(top_prediction%5B%22label%22%5D%2C%20top_prediction%5B%22confidence%22%5D))%0A" message="< lobe_connect.py >" highlight="" provider="manual"/]
留言 💬 (0)
還沒有留言,來當第一個。