還記得今年4月伯克利BAIR實(shí)驗(yàn)室發(fā)布的那個(gè)會(huì)“18般武藝”的DeepMimic模型嗎?他們使用強(qiáng)化學(xué)習(xí)技術(shù),用動(dòng)作捕捉片段訓(xùn)練模型,教會(huì)了AI智能體完成24種動(dòng)作,走路、跑步就不用說(shuō)了,還包括翻跟斗、側(cè)翻跳、投球、高踢腿等等高能動(dòng)作。
體會(huì)一下:
回旋踢
跑步
投球
訓(xùn)練每一種動(dòng)作都需要?jiǎng)幼鞑蹲胶蜕疃葟?qiáng)化學(xué)習(xí),而B(niǎo)AIR的研究者創(chuàng)造了一個(gè)全新的系統(tǒng),教會(huì)agent完成復(fù)雜、逼真的動(dòng)作任務(wù)。
作者Xue Bin Peng等人將這個(gè)系統(tǒng)命名為DeepMimic,比已有工作更進(jìn)一步的是,他們的目標(biāo)是在訓(xùn)練一個(gè)agent完成特定任務(wù)的前提下,使它的動(dòng)作更貼近真實(shí)。他們的論文發(fā)表在SIGGRAPH 2018。
除了人形機(jī)器人外,他們還訓(xùn)練了Atlas機(jī)器人、暴龍、龍等形態(tài)的agent。
Atlas機(jī)器人
整個(gè)DeepMimic所需要的input分為三部分:一個(gè)被稱(chēng)為Character的Agent模型;希望Agent學(xué)習(xí)的參考動(dòng)作(reference motion);希望Agent完成的任務(wù)(task)所定義的reward function。
訓(xùn)練之后會(huì)得到一個(gè)可以控制Agent同時(shí)滿(mǎn)足與參考動(dòng)作相似且可以完成任務(wù)的控制器。
四種翻滾動(dòng)作
現(xiàn)在,DeepMimic的代碼、數(shù)據(jù)和訓(xùn)練策略已經(jīng)全部開(kāi)源,感興趣的讀者不妨試試拿來(lái)訓(xùn)練自己的“功夫小子”。
開(kāi)源代碼
SIGGRAPH 2018論文:“DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills”的代碼。這個(gè)框架使用強(qiáng)化學(xué)習(xí)來(lái)訓(xùn)練一個(gè)模擬人形智能體來(lái)模仿來(lái)自mocap數(shù)據(jù)的各種運(yùn)動(dòng)技能。
項(xiàng)目頁(yè)面:
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
模擬環(huán)境是用C++編寫(xiě)的,python包裝器使用SWIG構(gòu)建。要安裝python依賴(lài)項(xiàng),請(qǐng)運(yùn)行
pip install -r requirements.txt
請(qǐng)注意,必須在MPI4Py之前安裝MPI。
Windows
wrapper使用DeepMimicCore.sln構(gòu)建。
1. 從配置管理器中選擇x64配置。
2. 在DeepMimicCore的項(xiàng)目屬性下,修改要包含的其他包含目錄
Bullet源目錄
Eigen包括目錄
python包含目錄
3. 修改要指定的其他庫(kù)目錄
Bullet lib目錄
python lib目錄
使用Release_Swig配置構(gòu)建DeepMimicCore項(xiàng)目,這應(yīng)該在DeepMimicCore/. 中生成DeepMimicCore.py。
Linux
1. 通過(guò)指定以下內(nèi)容修改DeepMimicCore中的Makefile,
EIGEN_DIR:Eigen包含目錄
BULLET_INC_DIR:Bullet源目錄
PYTHON_INC:python包含目錄
PYTHON_LIB:python lib目錄
2. 建立wrapper,
make python
這應(yīng)該在DeepMimicCore/中生成DeepMimicCore.py
如何使用
一旦構(gòu)建了python wrapper,就可以使用Tensorflow完全在python中完成訓(xùn)練。DeepMimic.py運(yùn)行用于查看模擬的可視化工具。使用mpi_run.py完成訓(xùn)練,它使用MPI在多個(gè)進(jìn)程之間并行訓(xùn)練。
通過(guò)指定提供場(chǎng)景配置的參數(shù)文件來(lái)運(yùn)行DeepMimic.py。例如,
python DeepMimic.py --arg_file args/run_humanoid3d_spinkick_args.txt
將為“回旋踢”運(yùn)行一個(gè)預(yù)訓(xùn)練的policy。同樣的,
python DeepMimic.py --arg_file args/kin_char_args.txt
將加載并播放mocap片段。
要訓(xùn)練一個(gè)策略(policy),請(qǐng)通過(guò)指定參數(shù)文件和工作進(jìn)程數(shù)來(lái)運(yùn)行mpi_run.py。例如,
python mpi_run.py --arg_file args/train_humanoid3d_spinkick_args.txt --num_workers 4
將訓(xùn)練一個(gè)策略,使用4個(gè)workers進(jìn)行“回旋踢”。作為訓(xùn)練方案,它會(huì)定期打印統(tǒng)計(jì)數(shù)據(jù)并將其記錄到output/,以及最新策略的.ckpt。通常需要大約6千萬(wàn)個(gè)樣本來(lái)訓(xùn)練一個(gè)策略,而訓(xùn)練16個(gè)workers需要一天時(shí)間。16個(gè)workers可能是框架所能支持的最大workers數(shù)量。
args中已經(jīng)為不同的技能提供了許多參數(shù)文件。train_ [something] _args.txt文件是為mpi_run.py設(shè)置的,用于訓(xùn)練策略,并為DeepMimic.py設(shè)置run_ [something] _args.txt文件以運(yùn)行其中一個(gè)預(yù)訓(xùn)練策略。要運(yùn)行自己的策略,請(qǐng)使用run_ [something] _args.txt的文件之一,并指定要使用--model_file運(yùn)行的策略。確保引用的動(dòng)作--motion_file對(duì)應(yīng)于策略所訓(xùn)練的動(dòng)作,否則策略將無(wú)法正常運(yùn)行。
右上角的圖顯示了價(jià)值函數(shù)的預(yù)測(cè)
單擊右鍵并拖動(dòng)將平移相機(jī)
單擊左鍵并拖動(dòng)將對(duì)特定位置處的角色施加力
滾輪會(huì)放大/縮小
按“r”將重置該episode
按'l'將重新加載參數(shù)文件并重建所有內(nèi)容
按'x'將使用隨機(jī)的框投向角色
按空格將暫停/恢復(fù)模擬
按’>'將逐步執(zhí)行模擬
Mocap Data
Mocap clips位于data/motions/中。要播放剪輯,首先修改args/kin_char_args.txt并指定要使用的文件--motion_file,然后運(yùn)行
python DeepMimic.py --arg_file args/kin_char_args.txt
動(dòng)作文件遵循JSON格式?!癓oop”字段指定運(yùn)動(dòng)是否是循環(huán)的。“wrap”指定一個(gè)循環(huán)運(yùn)動(dòng),該循環(huán)將在結(jié)束時(shí)回到起始點(diǎn),而“none”指定一旦運(yùn)動(dòng)結(jié)束就會(huì)停止的非循環(huán)運(yùn)動(dòng)?!癋rames”列表中的每個(gè)向量指定運(yùn)動(dòng)中的關(guān)鍵幀。每個(gè)框架具有以下格式:
位置以米為單位指定,球面關(guān)節(jié)的3D旋轉(zhuǎn)指定為四元數(shù)(w,x,y,z),轉(zhuǎn)動(dòng)關(guān)節(jié)(例如膝關(guān)節(jié)和肘關(guān)節(jié))的1維旋轉(zhuǎn)用弧度的標(biāo)量表示。根位置和旋轉(zhuǎn)在世界坐標(biāo)中,但所有其他關(guān)節(jié)旋轉(zhuǎn)都在關(guān)節(jié)的局部坐標(biāo)中。要使用你自己的動(dòng)作剪輯,請(qǐng)將其轉(zhuǎn)換為類(lèi)似格式的JSON文件。
-
AI
+關(guān)注
關(guān)注
87文章
30898瀏覽量
269125 -
智能體
+關(guān)注
關(guān)注
1文章
150瀏覽量
10580 -
強(qiáng)化學(xué)習(xí)
+關(guān)注
關(guān)注
4文章
266瀏覽量
11256
原文標(biāo)題:強(qiáng)化學(xué)習(xí)練就18般武藝!伯克利開(kāi)源DeepMimic
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論