吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一種能和OpenAI gym相比的環境,用來訓練Unity模擬器中的Donkey Car

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-09-16 09:37 ? 次閱讀

介紹

Donkey Car是一種為模型車開源的DIY自動駕駛平臺,它利用一個帶有相機的樹莓派單片機,讓模型車可在賽道上自動駕駛,Donkey Car會學習你的駕駛方法,在訓練后懂得自動駕駛。對于那些沒有背景知識的人來說,該平臺能提供你所需要的必要細節,它既包含硬件也帶有軟件。閱讀完這一教程,你也可以無需硬件背景知識組裝一輛自己的自動駕駛汽車。

現在,訓練汽車進行自動駕駛最常見的方法就是行為克隆和路線跟隨。在高級層面,行為克隆是利用卷積神經網絡學習汽車前方攝像機所拍攝的圖像之間的映射,并通過監督學習控制方向和油門大小。而路線跟隨是利用計算機視覺技術跟蹤路線,并且利用一個PID控制器讓小車跟著該路線。我嘗試了兩種方法,它們都很有用!

用行為克隆訓練Donkey Car避開障礙物

用強化學習訓練Donkey Car

重要的一點是,Donkey Car的目標是搭建一輛在比賽中跑的最快的車(能以最快速度跑完一圈)。我認為強化學習是訓練的好方法,只需設計一種獎勵,讓汽車的速度達到最快,并且讓它能一直保持在軌道內即可。聽上去很簡單對吧?但事實上,很多研究表示在實體目標上訓練強化學習是很困難的。強化學習主要通過試錯法訓練,放在汽車身上,我們只能保佑車子不會在一次次的實驗中撞碎。另外,訓練時長也是一個問題,通常,強化學習智能體都要訓練個幾百回合才能掌握些許規律。所以,強化學習很少用在現實物體中。

模擬現實

最近有一些科學家們研究對現實進行模擬,即先用強化學習在虛擬模擬器上訓練小車,然后將其遷移到現實世界里。例如,最近OpenAI就訓練了一個靈活的機械手臂,可以做出多種動作,整個過程就是在虛擬中訓練的。除此之外,谷歌大腦也曾訓練過一個四足機器人,可以用模擬現實的技術學習靈活的動作。在虛擬器中學習控制策略,然后再將其部署到真正的機器人上。這樣看來,若想用強化學習訓練Donkey Car,一個可行方案就是先用模擬器訓練,再把學到的策略用在真的小車上。

OpenAI訓練的機械手

Donkey Car模擬器

第一步是先為Donkey Car建造一個高保真度的模擬器。幸運的是,Donkey Car社區里一位愛好者在Unity中創建好了一個模擬器。但是它設計的目的主要針對行為學習(即將相機中的圖片保存在對應的控制角度和油門大小文件中以進行監督學習),但是和強化學習無關。我希望的是有一個類似OpenAI Gym那樣的交互界面,可以用reset( )重置環境、對其進行操作。所以,我決定在現有的Unity模擬器基礎上對其進行修改,讓它更適合強化學習。

4.1 創建一種能用Python和Unity溝通的方法

因為我們要用Python書寫強化學習代碼,所以我們首先要找到一種方法能讓Python在Unity環境中使用。結果我發現這現有的模擬器也是用Python代碼進行溝通的,但它是通過Websocket協議進行的,Weosocket和HTTP不同,它支持服務器和客戶端之間進行雙向通信。在我們的案例中,我們的Python“服務器”可以直接向Unity推送信息(方向和油門),而我們的Unity“客戶端”也可以反向對服務器推送信息(狀態和反饋)。

除了Websocket,我還考慮使用gRPC,這是一種高性能服務器-客戶端通信框架,用谷歌在2016年八月開源。Unity將其用于機器學習智能體接口通信的協議。但是它的設置有點麻煩,并不高效,所以我還是選擇Websocket。

4.2 為Donkey Car創建一個定制化的環境

