謝作如 程龍愷



摘要:隨著人工智能教育的普及,中小學的師生們不再滿足于“體驗”,而希望通過Web頁面訓練出來真正有用的AI模型,并部署到開源硬件搭建出AI應用。本文介紹了常見的Web前端模型訓練平臺和模型轉換方法,并以行空板和ONNX為例,展示了一個完整的AI開發流程。
關鍵詞:深度學習;模型轉換;模型部署
中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2023)11-0085-03
隨著人工智能的發展和普及,深度學習已經成為人工智能的核心內容。越來越多的教育者認識到,如果不涉及數據采集、模型訓練和部署等內容,則幾乎不能把它稱為人工智能教育。為了降低深度學習的技術門檻,一些人工智能學習平臺設計了基于Web頁面的模型訓練功能,即學生不需要編寫代碼,點點鼠標就能完成從采集數據、訓練模型到推理的機器學習流程。我們將這種模型訓練方式命名為Web前端模型訓練。那么,這種基于網頁前端訓練出來的AI模型,能不能像其他模型一樣,也可以部署到開源硬件,搭建出一個真正的AI應用?針對這個問題,筆者進行了深度探究,并成功實現了將一個通過Web前端訓練的AI模型,轉換為ONNX并部署到行空板上。
Web前端訓練AI模型的原理和特點
使用Web前端方式訓練模型,需要借助TensorFlow.js這一技術。TensorFlow.js是谷歌發布的一個JavaScript庫,它將深度學習和機器學習技術與Web應用程序融合,使用戶能夠在Web瀏覽器和Node.js環境中直接訓練和部署機器學習模型。簡單來說,TensorFlow.js可以讓開發者用JavaScript實現機器學習應用,通過瀏覽器直接與用戶交互。Teachable Machine是谷歌創意實驗室開發的小項目,可以看成TensorFlow.js的DEMO網站。
Web前端模型訓練的優點:首先,不需要搭建專用的AI訓練環境,打開谷歌瀏覽器或者Edge,就能隨時隨地訓練模型。用戶甚至可以將Web站點搭建在本機上,不上網都能訓練。其次,這種模型訓練使用的是前端算力,即瀏覽器端(客戶端)電腦的算力,一個Web服務器理論上可以支持無限用戶同時訓練模型,有效解決了服務器算力匱乏的問題。再次,借助遷移學習的方式,僅僅提供少量圖片(一個分類20張以上),TensorFlow.js訓練的模型就能取得不錯的推理效果。在普通i5系列CPU電腦上訓練,一般在一分鐘內就能完成,很適合課堂教學。
Web前端訓練AI模型的一般流程
在Web前端訓練一個AI模型的流程,和常見的機器學習流程是一致的,都要經歷數據采集、模型訓練和模型推理這三個環節,如下頁圖1所示。
國內提供Web前端模型訓練功能的人工智能學習平臺主要有浦育、英荔和騰訊扣叮這幾類。其中,英荔平臺似乎是谷歌Teachable Machine的鏡像網站,除了在線訓練模型外,還能夠下載訓練好模型,并且提供了TensorFlow.js模型和h5模型(Keras框架使用的模型)的轉換。
經過分析,通過TensorFlow.js訓練的圖像分類模型,采用的算法是谷歌團隊提出的MobileNet v2。MobileNets系列的本身初衷是“for Mobile Vision Applications”,是一個輕量化的卷積網絡模型,可以顯著減少計算量和參數量,同時保持較高的準確率來提升效率,能夠運行在算力不太高的移動設備上。
在行空板上部署Web前端訓練的AI模型
雖然英荔平臺提供了h5格式的模型下載,而類似樹莓派、行空板的開源硬件也能夠安裝Keras的環境,似乎看起來部署模型很簡單,但實際上h5模型的加載實在太慢了,一個簡單的圖像分類模型居然要2分鐘才能完成,推理速度也很慢。筆者在《當MMEdu遇上行空板——“智能稻草人”項目的后續研究》一文中,已經給出了在行空板上部署ONNX模型的方法。于是,筆者在萬能的GitHub中找到了一個名為“tf2onnx”的庫,先將h5模型轉換為ONNX模型,然后部署在行空板上。
tf2onnx是一個將TensorFlow(tf-1.x或tf-2.x)、keras、tensorflow.js和tflite模型轉換為ONNX的工具庫,可通過命令行或Python API進行操作(如圖2)。在安裝tf2onnx庫的同時,還需要部署好tensorflowjs的環境。安裝過程有點長,具體安裝時間受制于網絡速度。
tf2onnx提供了多種轉換方式。最方便的是調用命令行,參考命令如“python -m tf2onnx.convert --saved-model tensorflow-model-path --output model.onnx”。也可以調用Python API來完成轉換,核心代碼并不復雜,十來行代碼即可完成。參考代碼如上頁圖3所示。
在轉換前,要先將Web前端訓練的模型下載到本地。下載的模型文件為一個壓縮包,解壓后可得到model.json和model.weights.bin兩個文件。需要注意的是,在轉換時,這兩個文件要放在一個文件夾中。
ONNX模型在行空板上的部署測試
在完成模型轉換后,就可以將這一模型部署到行空板上了。最終訓練的是一個害蟲的分類模型,調用行空板的攝像頭進行識別。當程序啟動后,在2秒內可以載入模型,每推理一幀的時間在0.3秒左右。整體項目使用BaseDeploy完成推理模塊的封裝,使用BaseDT完成數據預處理。一個調用攝像頭的核心代碼僅10行左右,參考代碼如圖4所示。
基于Web前端訓練模型,對當前的中小學生來說是一種很好普及的模型訓練方式。只要能夠借助低門檻的深度學習工具訓練模型,學生們用AI模型解決真實問題的難度將大大降低。用網頁訓練模型,再部署到開源硬件上,創客教育和人工智能教育能夠快速融合。
當然,TensorFlow.js也存在不足,其支持的模型類型還不是很多。但筆者相信,只要中小學生體驗了用訓練AI模型的方式解決了真實問題,就會自然而然對使用其他工具訓練AI模型產生學習興趣。訓練AI模型本來就是流程化的工作,每一位學生都應該了解并體驗,從而深刻理解數據、算法和算力之間的關系。
參考文獻:
[1]謝作如,程龍愷.當MMEdu遇上行空板——“智能稻草人”項目的后續研究[J].中國信息技術教育,2022(23):77-79.
[2]謝作如.用新一代人工智能技術解決真實問題——談中小學AI科創活動的開展[J].中國信息技術教育,2022(13):5-8.