還記得今年4月伯克利BAIR實驗室發布的那個會“18般武藝”的DeepMimic模型嗎?他們使用強化學習技術,用動作捕捉片段訓練模型,教會了AI智能體完成24種動作,走路、跑步就不用說了,還包括翻跟斗、側翻跳、投球、高踢腿等等高能動作。
體會一下:
回旋踢
跑步
投球
訓練每一種動作都需要動作捕捉和深度強化學習,而BAIR的研究者創造了一個全新的系統,教會agent完成復雜、逼真的動作任務。
作者Xue Bin Peng等人將這個系統命名為DeepMimic,比已有工作更進一步的是,他們的目標是在訓練一個agent完成特定任務的前提下,使它的動作更貼近真實。他們的論文發表在SIGGRAPH 2018。
除了人形機器人外,他們還訓練了Atlas機器人、暴龍、龍等形態的agent。
Atlas機器人
整個DeepMimic所需要的input分為三部分:一個被稱為Character的Agent模型;希望Agent學習的參考動作(reference motion);希望Agent完成的任務(task)所定義的reward function。
訓練之后會得到一個可以控制Agent同時滿足與參考動作相似且可以完成任務的控制器。
四種翻滾動作
現在,DeepMimic的代碼、數據和訓練策略已經全部開源,感興趣的讀者不妨試試拿來訓練自己的“功夫小子”。
開源代碼
SIGGRAPH 2018論文:“DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills”的代碼。這個框架使用強化學習來訓練一個模擬人形智能體來模仿來自mocap數據的各種運動技能。
項目頁面:
https://xbpeng.github.io/projects/DeepMimic/index.html
C++:
Bullet 2.87 (https://github.com/bulletphysics/bullet3/releases)
Eigen (http://www.eigen.tuxfamily.org/index.php?title=Main_Page)
OpenGL >= 3.2
freeglut (http://freeglut.sourceforge.net/)
glew (http://glew.sourceforge.net/)
PyOpenGL (http://pyopengl.sourceforge.net/)
Tensorflow (https://www.tensorflow.org/)
MPI4Py (https://mpi4py.readthedocs.io/en/stable/install.html)
Misc:
SWIG (http://www.swig.org/)
MPI
Windows:https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi
Linux:sudo apt install libopenmpi-dev
Build
模擬環境是用C++編寫的,python包裝器使用SWIG構建。要安裝python依賴項,請運行
pip install -r requirements.txt
請注意,必須在MPI4Py之前安裝MPI。
Windows
wrapper使用DeepMimicCore.sln構建。
1. 從配置管理器中選擇x64配置。
2. 在DeepMimicCore的項目屬性下,修改要包含的其他包含目錄
Bullet源目錄
Eigen包括目錄
python包含目錄
3. 修改要指定的其他庫目錄
Bullet lib目錄
python lib目錄
使用Release_Swig配置構建DeepMimicCore項目,這應該在DeepMimicCore/. 中生成DeepMimicCore.py。
Linux
1. 通過指定以下內容修改DeepMimicCore中的Makefile,
EIGEN_DIR:Eigen包含目錄
BULLET_INC_DIR:Bullet源目錄
PYTHON_INC:python包含目錄
PYTHON_LIB:python lib目錄
2. 建立wrapper,
make python
這應該在DeepMimicCore/中生成DeepMimicCore.py
如何使用
一旦構建了python wrapper,就可以使用Tensorflow完全在python中完成訓練。DeepMimic.py運行用于查看模擬的可視化工具。使用mpi_run.py完成訓練,它使用MPI在多個進程之間并行訓練。
通過指定提供場景配置的參數文件來運行DeepMimic.py。例如,
python DeepMimic.py --arg_file args/run_humanoid3d_spinkick_args.txt
將為“回旋踢”運行一個預訓練的policy。同樣的,
python DeepMimic.py --arg_file args/kin_char_args.txt
將加載并播放mocap片段。
要訓練一個策略(policy),請通過指定參數文件和工作進程數來運行mpi_run.py。例如,
python mpi_run.py --arg_file args/train_humanoid3d_spinkick_args.txt --num_workers 4
將訓練一個策略,使用4個workers進行“回旋踢”。作為訓練方案,它會定期打印統計數據并將其記錄到output/,以及最新策略的.ckpt。通常需要大約6千萬個樣本來訓練一個策略,而訓練16個workers需要一天時間。16個workers可能是框架所能支持的最大workers數量。
args中已經為不同的技能提供了許多參數文件。train_ [something] _args.txt文件是為mpi_run.py設置的,用于訓練策略,并為DeepMimic.py設置run_ [something] _args.txt文件以運行其中一個預訓練策略。要運行自己的策略,請使用run_ [something] _args.txt的文件之一,并指定要使用--model_file運行的策略。確保引用的動作--motion_file對應于策略所訓練的動作,否則策略將無法正常運行。
右上角的圖顯示了價值函數的預測
單擊右鍵并拖動將平移相機
單擊左鍵并拖動將對特定位置處的角色施加力
滾輪會放大/縮小
按“r”將重置該episode
按'l'將重新加載參數文件并重建所有內容
按'x'將使用隨機的框投向角色
按空格將暫停/恢復模擬
按’>'將逐步執行模擬
Mocap Data
Mocap clips位于data/motions/中。要播放剪輯,首先修改args/kin_char_args.txt并指定要使用的文件--motion_file,然后運行
python DeepMimic.py --arg_file args/kin_char_args.txt
動作文件遵循JSON格式。“Loop”字段指定運動是否是循環的。“wrap”指定一個循環運動,該循環將在結束時回到起始點,而“none”指定一旦運動結束就會停止的非循環運動。“Frames”列表中的每個向量指定運動中的關鍵幀。每個框架具有以下格式:
位置以米為單位指定,球面關節的3D旋轉指定為四元數(w,x,y,z),轉動關節(例如膝關節和肘關節)的1維旋轉用弧度的標量表示。根位置和旋轉在世界坐標中,但所有其他關節旋轉都在關節的局部坐標中。要使用你自己的動作剪輯,請將其轉換為類似格式的JSON文件。
-
AI
+關注
關注
87文章
30146瀏覽量
268411 -
智能體
+關注
關注
1文章
131瀏覽量
10567 -
強化學習
+關注
關注
4文章
266瀏覽量
11213
原文標題:強化學習練就18般武藝!伯克利開源DeepMimic
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論