Itsukaraの日記

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

PowerShell+WPFが動かない場合の原因と対策

仕事の関係でPowerShellを使ったので、PowerShellでの勉強内容と作成プログラムを記事に書きましたが、本番で動かず、困ってしまいました。同様の問題で困っている方がいるかもしれないので、解決先を書きます。

問題点

原因と解決方法

まとめ

PowerShellは、スクリプトがネットワークドライブにあるか、どのバージョンか、PowerShellPowerShell ISEか、によって動作が異なるので注意が必要。]

  • 対策:「powershell -sta -ExecutionPolicy Bypass ファイル名」で起動。
  • 別案:「powershell -sta -file ファイル名」で起動(2/18追記)。

PaintsChainerが爆速になっていた

http://itsukara.hateblo.jp/entry/2017/01/29/064926:embed:先週の記事で書いた線画着色(PaintsChanier)の件、久しぶりに最新版をダウンロードして試してみたら、当方の貧弱なGPU RAM(2GB)でも動くようになっており、サイズが500x500位の画像では3秒ぐらいで処理が完了。爆速になっていた。

線画着色最新版が妙に青みがかっている

線画着色の件、最新版(2017/1/31 21:39; 03739fd)を本家github(下記)からダウンロードして試したところ、残念ながら、特に速くなったり、機能が追加されている気はしません。また、残念ながら、色が妙に青みがかっています。

github.com

1/29ダウンロード版で生成した画像

f:id:Itsukara:20170131215053p:plain

1/31 21:39ダウンロード版で生成した画像

f:id:Itsukara:20170131214721p:plain

githubサイトを見ると、OpenCVのインストール方法として、結構面倒な方法へのリンク(下記)が書かれているので、それをやらないとだめなのかと思ったのですが、下記サイトに書かれたテスト用のデモを現在環境で実行したところ、下記サイトに表示される絵が、そのままの色で表示され、何の問題も発生しませんでした。ということは、下記の面倒はインストールをしなくても、"conda install opencv"で十分だったということです。Preferred Networkさん、どうなっているでしょう... (線画着色の件、githubにcommitしている人を見ると、Preferred Networkの人が多数関わっています。Preferred Networkが開発したChainerの宣伝にもなるので、Taizanだけでなく、Preferred Network総がかりで取り組んでいるのだと思います)

  • チェック用プログラムを走らせ、上記サイトのウィンドウに重ねて表示したところ。

f:id:Itsukara:20170131215600j:plain

上記表示結果を基に、本家サイトのIssueで質問予定です。

ちなみに、以前のソースと比べたら、img2imgDataset.pyの旧版と新版で下記のように変わってますが、学習データは旧版のソースコードで学習させていると思いますので、「現在のソースコード」と「旧ソースコードで作成した学習データ」の間での不整合が原因な気がします。
旧版:image2 = cv2.cvtColor(image2, cv2.COLOR_BGR2YUV)
新版:image2 = cv2.cvtColor(image2, cv2.COLOR_RGB2YUV)

本件、githubのissueで議論中です。下記を参照ください。学習データはYUVなので、単に、画像の入出力がRGBかBGRかという問題とのこと。これは、@abbychauさんが解決しました(OpenCVのバージョンを見て自動的に判定できるらしいです)
github.com

線画着色で満員御礼!

当サイトはこれまで平均100PV/日程度のアクセス数だったのですが、昨日と本日は、各1日で1か月分のPVを頂きました。関心を持って頂き、まことにありがとうございます。とても励みになります。
f:id:Itsukara:20170131005452p:plain

ついでに、他の記事も見てくれると更にうれしいです。例えば、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

写真から輪郭を抽出し線画着色

ローカルに線画着色できるので、色々試してみました。

今回、写真から輪郭を抽出し、それを基に線画着色してみました。輪郭を抽出するjupyter notebookはgithubにアップしましたので、パラメーターをいろいろ変えて試してみてください。以下では、googleで「美人」で検索した画像から輪郭を抽出し、着色したものです。最後の写真以外、ヒントは無しです。

美人#1

元写真ほど良くないですが、結構きれいな画像になりました。
f:id:Itsukara:20170129223034p:plain

美人#2

元写真は知的で若い女性の写真ですが、おばさんになってしまいました。
f:id:Itsukara:20170129223218p:plain

美人#3

元写真は野性的で若い美人ですが、抽象画になってしまいました。
f:id:Itsukara:20170129223842p:plain

美人#4

元写真と比べ良い線画が撮れませんでしたが、着色したら、それなりになりました。
f:id:Itsukara:20170129224246p:plain

美人#5

細かい線画が撮れ、着色したら、まあまあの出来になりました。
f:id:Itsukara:20170129224540p:plain

