一、什麼是 HuskyLens?
由中國大陸電子零件商 DFRobot 所生產製造的 HuskyLens(中國大陸稱為二哈識圖),其核心運算晶片為 RISC-V 架構的 Kendryte K210。與市場上其他 K210 為核心的開發板有所不同,HuskyLens 在模組上帶有 2.0 吋 320×240 像素的 TFT 螢幕與三向搖桿,可以直接選擇已經放在 K210 上的數種預訓練模型,如人臉識別(Face Recognition)、物件追蹤(Object Tracking)、循線(Line Tracking)、顏色識別(Color Recognition)等,給予使用者「開箱即可用」的便利體驗。
二、HuskyLens 怎麼玩?
HuskyLens 有兩個供電介面,分別為 micro USB 與 Grove 介面,可以選擇從任一介面進行供電。上電開機後,在 HuskyLens 的螢幕上即會顯示文字選單與鏡頭所拍攝到的即時畫面,同時透過三向搖桿即可以輕鬆地進行系統設定與選定 AI 功能等各項操作。在選單語言上支援英文、簡體中文與繁體中文介面,因此對於不黯英語的小夥伴們也是很容易入門的😉。
所有 HuskyLens 支援的 AI 影像識別功能包含:
- Face Recognition 人臉識別-偵測人臉,並可透過學習識別出特定人臉。
- Object Tracking 物件追蹤-學習偵測特定物件,並且標記出其位置。
- Object Recognition 物件識別-可識別出人、鳥、汽車、飛機等 20 種分類物件偵測模型。
- Line Tracking 循線追蹤-識別出線段,並且可標記其方向。
- Color Recognition 顏色識別-學習認知特定顏色並可標記出其位置。
- Tag Recognition 標籤識別-學習認知特定 April Tag,並可標記出其位置。
- Image Classification 影像分類-學習認識不同的物體,並將其歸類。(官方稱此功能為 Object Classification 物件分類,但其 bounding box 是固定範圍,僅能框內的物體作分類,因此筆者認為此功能稱為影像分類 Image Classification 較為合適)
- QR Code 識別(僅PRO版本)-識別 QR Code 內容。
- Barcode 識別(僅PRO版本)-識別 Barcode 內容。
三、關於 HuskyLens 的人臉識別
這裡將以 HuskyLens 主打的人臉識別作操作說明,在選單中找到 Face Recognition 人臉識別,進入後螢幕上將會顯示目前鏡頭拍攝到的影像,並針對影像中所有找到的人臉都用方框標記出來,若要讓 HuskyLens 辨識出特定人臉則需要使用學習功能。預設 HuskyLens 僅能辨識出一組特定人臉,而這比較不符合實際應用,可以長按三向搖桿的「功能按鈕」(Function Button)進人臉辨識設定,找到「學習多個」項目,進入後開啟此功能並選擇「保存並返回」,日後即可以學習辨識多組特定人臉。
要讓 HuksyLens 學習人臉特徵,將畫面上的十字標對準要辨識的人臉,壓下獨立的「學習按鈕」(Learning Button) 按住不放,就會連續的記錄人臉特徵,將同一個人的不同角度影像,包含正臉、側臉、不同造型等影像餵給 HuskyLens。 學習完第一人後放開「學習按紐」,這時在五秒內再次按住「學習按紐」不放即可開始學習第二個人臉特徵,重複此步驟即可學習多組人臉。
當學習完成多個人臉特徵後放開「學習按鈕」一段時間,HuskyLens 就會自動進入辨識階段,畫面中心的十字標也隨之消失。並且將所有識別出的人臉標記 ID1, 2, 3…等,若是沒有學習過(或是沒辨識出)的人臉則會顯示 ID0,以此判斷鏡頭前的人臉究竟是何方神聖!筆者實際測試兩位相似度極高的影視明星 Katy Perry 與 Zooey Deschanel 做人臉識別,實驗結果發現 HuskyLens 確實還能分辨得出呢!不過因為同時間 HuskyLens 僅能儲存一組辨識模型,若要學習新的人臉則需要先將既有模型給遺忘。
四、與 Arduino 等微控制器通訊
HuskyLens 支援 UART 與 I2C 兩種通訊界面,可以跟 Arduino、Pi Pico、ESP32、micro:bit 等開發板進行溝通,讓不同層級的 Maker 們都能用熟悉的主板跟其搭配。官方也在 github 上提供了 Arduino、Makecode、Python等擴充含式庫與範例,讓 Maker 可以簡單地在既有專案中,將整合 HuskyLens AI 鏡頭模組的功能整合進去。連接上建議可優先使用其 I2C 通訊,除了速率較高外,也較不會占用 IO 腳位。若有興趣了解 HuskyLens 底層的通訊格式,官方也有說明文件可以參考。
五、整合應用
基於 HuskyLens 的易用性,不少國內外的玩家們都有將其搭配各種不同主板整合各類應用,這段落將介紹幾種不同的參考應用,給 Maker 們做為參考。
1. micro:bit 小車
劉正吉使用了 micro:bit 小車搭配 HuskyLens 的 Line Tracking 循線追縱功能,將小車從原來透過車底盤上的紅外線感測器作的循線,升級為影像循線小車。從其展示的影片看起來,不管是各種角度轉彎,都能順利識別並正確地找到前進方向,螢幕上的畫面也能即時顯示,整體效果相當不錯!雖然用影像作循線比起傳統紅外線感測器成本提高不少,但紅外線的致命缺點必須要在完全平面的場地才能運作,這點用影像做循線的專案就完全沒這問題。不過額外須注意的則是環境光源需要保持足夠的亮度,以免影像判讀失準,也可開啟鏡頭旁的兩顆 LED 進行補光。
2. 寶可夢分類器
寶可夢的種類越來越多而記不得了嗎?DFRobot 在 Hackster.io的一篇教學文章,運用 HuskyLens 的影像分類功能,學習記錄各種寶可夢的影像,並且在 micro:bit 上進行判讀後作出相應的動作。在此相同架構下可以實作多種不同應用,諸如口罩偵測器、貓狗辨識器、垃圾分類器等,都可以使用影像分類來完成!
3. Pi Pico 智慧讀表
同樣也是使用影像分類,RFRobot 在 Hackster.io的另一篇文章,搭配 Raspberry Pi Pico 實作了智慧影像讀表功能。不過相較於前者,此專案則是進階許多,從原本分類畫面中的單一區域影像,改變為同時分類畫面上四個區域的影像。實作此功能需要先將鏡頭固定好在錶頭前面(也需要留意光源是否清晰),並且使用 API 設定要進行分類的四個區域,在依序學習數字 0~9。學習完成後就依序讀取四個區域的分類結果,達到影像讀錶的效果。此專案較為複雜,在 Pico 上是使用 python 的程式與法進行呼叫操作,整體成果相當實用!
4. 人臉辨識門鎖
CIRCUS Pi上的這篇教學文章,使用 ESP32 搭配 HuskyLens 的人臉辨識功能與周邊配套模組,實作了近幾年流行的智慧門鎖功能!除了市售電子鎖標配的 RFID 開鎖,再加上 HuskyLens 就能做到人臉辨識解鎖。相較於以往透過雲端伺服器來辨識人臉,HuskyLens 直接在裝置端辨識出人臉的時間非常迅速,應用在這類智慧裝置也不會有延遲感,提高使用者的體驗。若要以此為雛型,轉為真實的智慧家庭產品也並無可能,唯獨需要再加上生物特徵或是景深偵測,避免有心人士使用照片偽造人臉的方式開啟門鎖。
五、小結-適合從 Arduino 前進 AI 的 Makers
若是已經有在使用 Arduino , ESP32 或 micro:bit 等主控板的 Maker,想要進階到 AI 或是 AIOT 領域但又不熟悉神經網路的情況下,筆者相當推薦使用 HuskyLens 作為專案上的搭配使用。在短時間內可以先體驗在邊緣端有哪些 AI 應用,將神經網路當作黑盒子以應用為導向落實在專案上,是個比較容易上手的途徑。當 HuskyLens 上的 AI 影像功能已無法滿足使用時,再去更換到其他高階或是可以客製化的平台也不遲!
By the way
市場上販售的 HuskyLens 有分為搭載 OV2640 鏡頭(200萬畫素)的一般版本與搭載 OV5640鏡頭(500萬畫素)的 PRO 版本。除了搭載鏡頭的畫素差異之外,PRO 版本額外支援了 QR Code 識別與 Barcode 識別兩個功能,兩者價差也僅約台幣三百多,有興趣的 Maker 就各自評判要收編哪一個來把玩了!