かざんぶろぐ

だらだらと備忘録とってます

Life in Silicoのサンプルを動かした

最近Unityをハマりだしているのだが、Unity上で作成した環境内でAIを学習させる方法はないかと思い検索してみると、
ドワンゴさんの人工知能研究所が開発した超人工生命Life in Sillico(以下LIS)という強化学習を体験できるアプリケーションを見つけた。
今回はそのLISをインストールし、サンプルを動かすまでしたので、その備忘録。

環境

OS : Windows10 Enterprise
Python : Python 2.7.12 |Anaconda custom (x86_64)|
Unity : 2017.1.0f3

LISについて

LISの原理を簡単にメモしておく。
まずUnity内に作成した環境内に存在するエージェントが見た視界をPythonプログラムに送信。
Python側では、
•視界をCNN(Convolutional Neural Network)を通して抽象化したもの
•障害物などの深度情報
この2つの情報を特徴量として、Q-Learningのネットワークに入力。
出力として行動を取得しUnity側に返信する。
そしてUnity側はPython側から受け取った行動を実際に行う。


f:id:okuya-KAZAN:20170816182311p:plain
図:LISの構造(サイト[1]より)

導入

実際にLISのサンプルを動かすまでをやってみる。

Unityのインストール

Unityのホームページから最新版をインストールしておく。

pipを使えるようにする

1番手っ取り早いのはAnacondaをインストールすることなんだろうけど、今回は詳しい説明は省略。

Gitをインストール

こちらのページからインストール

LISのダウンロード

コマンドプロンプトを開いて、
以下のコマンドを実行。

$ git clone https://github.com/wbap/lis.git

必要なPythonパッケージをインストール

lis/python-agent/requirements.txtを開くと、
LISを動かすのに必要なPythonのパッケージが書いてある。


f:id:okuya-KAZAN:20170816182345p:plain


これを全てpipでインストールしておく。
一気にインストールしたい場合は、

$ pip install -r python-agent/requirements.txt

このコマンドでOK。

必要なデータをダウンロード

コマンドプロンプトにて、

$ cd lis

でダウンロードしたlisディレクトリに移動し、

$ fetch.sh

でデータをダウンロード(結構時間かかる...)

Python側のサーバーを起動

$ cd python-agent

ディレクトリを移動し、

$ python server.py

でサーバーを起動。

Unity側の準備

Unityを起動し、「Open」を選び、lisディレクトリ内にある「unity-sample-environment」を開く。
この時、"元のunity-sample-environmentを作成時とUnityのバージョンが違うぞ"的なアラートが出てくるが、無視してContinue。
ProjectビューのScenesの中のsampleシーンを選択し、


f:id:okuya-KAZAN:20170816182405p:plain


プレビューをスタート。
数分待つと、サンプルが動き出した。