ラベル MachineLearing の投稿を表示しています。 すべての投稿を表示
ラベル MachineLearing の投稿を表示しています。 すべての投稿を表示

2017年4月16日日曜日

Network binarization 関連文書集

最近、Deeplearningの高速化とメモリ節約では、Network binarizationが流行っているみたい。これを応用して、FPGAへの展開なんかもやられていて、組み込みへの応用はこの技術が中心になるんだろうな。ってことで、元論文は2つ。日本語で解説がいくつかやっている人達がいましたので、それらのリンク。
よく考えるなー。すごいもんだ。

元論文
・Binarized Neural Networks: Training Neural Networks withWeights and Activations Constrained to +1 or -1
・XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks


BinaryNetとBinarized Deep Neural Network
https://tkng.org/b/2016/02/12/binarynet-and-binarized-neural-network/

[Survey]Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1
http://qiita.com/supersaiakujin/items/81719e49a50a3fb653e8

binary_net by chainer
https://github.com/hillbig/binary_net

XNOR-Netが二値化ニューラルネットの性能を大きく改善する
https://tkng.org/b/2016/03/28/xnor-network/

[Survey]XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
http://qiita.com/supersaiakujin/items/6adaf9731c9475891911

ついでにこれに使われている、Quantizing parameters(量子化パラメータ)について勉強リンク(続けてよんでいないので、関連ないかも)
https://www.jstage.jst.go.jp/article/itej/67/2/67_136/_pdf
http://www.elwsc.co.jp/page.jsp?id=1953


http://www.nnet.ne.jp/~hi6/lab/quantize/

2016年10月20日木曜日

Googleの人工知能専門チームDeepMindがたった数カ月で40%もGoogleデータセンターの冷却システムを効率化することに成功

これすごいな。制御とDeeplearningをどう組み合わせたのか知りたい。モデルの推定?DQN等の強化学習法を使ってベストな入力を見つけたのか?この辺が誤解されるように書いてあってよくわからん。論文早くでないかな。

http://gigazine.net/news/20160721-deepmind-reduce-google-data-center-energy/




人工知能開発を行うスタートアップだった「DeepMind」は、Googleに買収された後もイギリス・ロンドンに拠点を置きつつ独自に人工知脳研究を続けています。DeepMindが開発する人工知能技術は、自己学習してゲームが上達するアルゴリズム「DQN」や囲碁の世界チャンピオンを打ち破るソフトウェア「AlphaGo」などのように時折発表されるとその度に世間を騒がせるのですが、Googleのデータセンターのエネルギー削減にも大きな威力を発揮していることが明らかになりました。

Google DeepMind
https://deepmind.com/blog


Google検索、Gmail、YouTubeなどのGoogleのさまざまなサービスを支えているのが、Googleが世界各地に持つデータセンターです。このデータセンターを効率的にすることは、Googleのサービス品質の向上につながることから、Googleはデータセンターをシステムレベルで絶えず更新し続けています。例えば、データセンターで使用するサーバーを高効率の物に置き換えたり、再生可能エネルギーで電力をまかなう取り組みが行われているとのこと。

中でもデータセンターの品質を語る上で「冷却効率」は非常に重要です。大量の熱を発生させるデータセンターを適切に冷却することはデータセンターの安定的な稼働に不可欠だからです。そして、データセンターの冷却に必要なエネルギーは、データセンターで使用されるエネルギーの大部分を占めており、冷却用のエネルギーを削減することは、環境負荷を下げることにつながります。そのためGoogleは、冷却効率を高めてエネルギーを削減することに長年取り組んでいます。なお、クラウドサービスなどでGoogleデータセンターを利用する企業にとっても、Googleのデータセンターのエネルギー削減が実現すれば、間接的な地球環境保護に役立つため、Googleはエネルギー削減に注力しているそうです。


しかし、データセンターの冷却システムは、データセンターを構成する機器があまりに複雑で非線形的に相互に影響を与えることから、机上の理論や人間の直感などを適用することが難しいという特性があります。さらに、世界中の各データセンターは環境やアーキテクチャが独自であるため、あるデータセンターに最適化された冷却モデルを他のデータセンターに適用できないという難しさもあるとのこと。そのため、データセンターの冷却システムの効率化は、ごく一般的なレベルでのフレームワークを構築するのにとどまっており、データセンターの冷却システム全体を効率化することは困難な作業と言えます。

そんなデータセンターの冷却効率化を進めるために、Googleは2年前から機械学習を取り入れてきたとのこと。機械学習によってデータセンターの使用状況を予測するモデルを立てることで、効率性を高めようというわけです。

このGoogleのデータセンターの冷却システムの効率化プロジェクトに、人工知能の専門チームであるDeepMindが数カ月間参加して、データセンターチームで働いたとのこと。DeepMindチームは、すでに数千人の技術者によって収集されていたデータセンターの気温、電力、冷却ポンプ内のクーラントの流速などのデータを多層のニューラルネットワークに落とし込むディープラーニングによって解析して、効率を高めるフレームワークを作成しました。その結果、冷却システムの消費電力をコンスタントに40%削減することに成功したとのこと。これはエネルギー指標のPower Usage Effectiveness(PUE)では15%の改善に相当します。

電力使用効率のグラフでは、ML(machine learning:機械学習)をONにした状態では、電力使用効率が格段に下がっているのが確認できます。


Googleのデータセンターチームが2年間かけて機械学習によってコツコツ高めてきた冷却効率を、わずか数カ月で4割も削減するというとんでもない仕事をやってのけたDeepMindですが、複雑な変化の中から最適な条件を探し出す機械学習の手法は汎用性を持っているため、今後、数カ月かけて発電設備の効率化、半導体部分のエネルギーの削減、水使用量の削減、スループットの向上など、データセンターの別の部分の効率化に取り組む予定だそうです。

2016年10月19日水曜日

Google DeepMind Natureへ3本目の論文発表「Differentiable neural computers」

GoogleのDeepMindが新しい手法を発表しました。名前は、「Differentiable neural computers」。Natureに投稿
これで3本目です。内容としては、Deeplearningに動的に構成されるメモリを組み合わせたみたいですが、まだよくわかっていません。

これから論文よんでみよう。

詳細解ったら、追記します。



Google発表
https://deepmind.com/blog/differentiable-neural-computers/
日本でのニュース
http://ascii.jp/elem/000/001/249/1249977/

2016年10月14日金曜日

ディープラーニングでキュウリを選別する人工知能搭載仕分け機が開発中

すばらしい。人間で判別し難いものをディープラーニングで仕分けとは。しかも、キュウリ。面白い。ひよこの仕分けもできないかな?

