謝作如 浙江省溫州中學
程龍愷 上海人工智能實驗室
在上一期專欄文章中,筆者設計了一個名為“智能稻草人”的科創項目。溫州實驗中學的老師覺得很不錯,于是在全校范圍開展了這個主題的項目式學習。學生們結合校園中的各種真實問題收集數據,然后借助MMEdu訓練模型。學生很喜歡這個項目,研究進展順利,模型識別效果也很不錯。隨著項目學習的推進,他們提出了一個新的問題:如何在開源硬件上應用MMEdu模型?
顯然,這樣的需求是從真實問題解決的角度提出的——因為總不能搬出一臺計算機來作為運行AI模型的終端。雖然有很多品牌的開源硬件應用在中小學的創客教育中,但能夠運行AI模型的開源硬件性能要求較高,需要支持Linux系統,如虛谷號、香橙派、沖鋒舟、行空板等。從應用的便捷程度上來說,行空板是中小學目前最熱門的選擇,其自帶的大屏幕很適合做各種智能作品。于是筆者將問題聚焦為如何在行空板上應用MMEdu模型。
行空板是一款擁有自主知識產權的國產教學用開源硬件,集成LCD彩屏、Wi-Fi藍牙、多種常用傳感器和豐富的拓展接口,支持常見的USB設備,接上普通的USB攝像頭、USB小音箱就能完成一個智能稻草人的作品原型。如果加上舵機、電磁閥之類的執行器,則可以實現如智能灌溉、智能門禁等常見的創客作品;如果加上物聯網MQTT消息的傳遞,則可以實現遠程管理,做出智聯網的作品來。
經過分析,在行空板上應用MMEdu模型有多種方案,分別介紹如下。
方案1:在行空板上安裝MMEdu
所謂“解鈴還須系鈴人”,要想在行空板上使用MMEdu模型,最自然的想法肯定是在行空板上安裝MMEdu。不過,這并非推薦的方案,因為行空板只有512M的內存,MMEdu基于OpenMMLab進行二次開發,包含了多個對系統要求較高的Python模塊,環境安裝比較困難。
方案2:讓行空板遠程調用MMEdu的推理服務
參考百度AI開放平臺的做法,可以把行空板看成是一個帶攝像頭的Wi-Fi終端,AI模型推理工作放在一臺PC機上,部署為“推理服務器”。行空板把拍攝到的照片傳送給服務器,再根據返回的數據執行相應任務,如圖1所示。

圖1
方案3:在行空板上部署ONNX或者NCNN環境
O N N X的 全 稱 是“O p e n Neural Network Exchange”,即“開放的神經網絡切換”,旨在實現不同神經網絡開發框架之間的互通互用。ONNX支持多平臺,推理環境搭建非常方便,是部署AI應用主流選擇。MMEdu支持導出ONNX模型,行空板也能夠部署ONNX的推理環境。
除了ONNX外,NCNN也是可行的選擇。NCNN是一個跨平臺的神經網絡前向計算框架,為移動端的推理做了優化,行空板已經提供了安裝NCNN環境的教程,以及推理的DEMO。
1.AI推理服務器代碼的實現
借助Flask或者fastapi,搭建一個類似百度AI開放平臺并不困難,稍微有點Python基礎的就能完成。核心代碼如圖2所示。

圖2
2.遠程推理代碼的編寫
借助Request庫,三四行代碼就能實現將圖片傳送到Web服務器,并獲得返回信息。參考代碼如下頁圖3所示,其中“10.1.2.1”為Web服務器的IP地址。

圖3
作為智能稻草人作品,行空板肯定是要接上攝像頭,然后定時將畫面發給服務器。拍照一般使用OpenCV庫,代碼也非常簡潔。下頁圖4中的代碼實現了啟動攝像頭,拍照后傳送圖片到服務器,然后輸出返回到信息。

圖4
3.測試情況記錄
將一臺筆記本電腦(CPU為I5-9750,內存為16G)設置為AI推理服務器,在啟動GPU(NVIDIA GeForce GTX 1650)的情況下,對“MobileNet”的模型進行推理,平均速度是0.15秒左右,而僅僅使用CPU推理,速度也差不多??梢姡珹I推理在普通電腦上是沒有太大的壓力的,算力已經夠了。
為了方便中小學的師生們部署AI應用,XEdu的開發小組特意編寫了一個名為“EasyAPI”的小程序(如下頁圖5),只要訓練好MMEdu的模型,設置必要的路徑參數,即可生成Python代碼,也可以直接運行,讓計算機變身為AI推理服務器。

圖5
1.環境安裝
絕大多數的系統都支持ONNX,行空板上可以通過P i p命令安裝“onnxruntime”。對于NCNN,行空板則提供了安裝教程和編譯好的文件,也可以通過Pip方式安裝。
2.將MMEdu模型轉換為ONNX和NCNN模型
轉換模型看起來是一件很專業的事情,其實只要找到相應的工具即可。借助OpenMMLab的classification模塊,只要一句命令,就能直接將模型導出為ONNX格式的模型(如圖6)。

圖6
MMEdu提供了更加簡單的轉換方式。使用model對象的convet方法,就能直接導出指定的模型格式文件,如轉換為O N N X的代碼為“model.convert(backend_type=’onnx’)”,是不是很簡單。
需要強調的是,還沒有做過優化的ONNX模型在行空板上推理速度有點慢,測試結果大約是2秒,如果換成樹莓派和jetsonnano,則速度應該會更快一些。這還需要進一步研究。
“智能稻草人”項目實際上是一個范圍很廣的AI科創主題,幾乎絕大多數的AI安防類產品原理都類似稻草人。根據解決的問題采集相應的數據,再選擇合適的網絡模型。在MMEdu系列工具的支持下,用AI解決問題其實并不難。對于網絡結構比較復雜的模型,推薦使用方式2。從測試中可以看出,在局域網下傳輸圖像數據,速度其實是很快的。對于模型比較簡單,而且部署Web服務器比較麻煩的應用場景,則推薦使用方式3。
在完成這組AI科創案例后,筆者能夠逐步明確一條中小學AI科創的學習路徑,即在標準的主流的AI框架上學習訓練模型,再通過相應的AI模型轉換和部署工具,運行在常見的開源硬件上。這樣既能夠學習到主流的AI開發知識,又能很好地擴展開源硬件在AI方面的應用。當然,學習AI也不會局限于某一種開源硬件。