建物#1

建物は、輪郭がはっきりしているので、よい線画ができました。ただ、着色したら輪郭があいまいになってしまいました。
f:id:Itsukara:20170129224859p:plain

元の写真は下記です。
http://chihiro015.up.n.seesaa.net/chihiro015/image/IMG_6731.JPG?d=a1

風景#1

森を抜ける階段のようですが、色使いが今一つです。
f:id:Itsukara:20170129225512p:plain

4点ほど緑を加え、会談に灰色を2か所入れました。緑にはなりましたが、下記写真と比べると、今一つですね。
f:id:Itsukara:20170129225725p:plain

元の写真は下記です。
http://travel.tycg.gov.tw/Utility/DisplayImage?id=11271

追記

このように、Webから写真を取ってきて、そこから線画を抽出し、それを基に着色し、着色画像を写真と比較する処理を、自動化して、何百万枚も学習させると、更に凄いものになりそうな気がします。ついでに、線画抽出の部分も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のプロファイルを採ればハッキリすると思います。どなたか試されるてはいかがでしょう。

DL使った線画自動着色が凄すぎる!

下記の記事が、「はてなブックマーク」で第1位になっていたので、お試しサイトで試そうと思ったら、アクセスが非常に多いらしく、なかなか結果が出ないので、自分のPCにgit cloneして試してみました。

qiita.com


ただ、残念ながら、当方のPCではGPUメモリが足りずエラーとなり、小さな絵しか出ないため、ソースのhtmlコードを少し弄って1.5倍に拡大して表示しました。素材は、ネット上のフリー素材と自作画を使いました。

イチゴケーキ

ヒント無

ヒント無しだと、色使いが暗く、金属っぽいケーキになってしまいました。
f:id:Itsukara:20170129044238p:plain

ヒント有

白い部分を少しだけ色付けしてヒントを与えたら、結構それらしくなりました。ちなみに、白い部分も、白で塗ってヒントを与えています。左側の線画をよ~く見ると、少しだけ色がついている部分があることが分かると思います。たったこれだけのヒントを与えただけで、それらしい絵になりました。皿の縁は、特に何もしていませんが、それらしい色になっています。
f:id:Itsukara:20170129044521p:plain

カレー

ヒント無

ヒント無しだと、色使いが暗く、やはり今一つですね。
f:id:Itsukara:20170129044958p:plain

ヒント有

これも、少しだけヒントを与えると、カレーっぽくなりました。こちらは、白い部分を結構沢山白く塗ってます。
f:id:Itsukara:20170129045156p:plain

ハンバーガー

ヒント無

やはり、ヒント無しだと、色使いが暗くなってしまいますね。
f:id:Itsukara:20170129045312p:plain

ヒント有

これも、ちょっとヒントを与えただけで、それらしくなりました。
f:id:Itsukara:20170129045423p:plain

吉野山(奈良)

女の人が2人、着物を着て山里を歩いているようですが、特にヒント無しで、それらしい絵になりました。
f:id:Itsukara:20170129052557p:plain

へのへのもへじ

下手な絵を描いて試してみましたが、なんか、それらしくなりました。顔っぽい形があると、肌色に塗られるようです。
f:id:Itsukara:20170129050914p:plain

「初日の出」っぽい下手な絵

ヒント無

なぜか、丸い部分は太陽っぽい色になっていますね。
f:id:Itsukara:20170129051329p:plain

ヒント有

5点塗っただけで、結構変わりました。ただ、よく考えたら、山の前面は、太陽の陰になっていて暗いはずなので、ヒント無しの方が正解ですね...
f:id:Itsukara:20170129051759p:plain

蛍狩り

次の記事に記載のように、CPUのみで動作可能になるようソースコードを修正し、大きな絵が表示されるようになりましたので、参考までに載せておきます。
f:id:Itsukara:20170129133505p:plain

実験用素材

今回の塗り絵素材は、Webで無料と書かれたものを使いました。その中で、下記サイトは、「MY介護の広場」の文字を削らずにご使用すれば無料とのことであり、良さそうなる理恵素材が多数あるので、ちょっと試すのには良さそうです。ただ、論文などで多数の絵を使うようでしたら、サイト運用会社と一度会話しておいた方が良いと思います。明治安田生命グループ提供されている「MY介護の広場 」様、ありがとうございました。
www.my-kaigo.com

ちなみに、上記に載っているのはPDFファイルです。これをダウンロードし、PDF-Viewerで表示し、PNGでエクスポートすれば、paintschainerで読み込めます。あるいは、Acrobatで表示し、Snipping Toolでキャプチャーし、ファイルに保管するのも良いと思います。