Itsukaraの日記

最新IT技術を勉強・実践中。最近はDeep Learningに注力。

DL使った線画自動着色がCPUでも動くようにしました

DL使った線画自動着色の件、下記記事を書いた後で、CPUだけでも動くように修正し、pull requestを出させていただきました。幸い、conflictsは無いようです。

itsukara.hateblo.jp

修正内容ですが、元々CPUで使う場合は"python server.py -g -1"とすれば動くはずなのですが、"cgi_exe.py"で "self.gpu >= 0" か判定して処理を分ける部分が抜けていたので、追加したものです。

ちなみに、トレーニングと異なり判定だけなので、CPUでも十分に速いです。お試しサイトはアクセスが集中して処理が重くなっており着色に1分以上かかるので、お試しサイトの負荷を減らす意味でも、ローカル環境を作って試しましょう!

何よりも、CPUだけでもローカル環境の方がお試しサイトよりもずっと速いです。具体的には、CPUだけも15秒程度で着色が完了します*1。これに対して、お試しサイトはアクセス集中のため1分ぐらい待たされます。

merge前にCPUで試したい方は下記をお使いください。
https://github.com/Itsukara/PaintsChainer.git

GPUメモリ不足時の画面

f:id:Itsukara:20170129073057p:plain

CPUに切替後の画面

f:id:Itsukara:20170129072921p:plain

追記

当初、GPUを使って動くようにするために、下記記事を見てVisual Studioを入れたり、CUDA8.0を入れたりと、1時間以上掛かり、確かにMNISTは10倍くらい速くなったのですが、結局、GPUメモリ不足で一部しか動かず、残念でした。
qiita.com

ちなみに、CPUで動かすだけなら、chainerを"pip install chainer"で入れるだけであり、とても簡単です。(当然ながら、Pythonの事前インストールも必要ですが、これは、Anacondaをインストールして実行するだけなので、これも簡単です。また、opencvも必要ですが、これは"pip install opencv"で大丈夫でした)。

追記2 (Windowsでの簡単なインストール方法)

一応、Windowsでのインストール手順書いておきます。

# (1) Anacondaをインストール(Python 3.5 version)
# ・下記からexeをダウンロードして実行(管理者権限で実行)
#  ・https://www.continuum.io/downloads
# ・DOS窓で"python --version"を実行し、エラーにならないことを確認
#  ・エラーになる場合、"Anaconda Windows インストール方法"でググり、自己対応願います。
# ・parco_opaaiさんが詳細なインストール方法を書かれています。ご参考まで。
#  ・http://qiita.com/parco_opaai/items/5f654237afde9db85beb
#  ・ただし、上記記事のopencv-pythonを使うと色が変になるので要注意。
# (2) 以下を、DOS窓(管理者権限で実行)で実行
> conda upgrade pip
> pip install chainer
> conda install --channel https://conda.anaconda.org/menpo opencv3
# ※ "conda install opencv"ではUbuntuで色が青くなるのNGでした
# (3) paintschainer (CPUで実行可能版)をインストール
# ・下記からzipをダウンロードし解凍(github知らなくてもOK)
#  ・https://github.com/Itsukara/PaintsChainer/archive/master.zip
#  ※本家コードが急速に進化していますので、それを使った方が良さそうです。
#   ・https://github.com/taizan/PaintsChainer/archive/master.zip
# ・解凍してできたフォルダは、下記のように名前を変更
#  ・PaintsChainer-master => PaintsChainer
# ・下記フォルダを作成
#   ・PaintsChainer\cgi-bin\paint_x2_unet\models
# ・下記サイトにある学習済データを上記フォルダにダウンロード
#   ・http://paintschainer.preferred.tech/downloads/
# (4) フォルダPaintsChainerでSHIFTキーを押しながら右クリックし、
#   「コマンドウィンドウをここで開く」でDOS窓を開き、下記を実行
>python server.py -g -1
GPU: -1
start
load model
serving at localhost : 8000
# (4) ブラウザで下記を開く
# ・http://localhost:8000/static/
# ※本家コード使用時は:http://localhost:8000/

追記3 (当サイトの宣伝)

ついでに、他の記事も見てくれると更にうれしいです。例えば、OpenAI GymのMontezuma's Revengeで1位になると共に、Deep Mindの論文に書かれていない部屋にも到達した話とか... これがきっかけでOpenAIの本社に招待され、12月にサンフランシスコに行ってきました(費用はOpenAI負担)。
itsukara.hateblo.jp

  • DeepMindの論文に書かれていない部屋に到達した件は、論文の著者Marc G. Bellemare氏にもお知らせ済で、素直に喜んでくれています(下記youtubeのKorekara Itsukaraのコメントと、Marc G. Bellemare氏のコメント参照)。

Playing Montezuma's Revenge with Intrinsic Motivation - YouTube

  • OpenAI Gymのスコアは下記参照。1位~3位が当方です。

gym.openai.com

  • 下記はMontezuma's Revenge関連の成果をまとめたスライドです。
  • 英語版(最新)

www.slideshare.net

  • 日本語版(少し古い)

www.slideshare.net

*1:CPUはCore i7-4770Kです。なお、大きな画像だと時間が25秒ぐらいに延びますね。通常、Neural Network部分の入力サイズは一定なので処理時間は関わらないはずですが... もしかしたら、Neural Network以外の部分(画像処理とか)で時間が掛かっているのかもしれません。pythonのプロファイルを採ればハッキリすると思います。どなたか試されるてはいかがでしょう。