李忠玉,張杰,王惠清
(1.成都師范學(xué)院計算機(jī)科學(xué)學(xué)院,成都611130;2.西南醫(yī)科大學(xué)醫(yī)學(xué)信息與工程學(xué)院,瀘州646000)
隨著新興技術(shù)的不斷發(fā)展,各種新技術(shù)產(chǎn)品及其衍生物正逐漸進(jìn)入我們的生活;例如移動支付、智能設(shè)備、智慧城市、智慧農(nóng)業(yè)、機(jī)器人等等極大的便利了我們的日常生活;然而這些新興技術(shù)產(chǎn)品各種功能的實現(xiàn)均需要靠編程來實現(xiàn)。
遠(yuǎn)在古希臘時期,發(fā)明家們就夢想著能創(chuàng)造自主思考替代人類工作的機(jī)器;當(dāng)人類在第一次構(gòu)思可編程計算機(jī)時,就已經(jīng)開始思考如何讓計算機(jī)變得智能。當(dāng)下,人工智能已經(jīng)成為了一個具有相當(dāng)廣泛實際應(yīng)用和諸多研究方向的領(lǐng)域,并且正在迸發(fā)著勃勃生機(jī)[2]。人工智能(Artificial Intelligence),英文縮寫為AI,是一門由計算機(jī)科學(xué)、控制論、信息論、語言學(xué)、神經(jīng)生理學(xué)、心理學(xué)、數(shù)學(xué)、哲學(xué)等多種學(xué)科相互滲透而發(fā)展起來的綜合性新學(xué)科[5]。人工智能大致經(jīng)歷了萌芽期,成長期;2017 年AlphaGo 戰(zhàn)勝圍棋界的頂尖高手開始,引發(fā)了人們對人工智能的廣泛關(guān)注,人工智能由此進(jìn)入了高潮期,同時也引發(fā)了人們的擔(dān)憂,未來機(jī)器是否完全可以取代人工所有的工作;這種憂慮其實不是非常必要,因為機(jī)器也是按照人類預(yù)先設(shè)定的算法程序來工作的,即按照人類想法來工作,那么這里面算法程序就是機(jī)器的大腦;在人工智能時代的背景下,程序設(shè)計就成為了核心。世界各國為了爭先搶占人工智能技術(shù)領(lǐng)域,儲備人才,已經(jīng)有20 多個國家陸續(xù)將青少年編程作為了重要的基礎(chǔ)教育部分;調(diào)查研究[8]發(fā)現(xiàn)在美國,青少年編程教育浸透率高達(dá)44.26%,在英國,接近11%。2017 年7 月,我國《新一代人工智能發(fā)展規(guī)劃的通知》中提出:將人工智能發(fā)展作為國家戰(zhàn)略層面系統(tǒng)布局,搶抓人工智能發(fā)展的重大戰(zhàn)略機(jī)遇,構(gòu)筑我國人工智能發(fā)展的先發(fā)優(yōu)勢,加快建設(shè)創(chuàng)新型國家和世界科技強(qiáng)國,這就要求快速大量的儲備人工智能人才;因此在高等教育層面各大高校緊跟政策紛紛設(shè)立人工智能學(xué)院,在基礎(chǔ)教育層面多省市在中小學(xué)校園開始設(shè)立信息技術(shù)課,讓青少年學(xué)習(xí)編程,推廣青少年編程教育,培養(yǎng)青少年程序設(shè)計思維[3]。
隨著世界范圍內(nèi)對青少年編程教育的重視程度越
來越高,圖形化編程工具漸漸進(jìn)入了人們的視野并變得流程起來,從國外著名的Scratch 到國內(nèi)各大創(chuàng)客公司開發(fā)的圖形化編程集成工具包、套件包都顯示了該領(lǐng)域迅猛的發(fā)展勢頭。傳統(tǒng)的程序設(shè)計模式都是在集成開發(fā)環(huán)境的字符環(huán)境中進(jìn)行編程,對于多數(shù)高校學(xué)生上手都比較困難,更別說青少年;由此圖形化編程營運(yùn)而生,相較于傳統(tǒng)的編程模式,圖形化編程更加的方便、易于上手,整個程序的編寫過來類似于圖形的拼接,更能激發(fā)青少年對于成本的興趣;整個程序編寫的過程中將一條條字符指令變成圖形,通過類似搭積木的方式通過拖拽就能實現(xiàn)程序的功能,將枯燥的代碼通過圖形化的小游戲來實現(xiàn)。目前比較主流的圖形化編程工具有麻省理工學(xué)院的“終身幼兒園團(tuán)隊”開發(fā)的圖形化編程工具Scratch,還有一些都是基于Scratch 進(jìn)行的二次開發(fā)。北京師范大學(xué)教育學(xué)部創(chuàng)客教育實驗室傅騫教授團(tuán)隊開發(fā)的圖形化編程軟件Mixly[8],該軟件使用圖形化編程的方式自動生成Arduino 代碼,并支持編譯和燒錄到對應(yīng)硬件設(shè)備中。
Scratch 由麻省理工學(xué)院開發(fā)的面對少年的一款免費(fèi)下載和使用的簡易編程工具,能讓孩子們體會編程創(chuàng)作的樂趣。本節(jié)介紹的二次開發(fā)版本Arduino-Scratch 界面如圖1 所示。
該編程工具可以在Scratch 和Arduino 模式下任意切換,編程過程是通過選擇對應(yīng)的角色,并給選定的角色設(shè)定控制模式,對于學(xué)生初級編程具有良好的應(yīng)用場景。
Mixly,中文名為米思齊,全稱為Mixly_Arduino,是一款由北京師范大學(xué)教育學(xué)部創(chuàng)客教育實驗室傅騫教授團(tuán)隊開發(fā)的圖形化編程軟件[6]。該軟件使用圖形化編程的方式自動生成Arduino 代碼,并支持編譯和燒錄到對應(yīng)硬件設(shè)備中,在人工智能編程方面,其有一個專用的人工智能模塊,可結(jié)合百度AI 開放平臺完成一些易于青少年理解的人工智能案例。其界面如圖2所示。
圖2 Mixly開發(fā)界面
米思齊圖形化編程工具中有人工智能模塊能夠結(jié)合百度AI 開放平臺實現(xiàn)若干人工智能技術(shù)。本節(jié)將著重介紹Mixly 編程實現(xiàn)語言合成、圖像識別和文字識別。
前文闡述利用Mixly 編程完成人工智能技術(shù)需要結(jié)合百度AI 開放平臺,首先需要在百度AI 開放平臺成功創(chuàng)建應(yīng)用,如圖3 所示。
圖3 百度AI開放平臺創(chuàng)建應(yīng)用界面
語音合成系統(tǒng)一般分別四個部分:文本輸入、文本分析、語音合成與輸出文件。
(1)文本輸入:輸入語音合成的文本;
(2)文本分析:主要是分析傳入文本中的詞性標(biāo)注、韻律預(yù)測、多音字消除歧義以及句子中的單詞邊界等;
(3)語音合成:主要是通過讀入(2)中的分析結(jié)果,并對語音部分結(jié)合文本信息進(jìn)行建模;
(4)輸出文件:主要是利用輸入的文本信息和訓(xùn)練好的聲學(xué)模型,生成語音信號進(jìn)行輸出。
本節(jié)利用Mixly 編程實現(xiàn)語音合成:“高德導(dǎo)航為您服務(wù),導(dǎo)航正式開始,前方20 米左轉(zhuǎn),然后上橋?!辈⑸傻奈募4嬖趎avigation.mp3 中,并能播放。
在編程環(huán)境中選擇Mixly 軟件的mixpy 版本,并將在百度AI 開放平臺創(chuàng)建的任務(wù)的AppID 號、API Key編號及Secret Key 編號填入編程模塊如圖4 所示。
圖4 模塊選擇及任務(wù)號輸入界面
選擇人工智能模塊中的語音合成模塊,如圖5所示。
圖5 語音合成模塊
語音合成模塊包括3 個參數(shù):客戶端、內(nèi)容和屬性;需要首先初始化語音合成客戶端,內(nèi)容模塊就是要合成的語音內(nèi)容,屬性是指可以對合成的語音進(jìn)行細(xì)節(jié)性的設(shè)置,例如:語速、語調(diào)及音色等,可以采用默認(rèn)設(shè)置。在利用Mixly 實現(xiàn)語音合成步驟如下:
(1)在人工智能模塊中選擇初始化模塊,在選擇語音技術(shù)初始化,然后根據(jù)百度AI 開放平臺任務(wù)信息填寫相應(yīng)的參數(shù),如圖4 所示;
(2)由于合成的語音最終需要輸出所以在人工智能模塊中拖出語音合成模塊,在輸入輸出模塊中拖出打印模塊并連接在一起,如圖6 所示。
圖6 語音合成及打印模塊
(3)為了將語音合成的文件寫入到任務(wù)要求的文件中,拖出文件模塊下的打開文件模塊,將名稱改成項目要求的navigation.mp3,如圖7 所示。
圖7 打開文件模塊
(4)將合成的語音模塊寫入文件并播放;此步驟先將文件模塊下的寫入文件模塊拖出,刪去打印模塊,再將語音合成內(nèi)容改成項目要求內(nèi)容,最后拖出文件模塊下的使用系統(tǒng)默認(rèn)軟件打開文件,合并模塊,如圖8所示。
圖8 文件播放模塊
在系統(tǒng)中采用默認(rèn)方式播放合成的語音,運(yùn)行結(jié)果如圖9 所示。
由圖9 所示,圖左邊是用電腦系統(tǒng)默認(rèn)的MP3 播放語音合成的文件,右圖是Mixly 的編程界面,可以看出使用Mixly 人工智能模塊結(jié)合百度AI 開放平臺能夠較為容易的實現(xiàn),其模塊對應(yīng)的代碼如圖10 所示。
在Mixly 中每個模塊對應(yīng)一段代碼,學(xué)生通過在模塊界面拖拉對應(yīng)模塊就能實現(xiàn),方便與且易于操作,同時程序運(yùn)行的結(jié)果一目了解緊貼生活,能極大激發(fā)青少年的興趣。
圖9 運(yùn)行結(jié)果
圖10 代碼展示
通常情況下圖像識別分為三個過程:預(yù)處理、特征提取和分類器設(shè)計。
(1)預(yù)處理:通常是指對圖像進(jìn)行去燥、平滑、變換等操作,用以加強(qiáng)圖像的重要屬性特征;
(2)特征提取:根據(jù)圖像的信息,通常指顏色、亮度等得到物體的輪廓,然后根據(jù)輪廓對應(yīng)的數(shù)據(jù)來確定輪廓的內(nèi)容的物體特征;
(3)分類器設(shè)計:通過訓(xùn)練得到物體的屬性,通過屬性得到特征的分類,增強(qiáng)圖像識別的準(zhǔn)確度。
本節(jié)闡述利用Mixly 實現(xiàn)圖像識別的過程,項目任務(wù):將圖片中的物體識別出來,并顯示名稱。
(1)在人工智能模塊中選擇初始化模塊,再選擇圖像識別初始化,然后根據(jù)百度AI 開放平臺任務(wù)信息填寫相應(yīng)的參數(shù);在人工智能模塊中選擇圖像識別代碼塊,圖像識別模塊有四個分類,客戶端及屬性等均與語音合成模塊相同,其功能模塊是用來選擇識別的場景,例如:通用物體、植物、動物及車輛等,該項目選用通用物體,圖片選項是用來選擇待識別的圖片所在的位置,其參數(shù)特征如圖11 所示。
圖11 圖像識別模塊展示
(2)在文件分類選項中選擇打開文件模塊,并將模式設(shè)置為二進(jìn)制讀;在人工智能模塊中拖拽出選擇并獲取單個文件名模塊,與打開文件連接;同時在文件模塊中拖出從文件讀取內(nèi)容模塊與圖形識別模塊的圖片接口相連接。在輸入/輸模塊中拖出打印自動換行模塊,同時在人工智能模塊中拖出獲取結(jié)果模塊,連接在打印與圖形識別模塊的中間,此時運(yùn)行可以得到相應(yīng)的結(jié)果;如圖12、圖13 所示,左邊為水果圖片,左邊為運(yùn)行結(jié)果。
圖12
圖13
從運(yùn)行結(jié)果圖12 可以看出,左邊為櫻桃圖片,通過編程后運(yùn)行結(jié)果顯示可以準(zhǔn)確的識別圖片中的物體;圖13 左邊為原圖楊桃,右邊的運(yùn)行結(jié)果準(zhǔn)確的顯示了圖片中的物體。說明通過編程實現(xiàn)了項目任務(wù)。
計算機(jī)識別圖片中的文字一般分為三步步驟:圖片預(yù)處理、特征提取和分類器分類;
(1)圖片預(yù)處理:通常是對原始圖片進(jìn)行灰度化、二值化、降噪矯正及字符分割等環(huán)節(jié);
(2)特征提取:指根據(jù)識別的語言,提取字符相應(yīng)的特征;
(3)分類器分類:根據(jù)合適的訓(xùn)練分類器根據(jù)得到的特征獲取相應(yīng)文件內(nèi)容。
本節(jié)項目使用Mixly 軟件編程實現(xiàn)圖片中的文字識別,并顯示出來。其實現(xiàn)過程如下:
(1)在人工智能模塊中選擇初始化模塊,再選擇文字識別初始化,然后根據(jù)百度AI 開放平臺任務(wù)信息填寫相應(yīng)的參數(shù);在人工智能模塊中選擇文字識別代碼塊,文字識別模塊有四個分類,客戶端及屬性等均與圖像識別模塊相同,其功能模塊是用來選擇文字識別的場景,例如:印刷文字、手寫文字及證件等多個場景,本項目選用通用文字識別,圖片選項是用來選擇待識別文字的圖片所在的位置,其參數(shù)特征如圖14 所示。
圖14 文字識別模塊
(2)同圖像識別操作一樣,在文件分類選項中選擇打開文件模塊,并將模式設(shè)置為二進(jìn)制讀;在人工智能模塊中拖拽出選擇并獲取單個文件名模塊,與打開文件連接;同時在文件模塊中拖出從文件讀取內(nèi)容模塊與文字識別模塊的圖片接口相連接。在輸入/輸模塊中拖出打印自動換行模塊與文字識別模塊相連,執(zhí)行結(jié)果如圖15 所示,其中左邊為原始圖片的文字,右邊為運(yùn)行結(jié)果。
圖15 中右圖運(yùn)行結(jié)果的下方可以看出,運(yùn)行結(jié)果通過一行顯示,如果文字過長的話,通過一行顯示看起來不方便,所以可以通過如下操作完成識別文字的換行顯示;首先將字典分類中的獲取鍵對應(yīng)值模塊拖出,將獲取鍵值改為words_result,并將該模塊與文字識別模塊相連;然后點(diǎn)擊變量列表將變量賦值模塊拖出,并將變量命名為list,并將該模塊放于打印模塊的上方,在將變量模塊中l(wèi)ist 變量拖出放在打印模塊的結(jié)尾;為了將文字中的每一項每一個條目都顯示出來,需要用循環(huán)完成,將控制分類中的對每項執(zhí)行模塊拖出,在將變量中的list 拖一個出來作為循環(huán)的參數(shù),同時刪除不需要的參數(shù);然后再將字典分類中的獲取鍵的對應(yīng)值模塊拖出,在變量分類中i 拖出作為獲取鍵的第一個參數(shù),獲取鍵的名稱改為words,再將打印自動換行模塊放入循環(huán)模塊中,將打印參數(shù)替換為剛拖出的獲取鍵對應(yīng)值模塊,并刪除多余的list 變量模塊,再將循環(huán)連接到程序的下方;最后運(yùn)行程序,其結(jié)果如圖16 所示,左邊為原始圖片文字信息,右邊為運(yùn)行結(jié)果。
圖15
圖16
在廣泛人工智能產(chǎn)品應(yīng)用的時代背景下,圖形化編程教育能夠有效的降低青少年學(xué)習(xí)人工智能方面知識和技能的門檻。圖形化編程工具入門簡單,但是其同時具備字符編程的完整思想體系,可以作為青少年學(xué)習(xí)編程的過渡性工具,應(yīng)用Mixly 人工智能模塊結(jié)合百度AI 開放平臺,雖然僅僅是簡單的應(yīng)用了人工智能算法,但是其體現(xiàn)了整個程序設(shè)計過程總的邏輯環(huán)節(jié),對于青少年學(xué)習(xí)人工智能具有很大的幫助。