本發(fā)明屬于人工智能領(lǐng)域,涉及利用仿真生成樣本實現(xiàn)無人車自主行進(jìn)的方法,尤其是涉及在仿真平臺生成訓(xùn)練樣本,并應(yīng)用于無人車自主行進(jìn)的網(wǎng)絡(luò)訓(xùn)練方法。
背景技術(shù):
針對深度神經(jīng)網(wǎng)絡(luò),許多研究已經(jīng)表明,網(wǎng)絡(luò)能從大量帶有標(biāo)注的訓(xùn)練樣本中學(xué)習(xí)得到模型。訓(xùn)練得到的模型可應(yīng)用于自然和人為問題,包括無人車自主行進(jìn)任務(wù),且具有優(yōu)異的性能。但網(wǎng)絡(luò)的良好性能需要大量訓(xùn)練數(shù)據(jù),而不同領(lǐng)域、不同的任務(wù)所需的訓(xùn)練數(shù)據(jù)不完全相同,若在現(xiàn)實世界中針對性地采集數(shù)據(jù)并進(jìn)行標(biāo)注,耗時且成本昂貴。
以無人車導(dǎo)航為例,比如在只有人類轉(zhuǎn)向角度作為訓(xùn)練信號的情況下,網(wǎng)絡(luò)能自動學(xué)習(xí)檢測有用的道路特征。該方法可大大減少訓(xùn)練樣本量,帶來更好的性能以及更小巧的系統(tǒng)。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供利用仿真生成樣本實現(xiàn)無人車自主行進(jìn)的方法,使得能提高數(shù)據(jù)的有效性和利用率。為此,本發(fā)明提供以下技術(shù)方案:
一種利用仿真生成樣本實現(xiàn)無人車自主行進(jìn)的方法,該方法包括如下步驟:
步驟一、搭建仿真模型,在仿真平臺生成訓(xùn)練樣本;
步驟二、用步驟一生成的訓(xùn)練樣本通過循環(huán)神經(jīng)網(wǎng)絡(luò)實現(xiàn)端到端訓(xùn)練,端到端的一端是指輸入傳感器測量數(shù)據(jù),另一端是指輸出無人車的控制指令;
步驟三、控制無人車在現(xiàn)實場景中運行,獲取相應(yīng)的傳感器數(shù)據(jù)和控制指令,對步驟二的神經(jīng)網(wǎng)絡(luò)的各層參數(shù)進(jìn)行處理,得到適用于該無人車自主行進(jìn)的循環(huán)神經(jīng)網(wǎng)絡(luò)。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以采用一下進(jìn)一步的技術(shù)方案:
步驟一中,搭建仿真模型并在仿真平臺生成訓(xùn)練樣本的方法如下:
1-1.搭建無人車仿真模型,添加激光測距傳感器;
1-2.在仿真平臺隨機(jī)加入障礙物,構(gòu)建場景;
1-3.將無人車置于仿真場景中,控制無人車在仿真場景中無碰撞地安全行駛,記錄無人車的轉(zhuǎn)向角速度和運行速度,同時將測距傳感器測量得到的數(shù)據(jù)及相應(yīng)的時間戳記錄到本地;
1-4.重復(fù)執(zhí)行場景構(gòu)建及無人車運行,產(chǎn)生足量數(shù)據(jù),并指定激光測距傳感器測量數(shù)據(jù)為神經(jīng)網(wǎng)絡(luò)的輸入,控制指令為神經(jīng)網(wǎng)絡(luò)的輸出。
步驟二中,使用循環(huán)神經(jīng)網(wǎng)絡(luò)實現(xiàn)端到端訓(xùn)練的具體方法如下:
2-1.建立處理序列數(shù)據(jù)的循環(huán)神經(jīng)網(wǎng)絡(luò),將測距傳感器測量數(shù)據(jù)預(yù)處理后作為循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入,標(biāo)記為,xt表示t時刻神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù),將轉(zhuǎn)向角速度和速度等控制指令作為神經(jīng)網(wǎng)絡(luò)輸出,標(biāo)記為,ot表示t時刻神經(jīng)網(wǎng)絡(luò)輸出的控制參數(shù),將循環(huán)神經(jīng)網(wǎng)絡(luò)隱藏單元標(biāo)記為,st表示t時刻神經(jīng)網(wǎng)絡(luò)隱藏單元的狀態(tài),其中xt,ot,st是一一對應(yīng)的,下標(biāo)表示t時刻;
2-2.使用循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行端到端的訓(xùn)練。
步驟三中,使用實際數(shù)據(jù)對網(wǎng)絡(luò)進(jìn)行微調(diào)處理的具體方法如下:
3-1.在現(xiàn)實場景中控制無人車安全無碰撞地運行,采集測距傳感器數(shù)據(jù)并記錄遙控器的控制指令,獲得現(xiàn)實場景中的訓(xùn)練數(shù)據(jù)。
3-2.將測距傳感器數(shù)據(jù)作為網(wǎng)絡(luò)輸入,將遙控器控制指令作為網(wǎng)絡(luò)輸出,在步驟二的基礎(chǔ)上,對循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行微調(diào)處理,得到適用于該無人車自主行進(jìn)的循環(huán)神經(jīng)網(wǎng)絡(luò)。
由于采用本發(fā)明的技術(shù)方案,本發(fā)明的有益效果為:本發(fā)明不直接在現(xiàn)實場景中控制無人車采集大量訓(xùn)練數(shù)據(jù),而是搭建仿真平臺并構(gòu)建模型,在虛擬環(huán)境下快速獲得訓(xùn)練樣本,減少采集樣本的時間,降低成本。本發(fā)明先用低成本的仿真平臺采樣,得到一個效果一般的網(wǎng)絡(luò),然后用少量現(xiàn)實場景的數(shù)據(jù)調(diào)整網(wǎng)絡(luò),就能得到效果不差于傳統(tǒng)方法的神經(jīng)網(wǎng)絡(luò),該方法可大大減少訓(xùn)練樣本量,帶來更好的性能以及更小巧的系統(tǒng)。
附圖說明
圖1是本發(fā)明循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖;
圖2是本發(fā)明將循環(huán)神經(jīng)網(wǎng)絡(luò)展開后的示意圖;
圖3是本發(fā)明端到端訓(xùn)練示意圖。
具體實施方式
參閱圖1、圖2,本發(fā)明提出了一種利用仿真生成樣本實現(xiàn)無人車自主行進(jìn)的方法,以下結(jié)合附圖作進(jìn)一步描述:
步驟一、搭建仿真模型,在仿真平臺生成訓(xùn)練樣本;
搭建無人車仿真模型,添加必要的傳感器,如攝像頭、激光測距儀等;
編寫程序,在仿真平臺隨機(jī)加入障礙物,構(gòu)建復(fù)雜環(huán)境;
步驟一中,搭建仿真模型并在仿真平臺生成訓(xùn)練樣本的方法如下:
1-1. 搭建無人車仿真模型,可以使用開源的杰克描述包(Jackal_description package),這個包用統(tǒng)一機(jī)器人描述格式(URDF)語言描述的一個無人駕駛地面車輛模型;
1-2. 在機(jī)器人操作系統(tǒng)(ROS)的眺望臺仿真平臺(Gazebo)可加載上述的無人車模型,編寫程序,隨機(jī)加入障礙物,構(gòu)建復(fù)雜環(huán)境;
1-3.將無人車置于仿真場景中,控制無人車在仿真場景中無碰撞地安全行駛,記錄無人車的轉(zhuǎn)向角速度和運行速度,同時將測距傳感器測量得到的數(shù)據(jù)及相應(yīng)的時間戳記錄到本地;
1-4.重復(fù)執(zhí)行場景構(gòu)建及無人車運行,產(chǎn)生足量數(shù)據(jù),并指定激光測距傳感器測量數(shù)據(jù)為神經(jīng)網(wǎng)絡(luò)的輸入,控制指令為神經(jīng)網(wǎng)絡(luò)的輸出,兩者共同組成訓(xùn)練樣本。
這個步驟將無人車置于復(fù)雜環(huán)境中,編寫程序控制無人車在場景中無碰撞地安全行駛,記錄控制指令,如轉(zhuǎn)向角速度和運行速度,同時將各傳感器測量得到的數(shù)據(jù)記錄到本地,并保持?jǐn)?shù)據(jù)的前后順序不變;
重復(fù)執(zhí)行環(huán)境構(gòu)建及無人車運行,產(chǎn)生足量數(shù)據(jù),每組數(shù)據(jù)包括某時刻傳感器測量得到的數(shù)據(jù)和無人車的控制指令,足量數(shù)據(jù)是指以20組連續(xù)數(shù)據(jù)為一個序列,共得到8000個序列,每個序列包含20個傳感器數(shù)據(jù)和20個控制指令,并指定傳感器測量數(shù)據(jù)為神經(jīng)網(wǎng)絡(luò)輸入,控制指令為神經(jīng)網(wǎng)絡(luò)的輸出,兩者共同組成訓(xùn)練樣本。
步驟二、用循環(huán)神經(jīng)網(wǎng)絡(luò)實現(xiàn)端到端訓(xùn)練;
確定本方法應(yīng)用領(lǐng)域為實時連續(xù)的無人車自主行進(jìn);
設(shè)計能處理序列數(shù)據(jù)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示,展開后如圖2所示;
將傳感器測量數(shù)據(jù)預(yù)處理后作為神經(jīng)網(wǎng)絡(luò)輸入,標(biāo)記為。將轉(zhuǎn)角和速度等控制指令作為神經(jīng)網(wǎng)絡(luò)輸出,標(biāo)記為。將RNN的隱藏單元標(biāo)記為;
結(jié)合圖2可知,以t時刻為例,縱向上,有一條單向流動的信息流是從輸入單元到達(dá)隱藏單元的,將傳感器數(shù)據(jù)xt輸入到神經(jīng)網(wǎng)絡(luò)中;橫向上,隱藏層的輸入還包括前一時刻的隱藏層輸出st-1,即st是結(jié)合當(dāng)前的觀測數(shù)據(jù)-1以及記憶的計算得到的;另一條縱向單向流動的信息流從隱藏單元到達(dá)輸出單元,即可以從隱藏單元st計算得到網(wǎng)絡(luò)的輸出ot,因此t時刻的輸出是由當(dāng)前的輸入和前一時刻的狀態(tài)共同決定的。同理,該時刻的隱藏單元輸出st同樣會傳遞到下一時刻,與xt+1共同決定st+1。
如圖3所示,使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)實現(xiàn)端到端訓(xùn)練,以記錄的控制指令作為目標(biāo)值,與預(yù)處理后測量數(shù)據(jù)通過RNN網(wǎng)絡(luò)計算得到的控制指令比較,得到誤差值,利用反向傳播算法調(diào)整RNN的參數(shù),根據(jù)實際數(shù)據(jù)量迭代適當(dāng)次數(shù),可取值為序列數(shù)的5至10倍。
步驟三中,使用實際數(shù)據(jù)對網(wǎng)絡(luò)進(jìn)行微調(diào)處理的具體方法如下:
3-1.在現(xiàn)實場景中控制無人車安全無碰撞地運行,采集測距傳感器數(shù)據(jù)并記錄遙控器的控制指令,獲得現(xiàn)實場景中的訓(xùn)練數(shù)據(jù)。
3-2.將測距傳感器數(shù)據(jù)作為網(wǎng)絡(luò)輸入,將遙控器控制指令作為網(wǎng)絡(luò)輸出,在步驟二的基礎(chǔ)上,對循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行微調(diào)處理,得到適用于該無人車自主行進(jìn)的循環(huán)神經(jīng)網(wǎng)絡(luò)。
在現(xiàn)實場景中控制無人車安全無碰撞地運行,采集傳感器數(shù)據(jù)并記錄遙控器的控制指令,獲得少量現(xiàn)實場景中的訓(xùn)練數(shù)據(jù);
現(xiàn)實場景中運行無人車與仿真平臺的情景不完全相同,根據(jù)研究表明,網(wǎng)絡(luò)的前幾層能準(zhǔn)確檢測并提取有效的特征,可固定前幾層網(wǎng)絡(luò)的參數(shù),利用新獲得的訓(xùn)練數(shù)據(jù)對網(wǎng)絡(luò)重新訓(xùn)練,實現(xiàn)微調(diào),得到適用于該無人車自主行進(jìn)的神經(jīng)網(wǎng)絡(luò)。