http://gigazine.net/news/20160901-deep-learning-cucumber-sorter/




現在で最も華やかなコンピューター技術と言えば、ディープラーニングを用いた人工知能と言えますが、農業の分野にもそんな波は訪れようとしているようです。元制御システム開発者で、現在は家業であるキュウリ農家を営んでいる小池誠さんは、GoogleのTensorFlowを使って学習させたAIを駆使することで、収穫されたキュウリを自動で選別して等級ごとに仕分けする装置を開発しています。

【CCB9】きゅうり仕分け機試作2号機 | Workpiles
http://workpiles.com/2016/08/ccb9-prototype2-complete/

Google Cloud Platform Japan 公式ブログ: キュウリ農家とディープラーニングをつなぐ TensorFlow
http://googlecloudplatform-japan.blogspot.jp/2016/08/tensorflow_5.html

小池さんが開発した「きゅうり仕分け機」は、縦型のラックの横に仕分け用のベルトコンベアが装着されている構造。右のラックにキュウリを載せるとカメラが外観を撮影してAIが等級を判別し、ベルトコンベアで所定の段ボール箱に入れられる仕組みになっています。


きゅうり仕分け機が実際に稼働している様子がコレ。従来ならば人の目と手で行っていた作業を、機械が自動で行う様子を見ることができます。

TensorFlow powered cucumber sorter by Makoto Koike - YouTube

キュウリを仕分け機のトレーの上に載せると……


複数のカメラで撮影したキュウリの外観をもとに、どの等級に仕分けるかをAIが判断。AIには事前に何千枚ものキュウリの写真を見せ、自分で等級を見極める能力を学習させてあるそうです。


判断が終わったら、キュウリを乗せていたトレーがカタンと倒れてキュウリをベルトコンベアに落とし……


ベルトコンベアがキュウリを左へ送ります。


そして、レバーが動いてキュウリを段ボールの中にシュート。段ボールは左に行くほど等級が上がるように置かれているようで、先ほど判定されたキュウリはB級品でしたが、ベルトコンベアに残された見るからに立派なキュウリはさらに高い等級の箱に入れられることになるようです。


小池さんは、Googleの人工知能「AlphaGo (アルファ碁)」が世界最強の棋士と互角に囲碁を差し合う様子を目にして「これは凄いことが起こっている」と直感したことをきっかけに、ディープラーニングを使ったキュウリ仕分け機の開発に乗り出したとのこと。


実家がキュウリ農家を営んでいるという小池さんは、繁忙期になると1日8時間にわたって延々とキュウリの仕分けを行う母親の姿を目の当たりにします。仕分けの作業が自動化されれば、その手間を本来のキュウリ作りに向けられると考えた小池さんは、わずか4か月で試作機の完成にこぎ着けたそうです。記事作成時点では試作機の2号機が完成しているとのこと。


新鮮なキュウリ作りを信条とする小池さんの父親は「棘が刺さるキュウリ」にこだわりを持っており、表面に残る凹凸の「イボ」があるキュウリこそが品質の証しと考えているとのこと。


実はキュウリの等級にはこれといった規格がなく、農家が独自に判断を下しているそうです。小池さんのところでは、キュウリの太さや色、ツヤ、キズの有無などで9等級に選別を行っているとのことで、これは人間でも簡単にできる仕事ではありません。


そんな作業を自動化させるための技術として、ディープラーニングを使ったAIが用いられているというわけです。


それまでディープラーニングや機械学習に触れる機会がなかったという小池さんは、オープンソースのライブラリである「TensorFlow」を用いることからディープラーニングの世界に入ったそうです。TensorFlowはディープラーニングの実装に必要な数理モデルや最適化アルゴリズムについて熟知していなくても、公開されているサンプルやチュートリアルを用いて「とりあえず触り始める」ことができるというもので、入門用ツールとしては最適なものといえます。

試作2号機のシステム構成は以下の通り。Webカメラによる画像撮影をRaspberry Pi 3で制御し、そこでTensorFlowによる小規模なニューラルネットによってキュウリのあり・なしを判断。そして、撮影したキュウリ画像をLinuxマシン上のTensorFlowで動作するディープラーニングによる認識エンジンに送ります。キュウリ画像の認識には、TensorFlowのサンプルコード「Deep MNIST for Experts」をベースに、若干手を加えたディープニューラルネットワークを用いているとのこと。畳み込み層とプーリング層を数回通したあと、全結合層を配置という構成で、扱う画像の解像度と分類数をキュウリ仕分け用に変更しているそうです。


現時点での判断スピードは1本あたり数秒を要している模様。さらに、学習が途上段階にあるようで、判断の正解率は70%程度ということで、改善の余地は残されている状態だそうです。しかし、これらの課題もクラウドによる分散学習でさらに多くのキュウリを学習させることで、劇的な改善が期待できるものとみられます。

かつて、農家の人々が行っていた大変な農作業を軽減させるために技術を開発したのがヤンマーなどの農機具メーカーでした。それから約1世紀がたち、21世紀の農業は以下のAlphaGoのサーバーを用いた人工知能によって負担減と効率アップが実現されるということになるのかもしれません。


なお、実際の技術の詳細などは、ページ上部の元ソースでガッツリ読み込むことが可能です。また、小池さんのキュウリ仕分け機は、Googleの英語ブログにも掲載されて世界に紹介されています。

How a Japanese cucumber farmer is using deep learning and TensorFlow | Google Cloud Big Data and Machine Learning Blog  |  Google Cloud Platform
https://cloud.google.com/blog/big-data/2016/08/how-a-japanese-cucumber-farmer-is-using-deep-learning-and-tensorflow

2016年10月7日金曜日

Ceres Solver のインストール (Windows8, Visual Studio 2013)

GoogleのCeresは非線形最適化(Non-linear Least square)として広く使われており、昨今、Visionの世界でBundle Adjustmentによく使われています。最近研究している、パスの最適化にも使えるかなってことで導入してみました。Ubuntuだともっと楽なのでしょうが、家と研究室の環境の問題から、Windowsで挑戦。
インストレーションの基本は下。
http://ceres-solver.org/building.html#windows

1. Eigen のインストール。
他のページを参照

2.Google glogのインストール
2-1. ダウンロード
以下のサイトから、glog-0.3.3.tar.gzをダウンロード。
https://code.google.com/archive/p/google-glog/downloads
アンド解凍。

2-1. コンパイル
- google-glog.slnでVisual studioを立ち上げる。
- Congifuration Manager でActive solution Platform をx64に変更する。
 <New...>押してType or select the new platformをx64に変える。
 また、今後のためにReleaseいしておく。