下一步是創建一個類似于OpenAI gym的交互界面,用于訓練強化學習算法。之前訓練過強化學習算法的人可能對各種API的使用很熟悉。常見的就是reset( )、step( )、isgameover( )等。我們可以將OpenAI gym的種類進行擴展,然后用上面的方法創建自己的gym環境。

最終成果能和OpenAI gym相媲美,我們科用類似的指令與Donkey環境交互:

env = gym.make("donkey-v0")

state = env.reset()

action = get_action()

state, action, rewards, next_state = env.step(action)

環境同樣可以讓我們設置frame_skipping,并且用headless模式訓練智能體(也就是無需Unity GUI)。

同時,Tawn Kramer還有3中Unity場景可用:生成道路、倉庫和Sparkfun AVC,都可以用于訓練。在我們開始運行自己的強化學習算法之前,我們要么自己搭建Donkey Car的Unity環境,要么下載預先搭建好的環境可執行程序。具體的環境設置和訓練指導可以在我的GitHub中找到:github.com/flyyufelix/donkey_rl

4.3 用DDQN訓練Donkey Car

準備好了對強化學習友好的環境,我們現在就可以搭建自己的強化學習算法啦!我采取的是用Keras書寫的Double Deep Q學習算法,這是DeepMind開發的經典強化學習算法,易于測試,編寫簡單。我已經在OpenAI gym中的cartpole和VizDoom中測試了,所以如果有什么問題,應該是Unity環境的問題,算法沒有問題。關于DQN的文章,大家可以參考我之前的博文。flyyufelix.github.io/2017/10/12/dqn-vs-pg.html

4.3.1 狀態空間

我們用Donkey Car前方安裝的攝像機所拍攝的像素照片,執行以下轉換:

將尺寸從(120, 160)改為(80, 80)

變為灰度圖像

框架堆疊:去前面幾個步驟中的4個框架堆在一起

最后的狀態維度應該是(1, 80, 80, 4)。

4.3.2 動作空間

現實和虛擬世界中的Donkey Car都是將持續的方向控制和油門數值作為輸入。為了簡介,我們將油門數值設為常量(例如0.7),僅僅改變控制方向。控制方向的值從-1到1,但是,DQN只能處理分離的動作,所以我將方向的值分為15個種類。

4.3.3 Q網絡框架

我們的Q網絡是一個3層卷積神經網絡,以堆疊的框架狀態為輸入,輸出表示方向值分類的15個值。

4.3.4 獎勵

獎勵是有關汽車偏離中線程度的函數,它由Unity環境所提供。獎勵函數用以下公式表達:

其中maxcte是一個歸一化常數,所以獎勵的范圍在0到1之間。如果abs(cte)大于maxcte,循環即終止。

4.3.5 其他重要變量

Frame skipping設置為2以穩定訓練。Memory replay buffer的值為10000.Target Q網絡在最終訓練時會更新。CNN訓練時的Batch size為64。貪婪函數用于探索。Epsilon初始值為1,逐漸在10000次訓練后會成為0.02。

4.3.6 結果

經過上面的設置,在單個CPU和一個GTX 1080 GPU上,我訓練了DDQN差不多100次。整個訓練用了2到3個小時。可以從上面的視頻中看到,小車跑得很好!

去除背景噪聲

我們想讓我們的強化學習智能體只根據路線的位置和方向進行決策輸出(即方向控制),不要受環境中的其他因素影響。但是,由于我們的輸入是全像素的圖像,它可能對背景模式過度擬合,而無法認出行進路線。這在現實中尤其重要,因為旁邊的車道可能會有障礙物(例如桌子、椅子、行人等)。如果我們想從虛擬世界將學習策略進行遷移,我們應該讓智能體顧略背景中的噪音,只關注于車道。

