陸雅楠 上海人工智能實驗室
謝作如 浙江省溫州科技高級中學(xué)
近年來,與甲骨文相關(guān)的小視頻曾一度火爆,但這類視頻大多是將甲骨文做成動畫或表情包,創(chuàng)意比較單一。因此,筆者決定另辟蹊徑,做個凸顯互動性的學(xué)習(xí)小游戲,讓學(xué)生在網(wǎng)頁上以“涂鴉”的形式書寫甲骨文,系統(tǒng)則給出評價。這樣,不僅能給學(xué)生提供更加直觀、生動的學(xué)習(xí)體驗,也能使其在感受甲骨文獨(dú)特魅力的同時,體驗AI的圖像分類技術(shù)的神奇。
從技術(shù)角度看,系統(tǒng)的核心是實現(xiàn)甲骨文識別。按照深度學(xué)習(xí)的一般流程,首先是收集很多甲骨文的圖片,形成數(shù)據(jù)集,然后訓(xùn)練一個圖像分類的AI模型。在XEdu工具的圖像分類模塊的幫助下,訓(xùn)練AI模型用幾行代碼就能完成,已經(jīng)不再是難題。相對而言,難度較高的是數(shù)據(jù)集的制作,因為在互聯(lián)網(wǎng)上暫時沒有找到能夠直接使用的甲骨文字符數(shù)據(jù),只能自己以手繪的形式來制作這個數(shù)據(jù)集。考慮到工作量,筆者僅僅選擇了“人”和“大”這兩個文字。
采集數(shù)據(jù)需確保數(shù)據(jù)的質(zhì)量和多樣性,筆者參照深度學(xué)習(xí)領(lǐng)域著名的手寫數(shù)字?jǐn)?shù)據(jù)集MNIST,進(jìn)行了手繪甲骨文字符數(shù)據(jù)集的采集與整理(如圖1)。手繪主要使用電腦自帶的畫圖軟件進(jìn)行字符手繪并保存為圖片,特意使用了多種類型的、不同粗細(xì)的畫筆工具繪制。每個類別的圖片達(dá)到500張后,便開始整理數(shù)據(jù)集為ImageNet格式,即XEdu的圖像分類模型支持的數(shù)據(jù)集格式,合理劃分訓(xùn)練集、驗證集和測試集。
圖1 數(shù)據(jù)集和MNIST對照圖
對于這個支持“涂鴉”識別的學(xué)習(xí)系統(tǒng)來說,設(shè)計一個交互網(wǎng)頁反而難度最高。這涉及Web界面的搭建,需要具備前端開發(fā)的能力??上驳氖牵呀?jīng)有團(tuán)隊將常見的Web交互功能封裝為一個很好用的Python庫,也就是Gradio。借助Gradio只需定義輸入和輸出接口即可快速構(gòu)建簡單的交互頁面,并輕松部署模型,且只需在一行代碼中加個參數(shù),即設(shè)置“source”為“canvas”,Gradio便可實現(xiàn)“涂鴉”功能,非常方便。
在圖像分類模型方面,筆者選擇了LeNet網(wǎng)絡(luò)。因為對于白底黑色字符的甲骨文字符數(shù)據(jù)集來說,LeNet是非常適合的,速度快且效果好。如果不想寫代碼,那就用XEdu內(nèi)置的EasyTrain工具。圖2是EasyTrain訓(xùn)練的圖示,“l(fā)oss”表示模型在訓(xùn)練集上的損失值,用以衡量模型預(yù)測結(jié)果與真實值之間的差異。而“accuracy”代表每輪訓(xùn)練結(jié)束后,模型在驗證集上的預(yù)測準(zhǔn)確率。
圖2 EasyTrain訓(xùn)練界面
趣味甲骨文學(xué)習(xí)系統(tǒng)的交互設(shè)計部分,是借助Gradio來實現(xiàn)的。Gradio的核心是Interface類,參考代碼如圖3所示,通過關(guān)聯(lián)的處理函數(shù)“predict”,以及定義“inputs”輸入組件類型、“ouputs”輸出組件類型,運(yùn)行代碼便可啟動一個直觀的、用戶友好的模型交互界面(如圖4)。
圖3 參考代碼
圖4 Gradio的運(yùn)行界面
當(dāng)完成了簡易的學(xué)習(xí)系統(tǒng)后,筆者開始從學(xué)生的學(xué)習(xí)角度思考如何完善這一系統(tǒng)。例如,加入學(xué)習(xí)游戲的邏輯設(shè)置,先自己輸入甲骨文繪制目標(biāo)文字,再進(jìn)行繪圖,提交后傳入AI模型進(jìn)行判斷,不僅要判斷類別是否準(zhǔn)確,還要根據(jù)置信度給出評分。同時,還可以給學(xué)習(xí)系統(tǒng)的界面加入使用說明、計時積分等功能。經(jīng)過優(yōu)化后,這個學(xué)習(xí)系統(tǒng)能夠給出比較有趣的提示,交互更加友好,如下頁圖5所示。
圖5 甲骨文學(xué)習(xí)小游戲運(yùn)行效果
考慮到部署這一模型的計算機(jī)系統(tǒng)可能沒有安裝XEdu,筆者將模型轉(zhuǎn)換為通用ONNX格式,再借助XEduHub來推理,這樣不僅代碼更加精簡,而且推理速度更快,放在行空板之類的開源硬件上都能運(yùn)行。
AI模型轉(zhuǎn)換的代碼如下頁圖6所示,轉(zhuǎn)換后部署模型的代碼如下頁圖7所示。完整的項目相關(guān)文件可在以下網(wǎng)址找到:https://www.openinnolab.org.cn/pjlab/proje ct?id=64faba48929a840fc49ced33&sc=62f34141bf4f550f3e926e0e#public。
圖6 參考代碼
圖7 參考代碼
在成功搭建了這個趣味甲骨文學(xué)習(xí)系統(tǒng)后,筆者才意識到這一做法為學(xué)生提供了一個有趣的學(xué)習(xí)途徑。因為在制作數(shù)據(jù)集時,找了好多資料,也學(xué)到了很多關(guān)于中國古代文字的知識,而這一過程完全可以讓學(xué)生來參與,也就是讓學(xué)生來制作數(shù)據(jù)集。學(xué)生不僅可以選擇自己感興趣的文字,通過研究和手繪制做出不同的數(shù)據(jù)集來,還可以通過測試,找出數(shù)據(jù)集的“瑕疵”,研究更多的甲骨文寫法,讓數(shù)據(jù)集更加豐富。
因此,筆者準(zhǔn)備以這一項目為基礎(chǔ),開發(fā)一個完整的項目式學(xué)習(xí)課程,引導(dǎo)學(xué)生親身參與從數(shù)據(jù)收集、模型訓(xùn)練到模型部署的完整過程。項目計劃6課時,配合課程設(shè)計可將此項目分成大任務(wù)和子任務(wù),大任務(wù)是完成一個趣味甲骨文學(xué)習(xí)小游戲,小任務(wù)則圍繞項目創(chuàng)作的流程進(jìn)行拆分,其中包括主題選擇、創(chuàng)意構(gòu)思、數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練、游戲開發(fā)、測試優(yōu)化等。