- [Build]->[Batch Build] ですべて選んでコンパイル
- しかし、エラーが。minがないとか言われる。そのため、そのエラーをクリックしたlogging.ccを立ち上げる。
インクルードならどこでもよいが、私の場合、64行目に
#include <algorithm>
を追加する。
無事エラーがなければ、コンパイル成功

3.gflagのインストール
3-1. ダウンロード
昔のバージョンが見つからないため、下記の場所から最新版をダウンロード(執筆時点2.1.2)
https://github.com/gflags/gflags

3-2. Cmake
slnがなくなっているのでcmakeでプロジェクトを作成。但し、ビルド用のフォルダの名前がbuildにすると、元からあるファイルとかぶりフォルダが作れない。そのため、もとからあるBUILDの名前を変えるか消す。

3-3. コンパイル
エラーがなければ。無事成功

4.ceres
4-1. ダウンロード
http://ceres-solver.org/
からlatest stable release をダウンロード。執筆時点1.11.0.

4-2. プロジェクトの作成
フォルダ作成ceres-bin
cmake起動
Advancedにチェックを入れるとすべてのオプションが出る。
EIGEN_INCUDE_DIR (自分のパス)/eigen-3.2.4
GLOG_INCUDE_DIR (自分のパス)/glog-0.3.3\src\windows
GLOG_LIBRARY_DIR (自分のパス)/glog-0.3.3\Release\libglog.lib
Installation GuideにはGFLAGSに関してもパスを入れなければならないとありましたが、何故か私は必要ありませんでした。
GFLAGS_INCLUDE_DIR
GFLAGS_LIBRARY_DIR

Configure & Generate

4-3. コンパイル
ceres-binの中のCeres.slnでVisual Studioを起動
[BUILD]->[BATCH BUILD]
でALL_BUILDとINSTALLのところにチェックを付けて、ビルド開始。

参考:
http://buaiso.blogspot.com/2013/12/ceres-solver-on-windows.html
http://www.rm.is.ritsumei.ac.jp/~mori/Shohei_Mori_Site/articles/installation/CeresSolver/CeresSolver.html
glogエラー解決
http://stackoverflow.com/questions/19439670/min-max-not-a-member-of-std-errors-when-building-opencv-2-4-6-on-windows-8

2016年8月29日月曜日

Googleの人工知能専門チームDeepMindがたった数カ月で40%もGoogleデータセンターの冷却システムを効率化することに成功

これすごいな。制御とDeeplearningをどう組み合わせたのか知りたい。論文早くでないかな。

http://gigazine.net/news/20160721-deepmind-reduce-google-data-center-energy/




人工知能開発を行うスタートアップだった「DeepMind」は、Googleに買収された後もイギリス・ロンドンに拠点を置きつつ独自に人工知脳研究を続けています。DeepMindが開発する人工知能技術は、自己学習してゲームが上達するアルゴリズム「DQN」や囲碁の世界チャンピオンを打ち破るソフトウェア「AlphaGo」などのように時折発表されるとその度に世間を騒がせるのですが、Googleのデータセンターのエネルギー削減にも大きな威力を発揮していることが明らかになりました。

Google DeepMind
https://deepmind.com/blog


Google検索、Gmail、YouTubeなどのGoogleのさまざまなサービスを支えているのが、Googleが世界各地に持つデータセンターです。このデータセンターを効率的にすることは、Googleのサービス品質の向上につながることから、Googleはデータセンターをシステムレベルで絶えず更新し続けています。例えば、データセンターで使用するサーバーを高効率の物に置き換えたり、再生可能エネルギーで電力をまかなう取り組みが行われているとのこと。

中でもデータセンターの品質を語る上で「冷却効率」は非常に重要です。大量の熱を発生させるデータセンターを適切に冷却することはデータセンターの安定的な稼働に不可欠だからです。そして、データセンターの冷却に必要なエネルギーは、データセンターで使用されるエネルギーの大部分を占めており、冷却用のエネルギーを削減することは、環境負荷を下げることにつながります。そのためGoogleは、冷却効率を高めてエネルギーを削減することに長年取り組んでいます。なお、クラウドサービスなどでGoogleデータセンターを利用する企業にとっても、Googleのデータセンターのエネルギー削減が実現すれば、間接的な地球環境保護に役立つため、Googleはエネルギー削減に注力しているそうです。


しかし、データセンターの冷却システムは、データセンターを構成する機器があまりに複雑で非線形的に相互に影響を与えることから、机上の理論や人間の直感などを適用することが難しいという特性があります。さらに、世界中の各データセンターは環境やアーキテクチャが独自であるため、あるデータセンターに最適化された冷却モデルを他のデータセンターに適用できないという難しさもあるとのこと。そのため、データセンターの冷却システムの効率化は、ごく一般的なレベルでのフレームワークを構築するのにとどまっており、データセンターの冷却システム全体を効率化することは困難な作業と言えます。

そんなデータセンターの冷却効率化を進めるために、Googleは2年前から機械学習を取り入れてきたとのこと。機械学習によってデータセンターの使用状況を予測するモデルを立てることで、効率性を高めようというわけです。

このGoogleのデータセンターの冷却システムの効率化プロジェクトに、人工知能の専門チームであるDeepMindが数カ月間参加して、データセンターチームで働いたとのこと。DeepMindチームは、すでに数千人の技術者によって収集されていたデータセンターの気温、電力、冷却ポンプ内のクーラントの流速などのデータを多層のニューラルネットワークに落とし込むディープラーニングによって解析して、効率を高めるフレームワークを作成しました。その結果、冷却システムの消費電力をコンスタントに40%削減することに成功したとのこと。これはエネルギー指標のPower Usage Effectiveness(PUE)では15%の改善に相当します。

電力使用効率のグラフでは、ML(machine learning:機械学習)をONにした状態では、電力使用効率が格段に下がっているのが確認できます。


Googleのデータセンターチームが2年間かけて機械学習によってコツコツ高めてきた冷却効率を、わずか数カ月で4割も削減するというとんでもない仕事をやってのけたDeepMindですが、複雑な変化の中から最適な条件を探し出す機械学習の手法は汎用性を持っているため、今後、数カ月かけて発電設備の効率化、半導体部分のエネルギーの削減、水使用量の削減、スループットの向上など、データセンターの別の部分の効率化に取り組む予定だそうです。

2016年7月15日金曜日

イタチゴッコ

http://kivantium.hateblo.jp/entry/2016/03/27/221111
顔認識を失敗させる眼鏡も面白いが、それでも認識する技術をさらに開発するってのも面白い。

ご紹介まで。

