



摘要:全鏈路AI的開發是指將AI技術應用在數據集制作、模型訓練和模型應用等多個環節。本文依據全鏈路AI開發思路,實現了一款視力檢測AI小助手的制作。除了在項目開發過程中使用了手部檢測模型、關鍵點提取模型和手勢判斷模型這三個AI模型外,這款視力檢測AI小助手還在多處應用了AI技術,如借助大模型的多輪對話完成較復雜程序的編寫,解決數據歸一化問題等,為中小學實施人工智能教育提供了新的思路。
關鍵詞:視力檢測;全鏈路AI;XEdu;大模型
在青少年AI教學設計中,選擇貼近生活的應用場景,面向真實問題解決能提升學生的學習興趣。在和學生討論的過程中筆者發現,視力檢測工作沒法一個人完成,必須團隊合作才行。其中最大的難題是,需要工作人員來引導并確認結果——你所指的方向是不是正確。顯然,視力檢測的引導工作很枯燥,完全可以用AI來替代。
能否設計一款AI小助手,不借助他人就能自行完成視力檢測?從技術上看,通過攝像頭采集畫面,再訓練一個能識別手勢方向的AI模型就能做到。但要從零開始實現這個AI小助手的開發,說起來簡單實則復雜,不僅需要訓練手勢判斷AI模型,還涉及技術分析、數據準備、模型訓練和模型應用等多個環節。其中,最煩瑣的工作莫過于采集手勢數據,難度最高的則在于GUI交互界面編寫,因而筆者希望AI為整個項目的所有環節賦能,實現“全鏈路AI開發”。
全鏈路AI的技術路線
在進行視力檢測時,醫生會用視力表中大小不一的圖標來確定患者視力的高低,其流程大致可以概括為選擇一個圖標、看患者手勢、判斷正誤三步,如此反復。如果患者多次判斷錯誤,就可以停止測量,并給出測量結果。AI小助手的工作思路是用電腦屏幕來顯示不同大小的圖標,使用攝像頭來拍攝患者的手勢,并通過AI模型來識別手勢的類別,進而判斷手勢是否正確。
為降低開發難度,筆者用多個小模型組合的方式來解決“視力檢測”問題。先用現成的預模型判斷畫面中的手部,再提取手部關鍵點,最后自行訓練一個模型來判斷手勢的類別。如上頁圖1所示,這種包括數據準備、模型訓練、模型應用這三個環節全都用AI解決的技術路線稱為“全鏈路AI”。值得一提的是,數據準備這個環節,在模型訓練和模型應用中的流程是完全一致的,由此確保數據的一致性。
這個視力檢測AI小助手用到了三個AI模型,分別是手部檢測模型、關鍵點提取模型以及一個自己訓練的手勢判斷模型。相比于直接把攝像頭拍到的手勢圖片傳給AI模型判斷的“端到端”AI技術路線,這種全鏈路AI更為巧妙地利用多個AI模塊組合,化解了算力難題,即在低算力設備上也能流暢運行。
用AI輔助數據集制作
經調研,筆者發現人們習慣的“指示方向”手勢各不相同。有的人用食指指示方向,而有的人則用大拇指。由于手勢的差異,并沒有一個現成的數據集供使用,因此,必須做一個數據集來訓練模型。既然是全鏈路AI,自然就想到了用AI模型來幫忙采集數據集。第一步顯然是要調用攝像頭拍攝指方向的手勢,如果檢測到有手完整地出現在畫面中,就會對檢測區域進行處理,針對檢測到手的區域進行手部關鍵點檢測。
雖然XEdu中的XEduHub自帶了很多AI模型,只需要數行代碼就可以調用對應的功能,但借助大模型,就可以“偷懶”一點,只要正確提問就能獲得一段標準的程序。與大模型持續對話的過程,既是代碼完善的過程,也是理清編程思路的過程。如圖2所示,可以把需求和參考文檔的鏈接同時發給大模型,進而獲得對應的解答。通過不斷給大模型提需求完善代碼,最終將獲得一段可以將實時手勢圖像轉換為手部關鍵點的代碼,并根據不同指示方向進行數據標注,形成的數據集以CSV格式保存。
模型訓練與效果提升
針對手部關鍵點數據,可以用各種機器學習方法來訓練模型。全連接神經網絡作為一種萬能函數擬合器,可以捕捉和學習數據中的復雜關系和模式,尤其是復雜的手勢關系與分類類別之間的對應關系。筆者用BaseNN庫搭建了三層神經網絡進行訓練,參考代碼如圖3所示。
但很快就遇上了難題:無論怎么訓練,模型效果都得不到提升,準確率在35%左右徘徊。經過分析,這是因為數據未經過歸一化。如果數據中存在極端值或不同數據的尺度差異很大,模型可能會對這些極端值過度敏感,從而導致過擬合。此外,如果輸入數據的范圍差異很大,那么在模型優化過程中,難以改善效果或者改善效果的速度會很緩慢。
數據歸一化其實很簡單,就是將數據映射到0到1之間的區間范圍,這樣就可以加快訓練速度,提高模型的泛化能力和穩定性。經過這一番對話和代碼修改,模型的驗證效果達到90%以上(如圖4)。
模型應用和GUI界面開發
訓練好的模型可以實現四類不同手勢的區分,接下來,構建模型應用的核心就是判斷手勢是否和圖標一致,這時候需要一個工具來顯示圖標并進行手勢判斷,這就需要將GUI界面開發和AI模型推理相結合。為此,筆者使用PySimpleGUI進行開發。設定圖標的原始大小和方向,然后等待用戶做出反應,在對拍攝的圖像進行預處理和歸一化之后,將其送入剛才訓練好的模型,對用戶手勢做出判斷,這樣就完成了一次測試流程。通過不斷改變圖標的大小和方向來測試用戶的視力,這樣,就完成了視力檢測AI小助手的制作。
小結
從制作視力檢測AI小助手的過程中可以發現,雖然AI模型訓練很重要,但一個完整AI項目的開發則包含了數據集制作、模型訓練和模型應用等多個環節。倘若能在每一個環節中,都向學生滲透和普及相關的AI技術,而不是做一些枯燥的勞動,整個學習過程將會十分精彩,達到“用AI學AI”的效果。
本文為2022年度上海市自然科學基金面上項目“基于多模態數據融合的在線學習認知模型及優化研究”(項目編號:22ZR1421300)的階段性研究成果。