楊 倩,楊明趙,楊 奕
(重慶理工大學(xué)電氣與電子工程學(xué)院,重慶 400054)
近年來,人工智能成為國際熱點,2017年下半年,國務(wù)院印發(fā)《新一代人工智能發(fā)展規(guī)劃》,明確指出人工智能成為國際競爭的新焦點,我國應(yīng)該借助民間力量,逐步開展全民智能教育項目,逐步推廣編程教育、建設(shè)人工智能學(xué)科,培養(yǎng)復(fù)合型人才,形成我國人工智能人才高地[1]。
但是,人工智能是一門綜合性學(xué)科,本身涉及了線性代數(shù)、微積分、概率論、高階算法以及編程等[2],在基礎(chǔ)教育中開設(shè)人工智能課程面臨這樣一個問題:在學(xué)生不具備這些基礎(chǔ)的情況下,如何提高學(xué)生積極性、正確引導(dǎo)學(xué)生學(xué)習(xí)這門課程[3]。本文所述項目通過使用開源硬件,搭建而成的人工智能小車,讓學(xué)生通過玩游戲這種寓教于樂方式來訓(xùn)練算法,最終將小車訓(xùn)練成為無需人工干涉、能夠自主決策行駛的“無人駕駛”小車,把人工智能理念和思維方式融入到師生共同參與的實踐項目中來,本開放實驗實現(xiàn)了“先實踐、后理論”這樣的“體驗式”人工智能基礎(chǔ)學(xué)習(xí)過程[4]。
本實驗項目基于樹莓派開源硬件,通過改裝市面上常見的電動小車,并將控制系統(tǒng)與樹莓派相連接,達到了將普通的電動小車,升級成為人工智能無人駕駛小車的目的。整個項目不僅成本較低,也具有較強的可行性、新穎性和趣味性。
樹莓派是一個卡片大小的開發(fā)板,上面運行了Linux系統(tǒng),具有電腦的所有基本功能,樹莓派最初設(shè)計目的是用來提升學(xué)校計算機科學(xué)及相關(guān)學(xué)科的教育,讓計算機變得有趣[5]。開發(fā)板提供了豐富的外部設(shè)備或者接口,本項目主要使用WiFi、攝像頭、GPIO等組件,使用攝像頭采集圖像,通過GPIO連接小車控制系統(tǒng),通過WiFi接入PC局域網(wǎng),使用PC遠程控制樹莓派采集數(shù)據(jù)和運算。整個系統(tǒng)可以簡化成如圖1所示結(jié)構(gòu)。
圖1 智能小車整體邏輯結(jié)構(gòu)
工作原理是通過處理攝像頭的圖像數(shù)據(jù)(圖像上面包含了地面畫好的車道),根據(jù)圖像數(shù)據(jù)判斷發(fā)出相應(yīng)的控制信號控制小車行駛,所以攝像頭是小車的“眼睛”,基于直流電機的動力和轉(zhuǎn)向系統(tǒng)是智能小車的“四肢”,而樹莓派開發(fā)板就是整個小車“大腦”[6]。圖2是訓(xùn)練好的小車在自主行駛過程中的照片。
圖2 自主運行中的智能小車
樹莓派運行的核心算法是使用Python編程語言進行開發(fā)的神經(jīng)網(wǎng)絡(luò)算法,程序周期性從攝像頭采集圖像通過訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型進行加權(quán)運算,得到需要小車左轉(zhuǎn)、右轉(zhuǎn)、前進、后退、停車的概率,確定小車下一步的行駛方向[7]。
神經(jīng)網(wǎng)絡(luò)包含了基本的輸入層、輸出層和一個隱藏層,為了降低訓(xùn)練復(fù)雜度,從攝像頭采集的圖像先經(jīng)過縮放成75×75分辨率大小的灰度圖像,然后每個像素作為一個特征輸入[8]。輸出層包含5個分類:左轉(zhuǎn)L、右轉(zhuǎn)R、前進F、后退B、停車H。隱藏層神經(jīng)元的個數(shù)可以根據(jù)經(jīng)驗值動態(tài)確定,該參數(shù)可以由學(xué)生在實驗過程中通過不同的值的結(jié)果進行觀察比較來確定,在這里隱藏層神經(jīng)元的個數(shù)通常是介于輸入和輸出層之間的一個數(shù)[9]。圖3是該神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。通常訓(xùn)練該神經(jīng)網(wǎng)絡(luò)使用2000~3000張圖片作為訓(xùn)練數(shù)據(jù)集能夠獲得比較好的效果。
圖3 人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
機器學(xué)習(xí)算法最大的應(yīng)用難點在于訓(xùn)練數(shù)據(jù),因為首先機器學(xué)習(xí)需要的學(xué)習(xí)數(shù)據(jù)量比較大,通過大量的數(shù)據(jù),算法才能從中找到規(guī)律,再者,每一項訓(xùn)練數(shù)據(jù)需要包含輸入以及理論上應(yīng)該得到的輸出,這稱為“標注數(shù)據(jù)”,該項目的標注數(shù)據(jù)就是每一幀攝像頭圖像以及與之對應(yīng)的直行、向左、向右行駛的“輸出”,顯然,通過人工對每一項數(shù)據(jù)進行判斷,然后標注輸出這種方式工作量大、容易出錯,所以在該項目中,我們開發(fā)了類似于電腦游戲的數(shù)據(jù)采集程序,PC端使用方向鍵通過WiFi遠程控制小車多次按畫好的車道前進,期間周期性地采集攝像頭數(shù)據(jù)并且檢測鍵盤方向鍵按下情況,將圖像數(shù)據(jù)和方向鍵一并保存下來,得到標注數(shù)據(jù)。
總的來看,該項目通過指導(dǎo)學(xué)生搭建網(wǎng)絡(luò)環(huán)境、動手制作實驗設(shè)備、采集數(shù)據(jù)、算法訓(xùn)練以及運行幾個部分,讓學(xué)生理解編程和人工智能的基本工作過程。通過該實驗項目的實施,可以達到以下幾個方面的目的。
1) 降低入門難度:本項目不是從枯燥的基礎(chǔ)理論開始,而是讓學(xué)生從一個看得見、摸得著的硬件項目開始,動手制作一臺具有實際功能的小車,小車涉及到的知識深淺適中,學(xué)生學(xué)習(xí)起來更加有積極性。
2) 促進編程教育:業(yè)界普遍認為,普及人工智能相關(guān)課程,重在進行邏輯思維能力的提升和思維方式的改變。人工智能的教育離不開編程教育,本項目使用Python作為編程語言,可以讓學(xué)生更容易理解編程基礎(chǔ),學(xué)習(xí)其思維方式,符合基礎(chǔ)編程教育的初衷。
另外,本項目過程中引入了游戲開發(fā)的思維,讓學(xué)生通過玩游戲的方式來訓(xùn)練機器學(xué)習(xí)算法,過程更富有趣味性,讓教學(xué)更容易推行下去[10]。
本項目以一種普通學(xué)生比較容易接受的方式,將編程、人工智能知識融入到學(xué)生參與的每一個過程當(dāng)中,正如國務(wù)院印發(fā)《新一代人工智能發(fā)展規(guī)劃》所指出:“逐步推廣編程教育,鼓勵社會力量參與寓教于樂的編程教學(xué)軟件、游戲的開發(fā)和推廣”,本項目讓學(xué)生先體驗整個過程,然后進行一些理論引導(dǎo),實現(xiàn)了體驗式的教學(xué)模式,通過寓教于樂的過程,達到了推廣編程教育的目的,方法值得廣大教育工作者借鑒和推廣。