2016年6月24日金曜日

ディープラーニングで森の中を迷わずに自律飛行できる遭難救助ドローン

論文は知ってたけど、こう使うんですね。
http://gigazine.net/news/20160213-drone-visual-perception/



森や山を自律飛行できるロボットの開発において、従来の研究では道自体を区別できる技術に焦点が当てられていました。そんな画像特徴や外観対比による経路の分別はロボットの自律走行技術として不適当であるとして、3台のアクションカメラの映像をディープラーニングで一度に解析して、正しい経路の方向を人間に匹敵する精度で選択可能な新技術が発表されました。

On the Visual Perception of Forest Trails
http://people.idsia.ch/~giusti/forest/web/

カメラ映像による視覚情報をディープラーニングで解析して、山や森などの道を識別できる技術を研究しているのは、スイスの人工知能研究所「IDSIA」および、チューリッヒ大学のロボティクス知覚研究グループによる共同研究グループ。ドローンに搭載可能な山林救助の新技術が一体どのような仕組みなのかは、以下のムービーを見ると分かりやすいです。

Quadcopter Navigation in the Forest using Deep Neural Networks - YouTube

クアッドコプターに搭載されている新技術は「自動的に森にある道をたどって飛行する」「野外の遭難者の捜索救助任務で活躍できる」「市販のカラーカメラ(GoPro)で道を識別する」といった特徴を備えています。


自然の中の道は人間でも見分けがつきにくく、ロボットが画像や映像から正しい進路を取るのは、従来の技術では十分な精度で実現できていません。以下のように、左・前方・右に道のようなものが見える場所で、正しい方向を選択できる技術を確立するのが最大の目的です。


問題解決のため、IDSIAとチューリッヒ大学の共同研究グループが用いたのは3台のカメラによる映像をディープラーニングで解析し、正しい進路を自動的に判別するというもの。


ドローンが道の上を飛行している時、システムはカメラから得た映像を10層のニューラルネットワーク、15万の負荷、50万のニューロン、5700万の接続で処理しているとのこと。


ドローンに搭載したシステムが正しい道を識別できるようにするため、あらかじめ頭に3台のGoProを人間に取り付け、学習データが取得されています。


学習データとして入力された写真の枚数は2万枚におよんでいるとのこと。


それらのデータを処理することで、カメラで見えている3方向へ適宜、進路を修正することができ、迷わずに正しい進路を自律的にとることができるわけです。


その結果、新技術による進路識別精度は、従来の52.32%に比べて85.23%となっており、人間と同程度である82%という識別精度を実現しているとのことです。

2016年4月2日土曜日

Chainer のインストール(Windiows10, GPU, anaconda(Python 2.7), Visual Studio 2013)

Deep Learning が楽しいのでGPU買っちゃった。Geforce960ですが。セットアップしようと思ったら、電源の容量が足りなくて、購入する羽目になったりとかインストールを始めるまでも大変でしたが・・・いざインストールを始めてみると、CPUのみはかなり楽なのに・・・GPUを導入したらまぁー大変でした。原因のほとんどはcupyがないってこと。


1. Microsoft Visual Studio関係をインストール
Anacondaでコンパイルするために、Visual studioのファイルを使います。下記の二つをインストールしましょう。
Microsoft Visual Studio 2013をインストール
Microsoft Visual C++ Compiler for Python 2.7をインストール
この後に、PATHを追加します。
Windows10ではWindowsキーの上で右クリックしてでたメニューからシステムを選ぶ。右のメニューからシステムの詳細設定を選び、「環境変数」をクリック。システムの環境変数(下の枠)からPathと書いてあるのを探し出して、編集を押す。そしたら、下のパスを追加する。
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin


2.CUDAのインストール
GPUを使うので、nVIDIAのライブラリであるCUDAが入っていないと話になりません。公式サイトからダウンロードしてインストールしましょう。
公式サイト
私は、Chainer1.7ではCUDAの7.5で何も問題ありませんでした。これをするとCUDAコンパイラのnvccがインストールされ、パスも自動設定されます。

3.cuDNNのコピー
cuDNNをダウンロードします。登録しないとダウンロードできないので、いろいろ答えて、ダウンロード。私の時には下のファイル名のファイルが落ちてきました。
cudnn-7.0-win-x64-v4.0-prod.zip
解凍。各ファイルをNVIDIA GPU Computing Toolkitの各フォルダにコピーする。
cudnn64_4.dll -> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin
cudnn.h -> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include
cudnn.lib -> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64
cudnn_static.lib -> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64

4.Python環境のインストール
私の知る限り、Pythonの環境は、PythonそのものとAnacondaがあります。今回はAnaconda2で上手くいったので、そちらをインストールします。
問題が少ないように今回はPython 2.7をインストールとします。公式サイトからダウンロード。
私の時は、以下のファイルが来ました。
Anaconda2-2.5.0-Windows-x86_64.exe
実行してインストール

5.Chainerのインストール
やっと、インストールできます。まず、anacondaを立ち上げます、Windowsのメニューの中に、Anaconda2ができているので、その中のAnaconda Promptを立ち上げます。これからで、ちょっとはまりました。

・CPUのみ(GPU未使用)
pip install chainer
これをうつだけでインストール完了です。
python -c "import chainer"
と打って何もでなければ問題なしです。とりあえず、私はこれで問題がでたことがありません。

・GPU使用
ここからが問題です。
初めに、pipのupgrade
python -m pip install --upgrade pip

GPUの時は、下のコマンドでインストールします。
pip install -U chainer -vvvv

エラー:easy-install.pthがないと怒られる。しかし、よく英語をremoveできないって怒られる。どうやらChainerの都合の良いVersionを入れるために、一度消してから入れなおそうとしているらしい。ってことで、どうせ消すのでからそのファイル名のファイルを作る。
C:\Users\ユーザーの名前\Anaconda2\Lib\site-packages

次はsetuptools-19.6.2-py2.7.eggがないと怒られる、ので以下のコマンドを実行。
easy_install --upgrade six

再度
pip install -U chainer -vvvv
お、何も言ってこなかったぞ。

なお、CPUモードでは7である公式のコードを落として、python setup.py installでも行けたのですが、GPUだと上手くいきませんでした。追及していないのですが方法はあるかもしれません。これら2つの方法あるのでまた数日悩んでいました。

6.インストールチェック
Chainer&cupy&cuDNNのチェック。以下のコマンドをうって何も言ってこなかったらOK。
python -c "import chainer"
python -c "import cupy"
python -c "import cupy.cudnn"

