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