中圖分類(lèi)號(hào):G434文獻(xiàn)標(biāo)識(shí)碼:A論文編號(hào):1674—2117(2025)15-0087-03
問(wèn)題的提出:TFJS手勢(shì)分類(lèi)模型能否在本地部署
為降低學(xué)習(xí)難度,多家企業(yè)開(kāi)發(fā)了基于網(wǎng)頁(yè)前端技術(shù)的模型訓(xùn)練工具。通過(guò)該工具,學(xué)生不用編寫(xiě)代碼也能親歷數(shù)據(jù)收集、模型訓(xùn)練和測(cè)試的完整環(huán)節(jié),因而它在中小學(xué)的人工智能通識(shí)課中得到了廣泛應(yīng)用。這類(lèi)工具基本上是采用TensorFlow.js(簡(jiǎn)稱(chēng)TFJS)實(shí)現(xiàn)圖像分類(lèi)、音頻分類(lèi)、關(guān)鍵點(diǎn)分類(lèi)(手勢(shì)、姿態(tài))和文本分類(lèi)等。自浦育團(tuán)隊(duì)實(shí)現(xiàn)圖像分類(lèi)模型轉(zhuǎn)ONNX后,教師們意識(shí)到TFJS模型的訓(xùn)練不僅僅可以用于體驗(yàn),還可以部署在本地并解決真實(shí)問(wèn)題。因此,教師們開(kāi)始關(guān)注TFJS類(lèi)模型訓(xùn)練工具,期待關(guān)鍵點(diǎn)模型也能轉(zhuǎn)換為ONNX,并且支持XEduHub這一工具推理,讓中小學(xué)的人工智能通識(shí)課的內(nèi)容更加豐富多彩。此外,很多支持Linux的開(kāi)源硬件已經(jīng)內(nèi)置了XEduHub,這樣一來(lái),開(kāi)發(fā)一個(gè)人工智能作品就會(huì)變得簡(jiǎn)單。然而,關(guān)鍵點(diǎn)分類(lèi)模型卻因自身的技術(shù)復(fù)雜性,在轉(zhuǎn)換為ONNX格式并實(shí)現(xiàn)跨平臺(tái)部署方面遇到了瓶頸。
可行性分析:基于MediaPipe的關(guān)鍵點(diǎn)識(shí)別技術(shù)
基于TFJS技術(shù)的關(guān)鍵點(diǎn)分類(lèi)模型訓(xùn)練,一般不是直接采用端到端(End-to-End)方式來(lái)實(shí)現(xiàn)的,而是分步實(shí)現(xiàn):先采用關(guān)鍵點(diǎn)檢測(cè)(KeypointDetection)獲得關(guān)鍵點(diǎn),再借助全連接神經(jīng)網(wǎng)絡(luò)來(lái)訓(xùn)練模型。但是,即使將TFJS模型轉(zhuǎn)換成ONNX模型,也不能在本地環(huán)境部署使用,因?yàn)楸镜丨h(huán)境也需要使用同樣的關(guān)鍵點(diǎn)檢測(cè)技術(shù)獲取關(guān)鍵點(diǎn)。想了解這方面的技術(shù)細(xì)節(jié),請(qǐng)參考文章《用XEduHub推理網(wǎng)頁(yè)前端訓(xùn)練的聲音分類(lèi)模型》(發(fā)表于本刊雜志2025年第9期)。
因此,需要選擇一個(gè)既支持網(wǎng)頁(yè)端又支持Python環(huán)境運(yùn)行的關(guān)鍵點(diǎn)檢測(cè)技術(shù)框架,才能做到讓TFJS模型可以在本地部署。經(jīng)調(diào)研,MediaPipe憑借其獨(dú)特的跨同時(shí),平臺(tái)直接提供ONNX模型的轉(zhuǎn)換功能,還提供轉(zhuǎn)換后的model.onnx文件及詳細(xì)的Python推理案例代碼。
平臺(tái)特性,成為解決手勢(shì)分類(lèi)模型跨平臺(tái)部署問(wèn)題的理想選擇。它能夠同時(shí)支持移動(dòng)端、桌面端、網(wǎng)頁(yè)(Web)以及邊緣設(shè)備(如樹(shù)莓派、行空板等),甚至可部署到嵌入式系統(tǒng)或云端。
口簡(jiǎn)潔易用。經(jīng)測(cè)試,MediaPipe在網(wǎng)頁(yè)端和Python端的關(guān)鍵點(diǎn)檢測(cè)結(jié)果是一致的。以手勢(shì)為例,獲取的都是21個(gè)關(guān)鍵關(guān)節(jié)坐標(biāo)。這些關(guān)鍵關(guān)節(jié)包括指尖、指節(jié)、手掌中心等,它們的坐標(biāo)信息能夠準(zhǔn)確描述手部的形狀和位置。
問(wèn)題的解決:編寫(xiě)一個(gè)XEduHub擴(kuò)展插件
1.MediaPipe簡(jiǎn)介
2.手勢(shì)分類(lèi)模型的訓(xùn)練
MediaPipe是由GoogleResearch開(kāi)發(fā)并開(kāi)源的一款多媒體機(jī)器學(xué)習(xí)模型應(yīng)用框架,和TFJS一脈相承。在網(wǎng)頁(yè)端,MediaPipe可以直接借助TFJS實(shí)現(xiàn)模型的推理過(guò)程。而在Python端,MediaPipe提供了相應(yīng)的庫(kù),接
在很多人工智能教學(xué)平臺(tái)上,訓(xùn)練一個(gè)手勢(shì)分類(lèi)模型的過(guò)程很簡(jiǎn)單,類(lèi)似圖像和音頻的分類(lèi),不需要寫(xiě)任何代碼即可訓(xùn)練模型。在訓(xùn)練完成后,平臺(tái)會(huì)提供模型測(cè)試功能,直接測(cè)試模型的識(shí)別效果。