7.GPUでMNISTを動かしてみる。
ChainerのExampleを実行するために、まとめて落とします。wgetでも落とせるのでしょうが、どうせWindowsなので、ブラウザからZIPファイルを落としてみました。
GitHubのpfnetからchainerをダウンロード。右上のDownload ZIPのところを押せば落とせます。
anaconda2が
C:\Users\ユーザーの名前
から始まるので、そこの下に解凍しておきます。そして以下のフォルダへ移動。(lsが使いたいがdirしか使えん。いい方法ないかな)
C:\Users\Toshinobu\python\chainer\examples\mnist
そこに行ったら、
python train_mnist.py --gpu 0
を実行

おぉ。動いている。epoch毎にGeforce君がギューとか言っているのがうれしい。これまで、1epochで約1分かかっていたのが、4秒。早!!
楽しい。


PS; いろいろ試している中で、Stdint.hがないと怒られたことがありました。Visual Studioのincludeには入っているのですが、インストールシェルでそこにどうやってパスを指定するかわからなかったため、cudaのincludeに強引にコピーしました。最終的に本当に必要だったのかわかりませんが、そのエラーが出たときには、コピーで解消しましょう。


参考:
http://qiita.com/okuta/items/f985b9da6de33a016a75
http://datalove.hatenadiary.jp/entry/python/anaconda/install-tensorflow-into-anaconda-environment

2016年3月12日土曜日

Deeplearning Chainer のインストール(CPU only, Ubuntu)

元々は、android 対応していることもありtensorflowを使おうと思っていたのですが、やってみたいことを実現している人が公開しているコードがchainerを使っているので、これからはchainerを使うことにしました。コード書き換えの手間を減らすことと初心者なので人のを読んで勉強と思って決めましたが、まぁヘタレです。
今回はUbuntuにインストールしてみました。皆さんはGPUを使っていてCPUのみでの人がすくなく、過剰な部分もあると思います。しかし、結論にもありますがやってみればGPUにいくと思いますので、そこはご愛敬ということで。

1.前提ソフトウェアのインストール
sudo apt-get install g++
sudo apt-get install python-dev
curl -O https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo apt-get install python-pip
sudo apt-get install libblas-dev liblapack-dev gfortran

2.numpy とscipyのインストール
pip install --user numpy scipy
sudo apt-get install python-numpy python-scipy

3.Cudaのインストール
まずダウンロード下のURLに行き、自分の環境にあったものを落としてきましょう。3/12時点ではVersion 7.5でした。
https://developer.nvidia.com/cuda-downloads

ダウンロードが終わったら、
sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
sudo apt-get update
sudo apt-get install cuda

4.cuDNNのインストール
これまたダウンロードしましょう。いきなりは落とせなくて登録しなければなりません。登録したら、v4 をダウンロードします。Chainer公式サイトにv2, v3も書いてあったのでそっちでもいいと思いますが、とりあえず新しいものを入れておきます。
https://developer.nvidia.com/cudnn

インストールの仕方はココに書いてあります。Linux版だけ抜粋。
tar -xzf filename
cd <installpath>
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH

5.chainerのインストール
さて、やっと本題です。Chainerをインストールします。
sudo pip install chainer
or
pip install --user chainer

6.サンプルを動かしてみましょう。
まずはGitでサンプルを落としますが、gitがない人も考えてgitのインストールから
1. sudo apt-get install git
2.git clone http://github.com/pfnet/chainer.git
3.上で落としたフォルダに入り、exampleの中に行く
python train_minist.py (CPU版)
or
python train_minist.py -g (GPU版)

あとは、時間との闘いです。実は、諸般の事情と将来を考慮して、これをWindowsのVirtualBox(4core使用)にインストールしたUbuntuの上で走らせているのですが、遅い!!参考の人はGPUを使ってepoch 20 で 1分30秒くらいと書いてありますが、私の場合、1 epochで5分はかかっています。3.2G 8coreのマシンをVirtualBoxで4coreしか使わない等、マシン性能が大幅に削られている影響なのでしょうが・・・。tanakahxさんのGPUが必要との意見に激しく同意です。

参考:
http://tanakahx.hatenablog.com/entry/2015/10/12/214738

2016年3月10日木曜日

DeepLearning 分散強化学習のニュース

どれもすげぇ。これやってみよう。

分散深層強化学習でロボット制御
https://research.preferred.jp/2015/06/distributed-deep-reinforcement-learning/

CES2016でロボットカーのデモを展示してきました
https://research.preferred.jp/2016/01/ces2016/#more-5412

14台のロボットアームに分散自己学習させて人間が数年かけて覚える動作を爆速で経験して身につけさせる恐るべきムービーをGoogleが公開
http://gigazine.net/news/20160310-google-deep-learning-robot/



2016年3月9日水曜日

「人工知能vs世界最強の棋士」囲碁対局は人工知能のAlphaGoが勝利、5番勝負の初戦を制する

囲碁は難しいといわれていたが、初戦勝った。すげぇ!。次が楽しみ。

ちなみに、このAI(AlphaGo)の論文がNatureに載っているみたいですので、紹介。
http://www.nature.com/nature/journal/v529/n7587/pdf/nature16961.pdf

http://gigazine.net/news/20160309-google-alphago-win/



Googleの人工知能「AlphaGo」と囲碁のトップ棋士イ・セドル九段による対局が2016年3月9日にソウル市内で行われ、なんとAlphaGoが勝利を収めました。

米グーグル人工知能、囲碁で世界トップ級棋士に初戦勝利  :日本経済新聞
http://www.nikkei.com/article/DGXLASFG09H3O_Z00C16A3000000/

2016年3月9日に行われた第1戦は、セドル九段が投了(ギブアップ)したことでAlphaGoが勝利を収めました。以下の画面はセドル氏が投了する直前の様子。


これにより、5戦行われる対局の初戦はAlphaGoの勝利となりました。


続く第2戦は翌日の3月10日(木)に行われる予定。開始時刻は韓国時間で13時、日本でも同時刻となっています。セドル九段が巻き返しを見せて同点に持ち込むのか、それともAlphaGoが2勝目を挙げて勝利に王手をかけるのか、関心が集まります。


2016年3月7日月曜日

Deep Learning (ディープラーニング、深層学習)の勉強の資料

日本で出ている本としては2016年3月時点としては2冊。ただ、Deep learningは言ってしまえば、既存の技術の集合体なので、その他様々な機械学習の資料が役に立つ。
(機械学習については素人が勉強していったものを書いているので、コメントは私のイメージです。間違っていたら、訂正ください。)

DeepLearning
深層学習(機械学習プロフェッショナルシリーズ)岡谷著
人工知能で有名な岡谷さんの本。(勉強中)
 6章の解説のスライドを作った人がいましたので参考に。

