
中圖分類號:G434文獻標(biāo)識碼:A論文編號:1674—2117(2025)17-0082-03
研究背景
龍舟運動是江南水鄉(xiāng)一項源遠(yuǎn)流長的民俗活動,也是我國非物質(zhì)文化遺產(chǎn)的重要組成部分,蘊含著深厚的歷史文化底蘊。隨著全球化進程的不斷深人,龍舟運動逐漸跨越國界,成為國際文化交流的橋梁。筆者所在學(xué)校毗鄰溫州龍舟基地,為更好地傳承與弘揚這一民俗文化,科創(chuàng)中心的師生們借助人工智能(AI)技術(shù)研發(fā)了一套龍舟運動模擬體驗裝置。
智能技術(shù)即可實現(xiàn)對動作的判斷,于是便采用了純計算機視覺的技術(shù)路徑。具體的做法是:利用攝像頭拍攝人體,利用人體關(guān)鍵點檢測循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,簡稱RNN)等技術(shù)對畫面進行處理,在得到用戶動作的準(zhǔn)確判斷后,驅(qū)動龍舟模型在水中做出相應(yīng)的行動。
它接收物聯(lián)網(wǎng)消息并對龍舟進行動態(tài)控制,具體的工作流程如圖1所示。
互動裝置的開發(fā)分為三個階段(如圖2)。首先,召集志愿者拍攝龍舟劃槳視頻,構(gòu)建數(shù)據(jù)集并訓(xùn)練模型;其次,編寫動作檢測裝置的程
最初的設(shè)計方案是制作一個物理交互的龍舟道具,即通過一支真實的龍舟長槳,借助旋轉(zhuǎn)、加速度傳感器的偵測,將劃槳動作“轉(zhuǎn)化”為水池中龍舟模型的行駛。然而隨著“人工智能和互動媒體技術(shù)”課程的開展,筆者對人工智能的了解也不斷增加,發(fā)現(xiàn)通過攝像頭和人工
圖1

這個互動裝置由動作檢測裝置、消息中轉(zhuǎn)服務(wù)器(物聯(lián)網(wǎng)服務(wù)器)和龍舟模型三部分組成。動作檢測裝置為一臺高性能的計算機,通過攝像頭捕捉用戶的肢體動作,利用人工智能技術(shù)進行人體關(guān)鍵點檢測,并將檢測結(jié)果通過物聯(lián)網(wǎng)消息傳輸至龍舟模型。控制龍舟模型運動的控制器為行空板,利用序,將模型推理結(jié)果轉(zhuǎn)化為物聯(lián)網(wǎng)消息;最后,制作龍舟模型,通過激光切割技術(shù)制作龍舟外殼,并安裝電機和開源硬件,接受物聯(lián)網(wǎng)消息并模擬出劃槳動作的功能。
圖2

作品制作過程
在開發(fā)過程中,筆者用到了一系列的軟硬件工具,如開源AI算法包的XEdu,用于訓(xùn)練和推理AI模型;AI代碼編輯器Cursor,協(xié)助完成編程技術(shù)細(xì)節(jié);開源免費的MQTT服務(wù)器軟件,用于龍舟和AI模型之間的消息中轉(zhuǎn);創(chuàng)客神器Mind+,用于編寫開源硬件的控制代碼;激光切割機和3D打印機,用于制作龍舟模型等。
1.模型訓(xùn)練
首先需要一個能識別用戶是否做出“劃槳”動作的AI模型。模型訓(xùn)練的關(guān)鍵是制作數(shù)據(jù)集,然后用深度學(xué)習(xí)開發(fā)工具搭建神經(jīng)網(wǎng)絡(luò)、訓(xùn)練并測試模型。
(1)數(shù)據(jù)集制作
筆者召集了6名學(xué)生志愿者拍攝數(shù)據(jù)集,每個人分別拍攝了停止、前進、左轉(zhuǎn)、右轉(zhuǎn)各4條視頻,一共24條視頻。這些視頻會被逐幀處理,一條視頻會被分解成多條數(shù)據(jù)。按照動作將視頻分別放到4個文件夾中,為后續(xù)制作數(shù)據(jù)集做準(zhǔn)備。


訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集格式一般為\"npz\"。npz是numpy庫的一種數(shù)據(jù)存儲格式,它可以將多個數(shù)組以二進制的形式壓縮存儲在一個文件中,從而大大減少存儲空間,提高讀取效率。對于一條完整的視頻,要將其制成npz數(shù)據(jù)集需要經(jīng)過三個步驟: ① 把視頻分成長度相同的多個小視頻; ② 利用預(yù)訓(xùn)練模型,識別出每一幀的人體關(guān)鍵點,并將其轉(zhuǎn)換為特征數(shù)據(jù);③ 把特征數(shù)據(jù)轉(zhuǎn)換為npz格式。
筆者使用了XEduHub中的“det_body\"任務(wù)來實現(xiàn)人體檢測,選擇\"pose_body26\"模型提取人像的26個關(guān)鍵點(每個關(guān)鍵點有x和y兩個數(shù)值)。之后對數(shù)據(jù)進行“歸一化”操作。歸一化指的是進行數(shù)據(jù)標(biāo)準(zhǔn)化處理,以解決數(shù)據(jù)指標(biāo)之間的可比性。原始數(shù)據(jù)經(jīng)過數(shù)據(jù)標(biāo)準(zhǔn)化處理后,提高了模型識別的準(zhǔn)確度。核心代碼如圖3所示。
由于每條視頻的動作并不完全相同,如速度快慢、動作分布、時長等都不相同,為了讓數(shù)據(jù)具有相同的尺度,這里設(shè)置seq-30,也就是把一條視頻劃分為每30幀為一組的多組視頻,每條數(shù)據(jù)的尺寸為 130* 特征維度。當(dāng)然,代碼中還需要考慮“視頻總長不滿30幀”“視頻中無人物”等特殊情況。
(2)模型訓(xùn)練
對于動作的識別,一般需要使用序列模型。而最常用的序列模型就是循環(huán)神經(jīng)網(wǎng)絡(luò)。筆者利用XEdu中的深度學(xué)習(xí)工具BaseNN搭建循環(huán)神經(jīng)網(wǎng)絡(luò)模型,訓(xùn)練并測試模型,最后轉(zhuǎn)換為ONNX格式,方便在更多開源硬件平臺上使用。因為BaseNN的代碼很簡潔,僅四行代碼就搭建出這個循環(huán)神經(jīng)網(wǎng)絡(luò)模型。完整的訓(xùn)練代碼如上頁圖4所示。
(3)模型推理
在推理模型時,同樣需要調(diào)用處理視頻數(shù)據(jù)的函數(shù)“get_seq_keypoints”。用同樣的方式獲取圖像中的關(guān)鍵點,組合成特定的數(shù)據(jù)集格式,傳入模型中進行推理,再返回預(yù)先定義好的動作類別。核心代碼如上頁圖5所示。
2.軟件編寫
在模型訓(xùn)練完成后,重點任務(wù)是編寫兩個程序,分別用于動作檢測裝置和龍舟模型。物聯(lián)網(wǎng)服務(wù)器直接用開源的SIoT搭建即可。
(1)用戶動作判斷
動作檢測裝置程序的核心功能是利用XEduHub的關(guān)鍵點檢測模型對攝像頭的實時畫面進行推理,得到關(guān)鍵點后傳入AI模型中推理,實現(xiàn)對用戶“動作”的實時判斷。為了提高準(zhǔn)確度,筆者還使用了一個小技巧:實時將結(jié)果存放在一個長度為10的序列中,如果其中出現(xiàn)5條相同類型的動作類型,則執(zhí)行“func”函數(shù),發(fā)送消息給模型龍舟。核心代碼如圖6所示。
(2)龍舟模型控制
龍舟模型的主控板使用行空板。要操控行空板,可以使用板載的Jupyter進行程序編寫,在判斷結(jié)果傳入龍舟模型內(nèi)的程序之后,程序根據(jù)收到的物聯(lián)網(wǎng)消息對兩支船槳的速度分別進行控制。核心代碼如圖7所示。
3.硬件搭建
筆者利用激光切割進行龍舟外殼的制作,使用激光切割機對薄木板進行切割,并把木板進行組裝,使用熱熔膠進行連接,并在底部粘貼一塊泡沫塑料使其漂浮在水面上。在龍舟的內(nèi)部安裝了行空板,兩只舵機控制兩支船槳作為龍舟的動力,同時以充電寶作為龍舟的能量來源。
作品測試與體驗
先完成“動作檢測裝置”的基礎(chǔ)功能,即實現(xiàn)單用戶的控制。測試穩(wěn)定后再加人多人模式。單人模式為單人坐在裝置前,手持模擬船槳,通過模擬劃槳動作來控制龍舟的槳,從而實現(xiàn)前進、轉(zhuǎn)向等。裝置能夠根據(jù)用戶的不同動作,實現(xiàn)龍舟的相應(yīng)運動。雙人模式則需要兩人坐在裝置前,手持模擬船槳,通過模擬劃槳動作來控制龍舟的槳,從而實現(xiàn)前進、轉(zhuǎn)向等。裝置能夠根據(jù)用戶的不同動作,實現(xiàn)龍舟的相應(yīng)運動。