有了ONNX模型和自帶的推理文件,還不能直接使用XEduHub進(jìn)行推理,需要把推理過(guò)程封裝成repo擴(kuò)展插件,才能使用XEduHub來(lái)進(jìn)行推理。封裝repo插件難度并不高,只要具備一定的Python編程能力,并且擁有模型推理的Python代碼,遵循XEduHub的規(guī)范,就能自行開(kāi)發(fā)。具體過(guò)程一般分為獲取Python推理代碼、編寫(xiě)封裝代碼、創(chuàng)建repo倉(cāng)庫(kù)、調(diào)用repo插件四個(gè)步驟。
1.獲取Python推理代碼
當(dāng)在某平臺(tái)下載ONNX模型時(shí),平臺(tái)自動(dòng)執(zhí)行從TFJS模型到ONNX模型的格式轉(zhuǎn)換,并且提供相應(yīng)的推理代碼。一般來(lái)說(shuō),推理代碼中會(huì)提供模型加載并初始化相關(guān)的推理引擎的功能,并且完成數(shù)據(jù)預(yù)處理工作。這是因?yàn)檩斎氲侥P偷氖謩?shì)數(shù)據(jù)需要經(jīng)過(guò)標(biāo)準(zhǔn)化、歸一化等處理,以符合模型的訓(xùn)練要求。例如,對(duì)于手部關(guān)鍵點(diǎn)坐標(biāo)數(shù)據(jù),需要將其轉(zhuǎn)換為模型能夠接受的維度和范圍。
2.編寫(xiě)封裝代碼
代碼封裝階段主要是編寫(xiě)data_process.py文件,該文件將實(shí)現(xiàn)模型加載、數(shù)據(jù)預(yù)處理和推理接口等核心功能。推理接口則需要設(shè)計(jì)得簡(jiǎn)潔易用,能夠接收輸入數(shù)據(jù)并返回推理結(jié)果。其核心代碼如上頁(yè)圖1所示。
3.創(chuàng)建repo倉(cāng)庫(kù)
將轉(zhuǎn)換后的ONNX模型和編寫(xiě)好的data_process.py等代碼文件按照XEduHub的Repo插件規(guī)范,上傳至魔搭社區(qū)(ModelScope),創(chuàng)建專(zhuān)門(mén)的repo倉(cāng)庫(kù)。在上傳過(guò)程中,需要填寫(xiě)倉(cāng)庫(kù)的相關(guān)信息,如倉(cāng)庫(kù)名稱(chēng)、描述、標(biāo)簽等,以便其他用戶(hù)能夠方便地查找和使用該插件。同時(shí),要確保倉(cāng)庫(kù)中的文件結(jié)構(gòu)清晰,便于XEduHub系統(tǒng)正確識(shí)別和加載插件。倉(cāng)庫(kù)目錄中一般包含如圖2所示的文件,其中model.onnx和data_process.py為必需文件。
4.調(diào)用repo插件
在repo擴(kuò)展插件上傳完成后,就可以使用XEduHub工具調(diào)用它使用本地算力來(lái)進(jìn)行推理了。最終的推理代碼(只有4行)如圖3所示。
該代碼的關(guān)鍵是wf(repo =1 cnyiwei/Rock-Paper-Scissors'),指定了云端模型的repo倉(cāng)庫(kù)名稱(chēng)。在運(yùn)行代碼后,平臺(tái)會(huì)自動(dòng)下載推理需要的核心文件。model.inference('hand_image.jpg')實(shí)現(xiàn)了對(duì)\"hand_image.jpg\"推理。推理結(jié)果如圖4所示。
XEduHub的repo功能相結(jié)合,本文實(shí)現(xiàn)了網(wǎng)頁(yè)前端訓(xùn)練的手勢(shì)分類(lèi)模型的高效流通和跨平臺(tái)部署,為中小學(xué)人工智能通識(shí)教育提供了從訓(xùn)練到應(yīng)用的完整鏈條。XEduHub的repo功能為模型的封裝和共享提供了便捷的途徑,降低了模型部署的技術(shù)門(mén)檻;TFJS技術(shù)支持在瀏覽器中直接運(yùn)行ONNX模型,實(shí)現(xiàn)了網(wǎng)頁(yè)端推理與本地化部署的無(wú)縫銜接;Web頁(yè)面數(shù)據(jù)采集工具則簡(jiǎn)化了數(shù)據(jù)集的構(gòu)建流程,為模型訓(xùn)練提供了充足的數(shù)據(jù)支持。
圖2repo擴(kuò)展插件倉(cāng)庫(kù)目錄結(jié)構(gòu)

受此啟發(fā),筆者針對(duì)人工智能通識(shí)教育的工具還提出了更多的需求。例如,網(wǎng)頁(yè)端工具應(yīng)該提供數(shù)據(jù)導(dǎo)出功能,導(dǎo)出的數(shù)據(jù)最好包含原始圖片和相應(yīng)的關(guān)鍵點(diǎn)數(shù)據(jù)(CSV格式)。又如,既然能實(shí)現(xiàn)手勢(shì)分類(lèi),那么姿勢(shì)分類(lèi)(基于姿勢(shì)關(guān)鍵點(diǎn))、人臉識(shí)別(臉部關(guān)鍵點(diǎn))都能按照同樣的方式實(shí)現(xiàn)。當(dāng)然,如果網(wǎng)頁(yè)端采用的是OnnxRuntimeWeb技術(shù),那么轉(zhuǎn)換后的模型就能直接用XEduHub內(nèi)置的代碼推理,連MediaPipe環(huán)境都不需要安裝了。同理,只要有合適的ONNX模型,絕大多數(shù)的分類(lèi)任務(wù)都能像圖像分類(lèi)、音頻分類(lèi)、手勢(shì)分類(lèi)一樣,實(shí)現(xiàn)網(wǎng)頁(yè)前端訓(xùn)練和本地部署的無(wú)縫結(jié)合。
圖4模型推理結(jié)果
