簡介
根據上一篇的Unity ML 環境安裝後,接著我們這篇直接操作範例來讓我們了解之前所述說的流程,也可了解之後要講的Unity機器學習的四大元素,Academy、Brain、Agent、Environment。這篇依然會使用到命令提示字元來進行各步驟的指令以及示範Unity與外部溝通的設定檔的設定。
Unity3D Editor開啟ml-agent
開啟您上一篇所使用Git Clone下來的Unity ML Github檔案後,請到您所設定的路徑先確定是否有個檔案叫做”UnitySDK”,假如有的話,請開啟UnityHub(從2018.1版後官方提供了此平台來統整整個Unity版本)。打開後請按下舊檔案開啟UnitySDK,選擇開啟版本最好在2018.2以上,都設定好之後該以即可。
開啟範例練習
UnitySDK提供了很多不同型的AI訓練範例,如上圖,從最基礎的AI simple element到multiple element都有,大家都可以在者些範例挖出一些東西進而學習到,那我們就先從最簡單的3D平衡小球範例來述說。
從上圖看到,打開UnitySDK之後,可以找到ML-Agents→Example→3DBall→Scenes→3DBall場景檔案打開。會看到一些豆腐頭,頭上會有一顆小球,這範例用一是把小球透過AI模組平衡在豆腐頭上。
先看到Hirearchy裡面有三個東西必須先有個印象在你腦海中,在Ball3DAcademy中有個元件”Academy”,在豆腐頭prefab中有一個物件叫做Agent中有兩個元件,一個叫做Behavior(在舊版本的名稱叫做Brain),另一個是Agent,以上提及的之後再來做講述,先有個印象。就當作我們已經把Environment都設定好了(官方範例已經都設定好了),接著我們開始用命令提示字元來作動,請開啟並鍵入以下指令。
conda activate ml-agents
指令輸入完之後可以看到Anaconda環境已經轉換到ml-agents之下,而上圖是接下來指令會包含的兩個檔案 1.trainer_config.yaml 2.models folder,1.的檔案是設定AI訓練該檔案的外部參數檔案,2.的資料夾是AI訓練完的模組NN檔所生成的位置。
請先透過命令提示字元進入該ml-agents的資料夾,因為trainer_config指令需要讀取該資料夾的路徑位置,而以下是要輸入的指令,mlagents-learn (是基礎指令,是啟動AI訓練的指令),trainer-config-path要記得用””,並鍵入路徑,假如都沒有改的話就可以依照下方指令,而run-id就可以用你想用的名稱,但還是要使用””,最後–train就是進行AI training。
我電腦中的指令
mlagents-learn "config/trainer_config.yaml" --run-id="train_eggy_3dball_01" --train
標準指令
mlagents-learn <trainer-config-path> --run-id=<run-identifier> --train
當輸入指令後,正常行的狀態會顯示上圖,有個Unity圖樣用字元來構圖的,接著請到Unity3D Editor按下Play按鈕,假使有正常運行會出現他持續在training的數據。在下圖可以看到系統會先讀取您的train_config.yaml檔案的指定欄位3DBallExample的設定,並在圖的最下方會持續列出每1000 step會列出該訓練的Reward。
當訓練完成時,會在ml-agents→models→你自己設定的訓練資料夾名稱,進入後請將.nn檔案匯入Unity3D中,如下圖,匯入的NN檔案會有獨特的Icon在Unity中。接著你會在場景中看到很多3DBall的Prefab物件,請雙擊進入將剛剛訓練好的NN檔案拖曳至Agent的Behavior元建中Model欄位,並回到場景。最後再次按下Play即可,AI訓練效果即可瞬間呈現。
假如您大致上了解Unity ML train_config檔案中的參數代表什麼意思以及調整怎樣的參數會影響訓練的結果,你可以透過TensorflowBoard所呈現的圖表來調整參數,並再次訓練。以下為開啟TensorflowBoard的方法。
tensorboard --logdir=summaries
命令提示字元會顯示請在網頁瀏覽器輸入一串網址,就可以看到如上圖的效果。想要關閉繼續訓練的話請在命令提示字元按下(Ctrl+C快捷鍵)即可。
小結
透過了3D小球的平衡範例講述後,大家應該有更了解Unity ML的WorkFlow,有一些關鍵的訓練步驟,例如指令的下法、在Editor中的作動設定、外部檔案的位置等等都必須實質的掌握才可以完整的完成訓練。我們身處於三維空間中,在未來有許多的實體AI訓練都可以透過Unity來實現之,但前提是必須要有超擬真的場景給予AI做訓練,讓我們繼續學下去。