陸雅楠 上海人工智能實驗室
謝作如 浙江省溫州科技高級中學
近年來,與甲骨文相關的小視頻曾一度火爆,但這類視頻大多是將甲骨文做成動畫或表情包,創意比較單一。因此,筆者決定另辟蹊徑,做個凸顯互動性的學習小游戲,讓學生在網頁上以“涂鴉”的形式書寫甲骨文,系統則給出評價。這樣,不僅能給學生提供更加直觀、生動的學習體驗,也能使其在感受甲骨文獨特魅力的同時,體驗AI的圖像分類技術的神奇。
從技術角度看,系統的核心是實現甲骨文識別。按照深度學習的一般流程,首先是收集很多甲骨文的圖片,形成數據集,然后訓練一個圖像分類的AI模型。在XEdu工具的圖像分類模塊的幫助下,訓練AI模型用幾行代碼就能完成,已經不再是難題。相對而言,難度較高的是數據集的制作,因為在互聯網上暫時沒有找到能夠直接使用的甲骨文字符數據,只能自己以手繪的形式來制作這個數據集。考慮到工作量,筆者僅僅選擇了“人”和“大”這兩個文字。
采集數據需確保數據的質量和多樣性,筆者參照深度學習領域著名的手寫數字數據集MNIST,進行了手繪甲骨文字符數據集的采集與整理(如圖1)。手繪主要使用電腦自帶的畫圖軟件進行字符手繪并保存為圖片,特意使用了多種類型的、不同粗細的畫筆工具繪制。每個類別的圖片達到500張后,便開始整理數據集為ImageNet格式,即XEdu的圖像分類模型支持的數據集格式,合理劃分訓練集、驗證集和測試集。

圖1 數據集和MNIST對照圖
對于這個支持“涂鴉”識別的學習系統來說,設計一個交互網頁反而難度最高。這涉及Web界面的搭建,需要具備前端開發的能力。可喜的是,已經有團隊將常見的Web交互功能封裝為一個很好用的Python庫,也就是Gradio。借助Gradio只需定義輸入和輸出接口即可快速構建簡單的交互頁面,并輕松部署模型,且只需在一行代碼中加個參數,即設置“source”為“canvas”,Gradio便可實現“涂鴉”功能,非常方便。
在圖像分類模型方面,筆者選擇了LeNet網絡。因為對于白底黑色字符的甲骨文字符數據集來說,LeNet是非常適合的,速度快且效果好。如果不想寫代碼,那就用XEdu內置的EasyTrain工具。圖2是EasyTrain訓練的圖示,“loss”表示模型在訓練集上的損失值,用以衡量模型預測結果與真實值之間的差異。而“accuracy”代表每輪訓練結束后,模型在驗證集上的預測準確率。

圖2 EasyTrain訓練界面
趣味甲骨文學習系統的交互設計部分,是借助Gradio來實現的。Gradio的核心是Interface類,參考代碼如圖3所示,通過關聯的處理函數“predict”,以及定義“inputs”輸入組件類型、“ouputs”輸出組件類型,運行代碼便可啟動一個直觀的、用戶友好的模型交互界面(如圖4)。

圖3 參考代碼

圖4 Gradio的運行界面
當完成了簡易的學習系統后,筆者開始從學生的學習角度思考如何完善這一系統。例如,加入學習游戲的邏輯設置,先自己輸入甲骨文繪制目標文字,再進行繪圖,提交后傳入AI模型進行判斷,不僅要判斷類別是否準確,還要根據置信度給出評分。同時,還可以給學習系統的界面加入使用說明、計時積分等功能。經過優化后,這個學習系統能夠給出比較有趣的提示,交互更加友好,如下頁圖5所示。

圖5 甲骨文學習小游戲運行效果
考慮到部署這一模型的計算機系統可能沒有安裝XEdu,筆者將模型轉換為通用ONNX格式,再借助XEduHub來推理,這樣不僅代碼更加精簡,而且推理速度更快,放在行空板之類的開源硬件上都能運行。
AI模型轉換的代碼如下頁圖6所示,轉換后部署模型的代碼如下頁圖7所示。完整的項目相關文件可在以下網址找到:https://www.openinnolab.org.cn/pjlab/proje ct?id=64faba48929a840fc49ced33&sc=62f34141bf4f550f3e926e0e#public。

圖6 參考代碼

圖7 參考代碼
在成功搭建了這個趣味甲骨文學習系統后,筆者才意識到這一做法為學生提供了一個有趣的學習途徑。因為在制作數據集時,找了好多資料,也學到了很多關于中國古代文字的知識,而這一過程完全可以讓學生來參與,也就是讓學生來制作數據集。學生不僅可以選擇自己感興趣的文字,通過研究和手繪制做出不同的數據集來,還可以通過測試,找出數據集的“瑕疵”,研究更多的甲骨文寫法,讓數據集更加豐富。
因此,筆者準備以這一項目為基礎,開發一個完整的項目式學習課程,引導學生親身參與從數據收集、模型訓練到模型部署的完整過程。項目計劃6課時,配合課程設計可將此項目分成大任務和子任務,大任務是完成一個趣味甲骨文學習小游戲,小任務則圍繞項目創作的流程進行拆分,其中包括主題選擇、創意構思、數據準備、模型訓練、游戲開發、測試優化等。