深層学習 Deep Learning (監修:人工知能学会)
人工知能知能学会の学会誌「人工知能」で連載していた記事が加筆・再編されたものです。この本の勉強になる点としては、基礎編と応用編で別れているところです。深層学習はいろいろ方法がありますが、どの方法がどの問題に適しているかなど、予備知識がない状況だと非常に厳しいです。本文に入る前の「深層学習手法の全体像」をみてどんなもんかつかんで、応用編で画像・音声・自然言語処理でどんな方法が適用できるのかをみることができます。

Udacity DeepLearning
基本的にDeepLearningのライブラリの一つであるTensorflowの開発者の一人(Google)が授業をやってくれます。なので、宿題がTensorFlow前提です。意外に短くてこれでいいのかと思いますが、後から、本を読んでみると勘所は抑えてあるので、図で概念をとりあえず把握したい人におすすめです。ちなみに、私は概念だけをとりあえず知るために、Assignment(宿題)を全部すっとぱしました。この影響は不明。おおよそ3か月かかると書いてありますが、ただ見るだけなら、1,2日で見れます。まぁ、これだけで理解は難しいので、宿題の期間とそれを理解するために他の本を読む期間を合わせたものだと推測します。

・パターン認識と機械学習 (上巻下巻原書
通称、PRMLと呼ばれ、言わずと知れた、機械学習の必読書?にしては難しくてあちこちでこのための勉強会ができていたり、このなかの数学を勉強するための本などがあります。基本の技術が網羅されているのでしょうが、何に使うかよくわからないことが多く、他の勉強をして後であー納得ってことがあります。流し読みして、辞書替わりに復習で使っています。

・TensorFlowチュートリアル(原文(英語)日本語訳
DeepLearningのライブラリの一つであるTensorflowのチュートリアルです。原文は英語なので、それで勉強と思いきや、日本語訳した人がいました(作ろうと思ったらあった)。KojiOhkiさんに感謝。まぁ、この分野はまだできたばかりで、英語の文献も多いのでそっちで練習した方がいいと思いますが、手っ取り早くやりたい人に便利。



これからも、いろいろと読むと思いますので、加筆していく予定です。


2016年1月31日日曜日

ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(TensorFlow, Chainer, Caffe, DeepDream, 画風変換)

自分は caffeをやろうとしているので、やらないと思うけど・・・
http://qiita.com/shu223/items/a4fc17eb3356a6068553?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=ebc7bbd46e-Qiita_newsletter_192_1_27_2015&utm_medium=email&utm_term=0_e44feaa081-ebc7bbd46e-33029237

「いつか勉強しよう」と人工知能/機械学習/ディープラーニング(Deep Learning)といったトピックの記事の見つけてはアーカイブしてきたものの、結局2015年は何一つやらずに終わってしまったので、とにかく一歩でも足を踏み出すべく、 本質的な理解等はさておき、とにかく試してみる ということをやってみました。
試したのは、TensorFlow、Chainer、Caffe といった機械学習およびディープラーニングの代表的なライブラリ/フレームワーク3種と、2015年に話題になったディープラーニングを利用したアプリケーション2種(DeepDream、chainer-gogh)。
(DeepDreamで試した結果画像)
タイトルに半日と書きましたが、たとえばTensorFlowは環境構築だけなら10分もあれば終わるでしょうし、Chainerなんてコマンド一発なので5秒くらいです。Caffeは僕はハマりましたが、うまくいった最短手順を書いているので、同じ環境の方はすんなりいくかもしれません。
おすすめは、Chaffe & DeepDream(要Caffe)は飛ばして、TensorFlow, Chainer&画風変換を試す コースです。環境構築にハマらないので簡単に終わると思います(実行時間はかかりますが)。僕のように「気にはなってたけど全然触ってない」という方はぜひ今日の昼休みにでもお試しください!
試した環境:
  • Mac OS X 10.11.1 El Capitan
  • Xcode 7.2 インストール済み

TensorFlow

2015年11月に発表された、Google製の機械学習ライブラリ。「テンソルフロー」と読むそうです。同社のサービスでも実際に使われているとのこと。
よく話を聞く音声認識や翻訳だけでなく、Googleフォトの被写体認識や顔認識、ウェブ検索結果の最適化、Gmailのメール分別、新生メールソフトInboxの自動返信文作成、さらにYouTubeや広告事業まで、ほとんどのプロダクトを支える新たな根幹技術となっています。
TensorFlow の特徴は、データフローグラフとして表せればなんでも処理でき、その気になればローレベルのオペレータも手書きできる汎用性、Googleの実製品で使われる高いパフォーマンス、CPUでもGPUでも走りノートPCから巨大なデータセンターまで同じコードで動きモバイル端末にもデプロイできるスケーラビリティ、計算機科学の研究から実プロダクトまで扱える効率性、ドキュメンテーションやサンプルが揃いPythonでもC++でも書ける扱いやすさなどなど。

オープン化の狙い

ライセンスは商用利用も可能な Apache 2.0 で、自社製品のコアにもなっているこんなすごいものをなぜ Google はオープン化したのか?というところは気になるところです。
TensorFlowをオープンソース化することで、学術研究者からエンジニア、趣味として取り組むユーザーまで、あらゆる人々の機械学習コミュニティーが、研究論文よりも動作するコードを介してアイデアを格段にすばやく交換できるようになると期待している。これが機械学習に関する研究の促進につながり、最終的に技術がすべての人々にとってより適切に機能するものになるだろう。さらに、TensorFlowの応用分野は機械学習だけにとどまらない。タンパク質のフォールディングから宇宙データの処理にいたるまで、非常に複雑なデータの解明に取り組むあらゆる分野の研究者らにとって有用であるかもしれない。
Googleいわく、機械学習はこれからの画期的なプロダクトや技術に欠かせない重要な要素となるもので、世界中で研究が進められているものの、標準となるツールが存在していないことが課題。Google では TensorFlow を研究者から学生、製品開発者まで使える標準ツールとして提供することで、機械学習や機械知能そのものの研究と普及を加速したい考えです。

環境構築手順(所要時間:10分)

OS X El Capitan (10.11.1) へのインストール手順です。

1. pip をインストール

$ sudo easy_install pip

2. Virtualenv をインストール

$ sudo pip install --upgrade virtualenv

3. Virtualenv 環境を作成

$ virtualenv --system-site-packages ~/tensorflow
(上記コマンドだと ~/tensorflow につくられる)

4. つくった環境をアクティベート

$ source ~/tensorflow/bin/activate
→ コマンドプロンプトが変わる

5. TensorFlow をインストール

(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
Successfully installed numpy-1.10.2 six-1.10.0 tensorflow-0.5.0
以上です。

動作確認:Hello World を実行してみる

スクリプトを作成し、適当なファイル名で保存します。
import tensorflow as tf
import multiprocessing as mp

core_num = mp.cpu_count()
config = tf.ConfigProto(
    inter_op_parallelism_threads=core_num,
    intra_op_parallelism_threads=core_num )
sess = tf.Session(config=config)

hello = tf.constant('hello, tensorflow!')
print sess.run(hello)
TensorFlow 環境で実行します。
(tensorflow)$ python {ファイル名}.py
実行結果:
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 4
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 4
hello, tensorflow!
参考ページ:

手書き数字を学習してみる

TensorFlow オフィシャルページに、「MNIST For ML Beginners」という手書き文字データセットを利用したチュートリアルがあります。
(MNISTデータセット)
ここでは一番手っ取り早そうな、公式チュートリアルのコード(GitHubにある)を実行する方法を試すことにします。
ソースコードを clone してきて、
$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow
fully_connected_feed.py の30,31行目を次のように修正します。1
  • 修正前
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.examples.tutorials.mnist import mnist
  • 修正後
import input_data
import mnist
fully_connected_feed.py を実行します。
$ cd tensorflow/
$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py 
MNISTデータセットを手動でダウンロードしたりする必要はなく、このスクリプトがデータセットの取得からモデルの学習までやってくれます。
実行結果:
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting data/train-images-idx3-ubyte.gz
//中略
Step 0: loss = 2.32 (0.025 sec)
Step 100: loss = 2.19 (0.003 sec)
Step 200: loss = 1.97 (0.003 sec)
//中略
Step 1900: loss = 0.46 (0.004 sec)
Training Data Eval:
  Num examples: 55000  Num correct: 49489  Precision @ 1: 0.8998
Validation Data Eval:
  Num examples: 5000  Num correct: 4534  Precision @ 1: 0.9068
Test Data Eval:
  Num examples: 10000  Num correct: 9019  Precision @ 1: 0.9019
データセットのダウンロード、トレーニング、テストデータでの評価が行われています。最終的な精度は約90%。
参考ページ:

学習結果を可視化する TensorBoard を試す

なんと、学習結果をグラフにしてくれたり、モデルをビジュアライズして表示してくれる TensorBoard というものも用意してくれているようです。
学習経過のログデータのあるディレクトリを絶対パスで指定 2 して tensorboard コマンドを実行すると、
$ tensorboard --logdir=/Users/xxxx/xxxx/tensorflow/tensorflow/data
TensorBoard が起動します。
Starting TensorBoard on port 6006
(You can navigate to http://localhost:6006)
で、このURLにブラウザからアクセスするとGUIが表示され、
学習回数とxentropy_mean(交差エントロピー)の関係を示すグラフや、
モデル(ニューラルネットワーク)を可視化したものを見ることができます。

More

Chainer

Preferred Networks社が開発したニューラルネットワークを実装するためのライブラリ。2015年6月公開。特徴としては、
  • Python のライブラリとして提供
  • あらゆるニューラルネットの構造に柔軟に対応
  • 動的な計算グラフ構築による直感的なコード
  • GPU をサポートし、複数 GPU をつかった学習も直感的に記述可能
が挙げられています。

TensorFlow との比較

上記特徴を見ると TensorFlow とポジショニング的には似ているように見えたので、どんな違いがあるのかググッてみました。
たぶんできることそのものに大きな違いはないんだろうけど、Chainerの場合マルチGPUにするときには自分でGPUの管理をしなきゃなんないのが、TenrorFlowだともうちょっとラクなのかなあと思ったりする。
TensorFlow、GPU使うのにリビルドが必要で、そのためにbazelが必要で、そのためにJava8が必要で、しかもGPUにCC3.5以上の制約があるみたいで、使えるなら使えば?感が凄い。同じPythonならChainerの方が敷居が低く感じる。
TensorFlowはDistBeliefの2倍の速いそうなのですが、Chainerはそれを上回っていました。
記述量的にはそこまで変わらないですし個人的にはChainerの方が扱い易いというのが感想です(慣れの問題だとは思いますが。)。
TensorFlow,Chainerとも精度は同じでした。そもそもMNISTは問題が簡単なのでDeep Learningでなくても高い精度が出るそうです。実行時間はChainerの方が速かったのです。

インストール手順(所要時間:5秒)

公式ドキュメントに Install Guide というページがあるのですが、Ubuntu, CentOS 向けに書かれているようなので、Mac向けのはないかなと探してたら、本家Webサイトに QUICK START という項目がありました。
やることは
$ pip install chainer
これだけ。
Successfully installed chainer-1.5.1 filelock-2.0.5
素晴らしい!

手書き数字を学習してみる

公式リポジトリにサンプルが用意されています。cloneしてきてスクリプトを実行するだけ。
$ git clone https://github.com/pfnet/chainer.git
$ python chainer/examples/mnist/train_mnist.py
MNISTデータセットのダウンロードと、学習、テストが行われます。
load MNIST dataset
Downloading train-images-idx3-ubyte.gz...
(中略)
epoch 1
graph generated
train mean loss=0.190947790003, accuracy=0.942850003242
test  mean loss=0.0990746175707, accuracy=0.96930000484
(中略)
epoch 20
train mean loss=0.0104963570454, accuracy=0.996966669559
test  mean loss=0.102703116325, accuracy=0.982000006437
最終的な識別精度は98%になったようです。

More

Caffe

C++で実装されたディープラーニングのオープンソースライブラリ。カリフォルニア大学バークレー校の研究センターBVLCが中心となって開発、C++・Python・MATLABで利用可能。
具体的な公開日はわかりませんが、ChainerやTensorFlowの登場以前から存在する分、ネットで見つかるおもしろそうなディープラーニングを利用した研究や試みはCaffeをベースにしたものを多く見かける気がします。

環境構築手順(所要時間:約4時間)

所要時間は個人差(環境差)があると思いますが、確実にTensorFlowやChainerよりは時間がかかる と思います。依存ライブラリが多く、その中にはインストールの待ち時間が長いものがありますし、各自の環境に依存した設定を手動で行う必要があるので、そのあたりでハマることもあると思います。また個人的にはnumpyのバージョンが違うというエラーにかなり悩まされました。
GPUが絡むとハマりそうなのでCPUモードで、インストールしていきます。PyCaffeも入れます。

1. 諸々インストール

$ brew install --fresh -vd snappy leveldb gflags glog szip lmdb
$ brew tap homebrew/science
$ brew install hdf5 opencv
$ brew install --build-from-source --with-python --fresh -vd protobuf
$ brew install --build-from-source --fresh -vd boost boost-python
$ brew install openblas
※1 opencv のインストールはかなり時間がかかります。
※2 OpenBLAS は入れなくてもいいそうですが(Macでは標準でBLASが入っているとのこと)、この後の手順で Makefile の BLAS_INCLUDE のパスを修正したりしてから make を実行しても fatal error: 'cblas.h' file not found が出てしまうので、入れることにしました。

2. caffe をclone

$ git clone https://github.com/BVLC/caffe.git

3. Makefile.config 作成

雛形からコピーしてきて、編集します。
$ cd caffe
$ cp Makefile.config.example Makefile.config
  • # CPU_ONLY := 1 のコメントアウトを外す
  • BLAS := atlas を BLAS := open に変更する
  • 以下のコメントアウトを外す
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib
  • PYTHON_INCLUDE のパスを自分の環境に合わせて書き換える 3
    • 修正前 PYTHON_INCLUDE := /usr/include/python2.7 \ /usr/lib/python2.7/dist-packages/numpy/core/include
    • 修正後 PYTHON_INCLUDE := /usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7 \ /usr/local/lib/python2.7/site-packages/numpy/core/include/

4. ビルド&テスト

$ make clean
$ make all -j4
$ make test -j4
$ make runtest
ここでエラーがでなければインストール成功です。
[  PASSED  ] 927 tests.

5. PyCaffe に必要なライブラリをインストール

caffe/python フォルダに移動し、PyCaffe に必要なライブラリをインストールします。
$ cd python/
$ for li in $(cat requirements.txt); do sudo pip install $li; done 

6. PyCaffe のビルド

$ cd ../
$ make pycaffe
$ make distribute

7. 環境変数を設定

Caffe用の環境変数を設定します。~/.bashrc に下記を追記し、
export PYTHONPATH={caffe/pythonのパス}:$PYTHONPATH
source ~/.bashrc で反映します。

8. 動作確認

PythonのインタプリタからCaffeをimportしてみて、問題が起きなければOK。
$ python 
>>> import caffe
ちなみに本記事では最終的にうまくいった手順のみを書いていますが、大いにハマったトラブルシューティングの過程 も別記事として書いておきました。

参考ページ:

DeepDream

ここからひとつレイヤーは上がって、ディープラーニングライブラリ/フレームワークを利用した応用アプリケーション的なものをいくつか試してみます。
DeepDream は 2015年7月にGoogleが公開 したOSSで、
画像から少しでも見覚えのある物体を見つけ出し、それを再構成して出力する
人工神経回路網は10~30のレイヤーから構成されており、1枚目のレイヤーは画像の情報をインプットして「角」や「端」を探し、2枚目・3枚目と続くレイヤーは基本的な物体の情報を把握、最終的なレイヤーが情報を組み立てて物体が「何か」を判断する、という仕組みです。
というもの。

環境構築の手順(所要時間:10分)

要Caffe(インストール手順は上述)。Caffeさえ入っていればさっくり試せます。

1. iPython notebook をインストール 4

$ pip install ipython
$ pip install ipython[notebook]

2. DeepDream を clone

Caffe のあるフォルダと同階層に DeepDream のソースを clone します。
$ git clone git@github.com:google/deepdream.git

3. モデルをダウンロード

ここ から学習済みのcaffeモデルをダウンロードし、{caffeのパス}/models/bvlc_googlenet/ に保存します。

試す

cloneしてきたdeepdreamフォルダに移動し、iPython notebookを起動します。
$ cd deepdream
$ ipython trust dream.ipynb
$ ipython notebook
ブラウザが立ち上がるので、dream.ipynb を選択して、上部にある再生ボタンをポチポチ押していき、最後まで到達したらしばらく待っていると・・・ deepdream/frames/ フォルダに結果画像が 0000.jpg, 0001.jpg, ...と出力されていきます。
(左:0000.jpg と、右 0010.jpg)
手っ取り早く好きな画像で試したい場合は、sky1024px.jpg にリネームして同じ場所に置いておけばOKです。または dream.ipynb の画像名を指定している箇所を編集します。
さわやかな食事風景が、
こうなりました。
参考記事:

画風変換アルゴリズム chainer-gogh

mattya氏が2015年9月に公開した、Deep Neural Networkを使って画像を好きな画風に変換できるプログラム。
Chainerを利用。アルゴリズムの元論文は A Neural Algorithm of Artistic Stlye 。

環境構築の手順(所要時間:1分)

1. ソースを clone

$ git clone https://github.com/mattya/chainer-gogh.git

2. モデルをダウンロード

モデルを下記URLからダウンロードし、cloneしてきた chainer-gogh フォルダ配下に置きます。

実行する

お手軽にCPU実行してみます。コンテンツ画像(input.png)とスタイル画像(style.png)を用意して chainer-gogh フォルダ配下に置き、スクリプトを実行するだけ。
python chainer-gogh.py -m nin -i input.png -s style.png -o output_dir -g -1
(左:input.png、右:style.png)
(結果画像)

今後の展望

今回は環境構築と既に用意されているサンプルを実行してみただけなので、次のステップとしては、下記記事の例のように、OpenCVを活用して自前データセットつくって、Chainer なり TensorFlow なりで画像識別をやってみたいと思っています。
ただデータセット収集はそれなりに時間かかりそうなので、下記記事のように既存のデータセットを Chainer および TensorFlow に食わせるところから始めるのが現実的かも。
また、iOSエンジニアとしては、モバイルデバイスでの利用についても模索したいと思っています。
あらかじめ学習済みモデルを用意して識別専用として利用するだけなら可能なのか、学習機能自体をモバイル側でやってみたらどんだけ重いのか(そもそもできるのか)とか。TensorFlow は「モバイル端末にもデプロイ可能」と謳ってますし。
あと、画像以外にも、自然言語処理への利用等も試してみたいです。
おわり。

関連記事

  1. これをやらないと、実行時に "ImportError: No module named examples.tutorials.mnist" というエラーが出ます。 
  2. パスが間違ってても TensorBoard は起動するのですが、アクセスしてもグラフ等は表示されません。 
  3. /usr/include が最近のOSXでなくなってることに関しては、$ xcode-select --install をすればいいみたいなのですが、古いコマンドラインツールをダウンロードしないといけないっぽく、あまりXcodeまわりの環境をいじりたくないので直接pythonのincludeパスを指定するようにしました 
  4. なぜか ipython: command not found になったので こちら を参考にインストールしなおしました