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