為了解決這個問題,我創建了一個預處理通道,可以將行車路線從原始像素圖像中分離出去,再輸入到CNN中。分割過程受這篇博文的啟發(https://medium.com/@ldesegur/a-lane-detection-approach-for-self-driving-vehicles-c5ae1679f7ee)。這一過程概括如下:

Canny Edge檢測器檢測并提取所有邊框

用Hough直線轉換確定所有直線

將直線分成positive sloped和negative sloped兩類

刪除所有不屬于車道的直線

最終轉換出的圖片應該有最多2條直線,具體情況如下:

接著我把分割后的圖像重新調整到(80, 80)的,將4個連續的框架堆疊在一起,用它們作為新的輸入狀態。我使用新狀態再次訓練了DDQN,生成的強化學習智能體可以學習良好策略進行駕駛!

然而,我注意到不僅僅訓練時間會變長,學習策略也會變得不穩定,車子會經常在轉彎的時候搖晃。我想可能是因為在訓練的時候丟掉了有用的背景信息。不然的話,智能體應該不會過度擬合。

下一步

在這篇文章中,我們介紹了一種能和OpenAI gym相比的環境,用來訓練Unity模擬器中的Donkey Car。還用DDQN訓練它自動成功地自動駕駛。接下來,我計劃讓小車通過訓練加速到最大值,并且將這一策略遷移到現實中。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機視覺
    +關注

    關注

    8

    文章

    1700

    瀏覽量

    46127
  • 自動駕駛
    +關注

    關注

    785

    文章

    13930

    瀏覽量

    167006
  • 強化學習
    +關注

    關注

    4

    文章

    268

    瀏覽量

    11301
  • Unity
    +關注

    關注

    1

    文章

    127

    瀏覽量

    21877

原文標題:教程 | 如何在Unity環境中用強化學習訓練Donkey Car

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    一種基于FPGA的飛行模擬器通信接口設計流程介紹

    的必需設備,它是一種由計算機實時控制、多系統協調工作、模擬真實飛行環境模擬設備。相較于利用飛機的飛行
    發表于 06-18 05:00

    一種基于SIMULINK工具的太陽電池陣列模擬器的仿真模型設計

    設計一種成本較低,能夠代替實際光伏電池陣列來進行各種光伏實驗的太陽電池模擬器。本文所設計的太陽電池模擬器以BUCK電路為基礎,采用ARM
    發表于 07-16 07:17

    飛行模擬器的運動系統

    `飛行模擬器,顧名思義也就是模擬飛行飛行的設備。用來應對真實世界在飛行過程中會遇到的空氣動力、氣象、地理環境、飛行系統等,并且將仿真操控和
    發表于 09-07 17:20

    一種雷達回波信號模擬器的設計與實現

    本文提出了一種基于CPCI母板和PMC背板的通用雷達回波模擬器的設計與實現,重點介紹了基于單片FPGA設計PMC背板,實現雷達回波信號模擬器數據合成(噪聲/雜澎目標回波)的設計方
    發表于 05-08 17:17 ?36次下載

    一種多普勒模擬器的設計與實現The Design and I

    本文介紹了一種成功應用于某自主外測系統的多普勒模擬器的設計與實現。該模擬器易于使用,控制靈活。在系統聯調期間,該模擬器可進行極小步進、快速掃頻,取得了滿意
    發表于 05-25 15:14 ?33次下載

    基于開物2000、PLC 和I/O 擴展的訓練模擬器Based ControX2000, P

    介紹了一種在大規模數字I/O 擴展的基礎上由通用監控系統支撐軟件ControX( 開物)2000 和FP0_C32 型PLC 控制的訓練模擬器。運行結果表明,該訓練
    發表于 06-03 08:00 ?12次下載

    駕駛訓練模擬器車速表驅動模塊設計

    主動式汽車駕駛模擬器一種正確模擬汽車駕駛操作,并能在主要性能上獲得與實車相同感覺的汽車駕駛訓練仿真教學設備,它
    發表于 08-26 11:22 ?21次下載

    一種新型的基于LabView設計的脈壓模擬器

    一種新型的基于LabView設計的脈壓模擬器  摘   要: 提出了一種新型的基于LabView設計的脈壓模擬器,介紹了其設計思想、系統的軟硬件構成及應
    發表于 12-01 10:25 ?949次閱讀
    <b class='flag-5'>一種</b>新型的基于LabView設計的脈壓<b class='flag-5'>模擬器</b>

    一種同步Slave FIFO模式的USB數據傳輸設計

    在現代科研、實驗、教學、訓練模擬器起著重要作用,它是一種由計算機實時控制、多系統協調T作、模擬
    發表于 11-16 09:16 ?9次下載
    <b class='flag-5'>一種</b>同步Slave FIFO模式的USB數據傳輸設計

    一種基于FPGA嵌入式系統的雷達信號模擬器的實現

    提出了一種基于FPGA的雷達回波實時模擬器的實現方法。該模擬器采用cPCI 標準總線,以FPGA 為核心計算單元,配有高速數模、模數轉換模塊,可實現雷達回波信號實時在線注入模擬。該
    發表于 11-18 13:00 ?2753次閱讀
    <b class='flag-5'>一種</b>基于FPGA嵌入式系統的雷達信號<b class='flag-5'>模擬器</b>的實現

    一種新的微結構模擬器設計

    處理體系結構模擬器可以對處理的結構采用軟件方式進行模擬,輔助處理的研究工作。通過對多種結構和微結構參數進行配置,可以對處理
    發表于 03-12 16:13 ?0次下載
    <b class='flag-5'>一種</b>新的微結構<b class='flag-5'>模擬器</b>設計

    南加州大學研究了模擬器 訓練機器人拼裝宜家家具

    為了訓練機器隨機應變、適應真實環境的能力,南加州大學研究團隊開發了模擬器訓練機器人拼裝宜
    發表于 12-04 09:52 ?4990次閱讀

    R-Car DNN模擬器的介紹

    本篇文章我們將介紹瑞薩為R-Car V4H提供的三類型的DNN開發模擬器,以及它們的使用情況和特點。
    的頭像 發表于 02-02 11:06 ?1270次閱讀

    太陽模擬器:為太陽研究帶來新的機遇

    太陽模擬器一種可以模擬太陽光譜的設備,被廣泛應用于太陽電池的研究和制造。它能夠為太陽領域
    的頭像 發表于 04-18 13:00 ?880次閱讀
    太陽<b class='flag-5'>能</b><b class='flag-5'>模擬器</b>:為太陽<b class='flag-5'>能</b>研究帶來新的機遇

    工程師說 | R-Car DNN模擬器的介紹 (2)

    摘要 在瑞薩提供的R-Car SoC相關的些DNN模擬器,本文將重點介紹 能夠實現與實際硬件等價運算的Accurate Simulator ,并說明如何應用它來 分析和提高神經網絡
    的頭像 發表于 07-13 18:15 ?498次閱讀
    工程師說 | R-<b class='flag-5'>Car</b> DNN<b class='flag-5'>模擬器</b>的介紹 (2)
    不夜城百家乐的玩法技巧和规则 | 百家乐官网专业赌博| 棋牌游戏代理| 名仕国际棋牌官方网| 飞七棋牌游戏下载| 大发888官方6| 必博备用网站| 修文县| 桂东县| 百家乐官网太阳城娱乐城| 百家乐官网四式正反路| 百家乐官网787| 什么是百家乐官网的大路| 百家乐官网策略网络游戏信誉怎么样| 百家乐官网那里信誉好| 百家乐扑克桌布| 百家乐好赌吗| 千亿娱百家乐的玩法技巧和规则 | 百家乐官网玩法简介| 百家乐官网太阳城球讯网| 百家乐官网香港六合彩| 康莱德百家乐官网的玩法技巧和规则 | 大发888为什么进不去| 大发888送58| 新乡县| 在线百家乐官网3d| 大佬百家乐官网的玩法技巧和规则| 百家乐最佳投注法下载| 百家乐娱乐城新闻| 喜洋洋水果机遥控器| 沙龙国际娱乐网| 赌场百家乐官网玩法介绍| 虎在什么方位做生意好| 至尊百家乐赌场娱乐网规则 | 百家乐官网第三张规则| 百家乐兑换棋牌| 大发888玩法技巧| 百家乐官网可以算牌么| 户型风水不好害死人 24种破财户| 百家乐大轮转| 盈丰娱乐|