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