謝作如
問題的提出
2017 年10 月,在全國中小學(xué)校園創(chuàng)客嘉年華活動啟動儀式中,筆者設(shè)計了一個名叫“匯·聚”的啟動儀式道具,10 多位國內(nèi)創(chuàng)客骨干教師各持一塊micro:bit(開源硬件),不斷按下按鍵,每按一次都能在大屏幕上涂抹一個“點”的顏色,當(dāng)“點”越來越多,就組成了活動啟動的畫面。2023 年3 月,在上海人工智能實驗室主辦的高校教育技術(shù)學(xué)專業(yè)AI 課程建設(shè)高峰論壇上,實驗室的工作人員開發(fā)了“高校師范生AI 教育共同體”啟動儀式道具,很有AI 味:用攝像頭識別嘉賓是否在做“點贊”手勢,大屏幕上用進(jìn)度條呈現(xiàn)“點贊”人次,進(jìn)度條加載完畢后就能觸發(fā)酷炫的視頻,宣告“高校師范生AI 教育共同體”正式成立。于是,在溫州科技高級中學(xué)的首屆科技節(jié)活動籌備會議中,大家提出參考上海人工智能實驗室的啟動儀式,“復(fù)刻”(remake)一個有AI 味的啟動道具,應(yīng)用于學(xué)??萍脊?jié)活動。
啟動儀式道具核心技術(shù)分析
啟動儀式道具的工作流程分析
一個典型的啟動儀式大致可以分為活動準(zhǔn)備、嘉賓交互和正式啟動3 個環(huán)節(jié)。其中嘉賓交互環(huán)節(jié)一般要體現(xiàn)“匯聚力量”這一主題,而正式啟動環(huán)節(jié)直接播放一個啟動視頻是最穩(wěn)妥、經(jīng)濟的選擇。因此,一般的啟動儀式道具工作流程如圖1 所示,可以看出,不同啟動道具核心區(qū)別在于嘉賓交互環(huán)節(jié)。
嘉賓交互環(huán)節(jié)的識別技術(shù)選擇
在AI 識別技術(shù)方面,有很多可以選擇的對象(表情、手勢、聲音等)和啟動方式(呈現(xiàn)笑臉數(shù)量、做同一種手勢數(shù)量、鼓掌熱烈程度等)。從AI 識別的難度看,動作是一種序列數(shù)據(jù),識別起來難度較大,尤其在嘉賓數(shù)量比較多的情況下,序列數(shù)據(jù)的推理對算力的要求也比較高。而無論是識別表情、手勢還是吉祥物一類的目標(biāo),相關(guān)技術(shù)均比較成熟,比如上海人工智能實驗室的XEduHub 工具,內(nèi)置了很多常見的檢測模型,使得編程難度進(jìn)一步降低。經(jīng)過權(quán)衡,學(xué)生最終選擇了識別雙手點贊姿勢作為識別對象,一方面雙手點贊很有儀式感,AI判斷起來較容易,更重要的是,在硬件上僅需一個高清攝像頭即可,很容易實現(xiàn)。
設(shè)計啟動道具項目實施步驟
素材準(zhǔn)備
啟動畫面和視頻制作
首先,需要制作一個嘉賓交互環(huán)節(jié)的等待畫面和一段正式啟動環(huán)節(jié)需要的視頻素材。其中,等待畫面可用AIGC 工具生成一張圖,留下顯示畫面和數(shù)字或滾動條的位置。比如,圖2 中心形的位置,用于顯示攝像頭實時采集的畫面,而右側(cè)區(qū)域用于顯示交互檢測的進(jìn)度。制作視頻的工具和方法很多,在此不作詳述。
數(shù)據(jù)集采集和整理
從人工智能解決問題的角度看,采集相應(yīng)的數(shù)據(jù)從而形成數(shù)據(jù)集是后續(xù)模型訓(xùn)練的常規(guī)準(zhǔn)備工作。但識別“雙手點贊”姿勢,屬于人體關(guān)鍵點的識別技術(shù),相關(guān)技術(shù)已非常普遍,比如MediaPipe、MMPose 和XEduhub 等工具,均提供了很好的預(yù)訓(xùn)練模型,開箱即用,無須收集數(shù)據(jù)。當(dāng)然,如果識別的是某個特定的Logo 圖片或吉祥物,則須做數(shù)據(jù)標(biāo)注。
環(huán)境搭建
雖然浦育平臺(www.openinnolab.org.cn)提供了已經(jīng)預(yù)裝好開發(fā)環(huán)境的容器(虛擬服務(wù)器),打開瀏覽器就能開發(fā)這個AI 項目。但考慮到AI 程序最終要運行在本地電腦上,還是需要先搭建開發(fā)和運行環(huán)境,可使用XEdu一鍵安裝包或pip 方式安裝Python 庫。
XEdu一鍵安裝包
XEdu 一鍵安裝包內(nèi)置了Python 環(huán)境和必要的模塊,直接解壓就能使用,支持Win7(64 位)及以上系統(tǒng)。如果直接運行Thonny 文件出錯,則可以先運行“故障解決”腳本,一般的問題都能得到解決。
pip方式安裝
開發(fā)Python 程序需要一個趁手的工具,筆者推薦Thonny。安裝Thonny 后,再通過“包管理”工具安裝“XEdu-python”。熟悉命令行的話,可以直接輸入“pipinstall XEdu-python”完成安裝。
代碼編寫
從啟動儀式道具的工作流程可看出,項目代碼需實現(xiàn)三大功能。
處理攝像頭畫面
攝像頭畫面的獲取,一般都是借助OpenCV 庫。這方面的代碼可借助大語言模型生成,比如在“商量”(商湯大語言模型)中輸入類似的提示詞(Prompt):“請給我一段Python 代碼,獲取攝像頭畫面,并逐幀縮小顯示在一張名為“bg.jpg”的圖片中間,并在圖片中的右邊顯示數(shù)字”。大語言模型會輸出一段代碼,復(fù)制到Thonny 中就能運行。
識別嘉賓手勢
XEduHub 內(nèi)置的人體關(guān)鍵點檢測任務(wù)主要有“pose_body”“pose_face”“pose_hand”等,分別對應(yīng)身體、臉部和手部檢測。因為有很多嘉賓,直接識別手部效果不好,常見的做法是先檢測出身體(任務(wù)名為det_body),然后把身體的畫面截取出來提取人體或手部關(guān)鍵點(任務(wù)名分別為pose_body17 和pose_hand),再判斷是否做了“雙手點贊”的動作,其流程為:獲取攝像頭畫面—檢測人體—檢測手勢—計數(shù)。
在XEduHub 中,人體關(guān)鍵點檢測的任務(wù)有很多種。如圖3 所示,任務(wù)名稱最后的數(shù)字表示關(guān)鍵點的個數(shù)。運行不同模型所需的算力和時間也不同,與本地電腦算力密切相關(guān)。交互檢測環(huán)節(jié)可能有很多嘉賓,速度非常重要, 因此, 檢測“ 雙手點贊” 姿勢未必需要“pose_wholebody133”,可以找一些巧妙的辦法,比如用“pose_body17”,判斷關(guān)鍵點9 和10(左右雙腕)是否高過腰線(關(guān)鍵點11 和12)等。
啟動視頻的控制與播放
在Python 中,有很多方法可以實現(xiàn)加載、播放視頻,比如“movie.py”“pygame”。鑒于代碼已經(jīng)用到了OpenCV,也可選擇OpenCV 播放視頻,另外開啟一個進(jìn)程播放音樂。
項目成果演示與反饋
這個有AI 味的啟動儀式給溫州科技高中的師生留下了深刻印象,大家驚嘆于學(xué)生已經(jīng)能夠駕馭AI 功能,也感慨于AI 技術(shù)的平民化。美中不足的是,由于嘉賓從3 位增加到9 位,增大了AI 模型計算的壓力,電腦在算力方面有些力不從心。
在設(shè)計過程中,學(xué)生還提出了更多的創(chuàng)意,比如大家一致認(rèn)為用整齊的動作能讓現(xiàn)場氣氛變得更熱烈;對編程有研究的一名學(xué)生則提出另一種視頻控制方案:在預(yù)先做好的視頻中,將進(jìn)度條(或百分比)均勻制作在視頻中,而不是靠現(xiàn)場合成,然后在現(xiàn)場用代碼控制視頻播放的進(jìn)度。
至于AI檢測部分,學(xué)生也有更多想法,比如直接用任務(wù)“det_hand”檢測出手,再用任務(wù)“pose_hand”檢測手部關(guān)鍵點,可能速度更快;或者用BP 網(wǎng)絡(luò)(全連接網(wǎng)絡(luò))訓(xùn)練一個手部關(guān)鍵點的分類模型,用于判斷是否做了點贊姿勢,比用“if”判斷要精確,可減少誤判。