2016年1月27日水曜日

僕のコンピュータに猫を認識させてみた

厄年というのはとても恐ろしいです。
おじさん、厄年になってまだ一か月たっていないのにおたふく風邪にかかってしまいました。しかも子供のころに予防接種うったのに。年を取ると免疫の学習がダメになってくるようです。

顔が腫れて会社にいけないし、部屋からでれないので、今回はディープラーニングについて書きます。


何年か前に、Googleがディープラーニングでコンピュータに猫の顔をひたすら見せて認識させていました。

https://googleblog.blogspot.jp/2012/06/using-large-scale-brain-simulations-for.html

この論文が以下にあります。

http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/unsupervised_icml2012.pdf


どうやって顔の画像作っているのか、調べてみると、深層ボルツマンマシンで16000台のコンピュータで学習させたらしいです。

この猫の画像作りたいのに。こりゃーおじさんの安いメモリ4GバイトのペンティアムのPCだとおたふく風邪が治るまでに計算できないね。

しかもディープラーニングの論文ってみんな線形代数のベクトルの数式で書かれているので、W(i,j,k)とかもうどの記号が何を表しているかを追うのが大変。あれから間違えなくソースコードを起こすのってさらに大変。
この辺の勉強は、誰かの書いたコードをデバッグしながら動かして解析した方が、圧倒的にわかりやすいし早い気がします。数式がわかる力も当然いりますが、コードを読んで動かす力が必要な気が。

そこで、さらにいろいろ調べてみると、どうもRBM(制限ボルツマンマシン)で一枚くらい画像を学習させるくらいだとおじさんのおんぼろPCでも実験できそう。

世の中には本当に頭の良いすごい人がいてRBMをC++で実装した人がいるんですね。
原理とかもとてもわかりやすく解説されていて本当にすごいです。

http://kivantium.hateblo.jp/entry/2015/12/01/000207

ということで、このライブラリを利用して猫を認識させて、画像の再構築をしてみました。ソースコードはとても短いのに、おじさんのPCでは一枚の画像認識させるのに数分かかります。でもこれである程計算の順番とかを追うことができる!
オリジナル画像



オリジナル二値化画像

再構築画像




こりゃーインタープリタの言語でRBMの実験したり、本当に何百万枚も画像を学習して認識させるにはGPU付きPCが何万台もいるねぇ。

0 件のコメント:

コメントを投稿