Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Deep Learningライブラリ
色々つかってみた感想まとめ
@conta_
Self Introduction
緒方 貴紀 (twitter: @conta_)
CTO@ABEJA, Inc.
Computer Visionとか、Machine Learningを使った
プロダクト開発をやっています。
Deep Learning Library?
_人人人人人人人人人_
> 多すぎてつらい <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
Dive into Deep Learning
*感じ方には個人差があります
今回紹介するライブラリ
Caffe
Caffe:
UC Berkleyの人が作ってる。DeepLearning界隈ではかなり老舗なライブラリで、
功績は大きい
言語:
・CoreはC++。Python, MatlabのWrapperがある
特徴:
・基本的にProto...
■いいところ(個人的感想)
・Model Zooに学習済みモデルがたくさん公開されてる
(既にCVPR2016の論文のモデルも公開されてる)
・研究者が割と使ってるので最新の研究成果がCaffeで実装されてたりする
・Multi-GPUに対応し...
■つらいところ(個人的感想)
・カスタマイズがc++とProtocol Buffer。。。マヂつらぃゎ。。。(*1)
=>人がカスタマイズしたものは、もはやわからん。
・ネットワークをProtocol Bufferで書くのがつらい(*2)
=>...
■余談(*1)
・最近はPython Layerが追加されてPythonだけでもカスタマイズ
できるように魔改造工夫している(No Documentation)
■余談(*2)
・PythonでProtocol Bufferを生成
できるようになったため、
ループした記述が割と簡単になった
(No Documentation)
■こんなひとにおすすめ
・まず何か動かしたい人
・とりあえず研究成果を試したい人
・速度が必要な人
・C++とProtocol Bufferを勉強したい人
・根気強く何かと戦いたい人
Tensorflow:
G⃝⃝gle製の分散行列計算ライブラリ。
別にDeepだけじゃないんだからね!
言語:
・CoreはC++。PythonとC++どちらでも動く。
特徴:
・分散処理が簡単にできる
・Googleのプロダクトで何年も利用され...
■いいところ(個人的感想)
・分散処理がめっちゃ簡単にできる(Distributed Tensorflow)
・GoogleがMLプラットフォームを提供開始
・最近、Tensorflow使いました論文がよくでてきている
・コアがC++なのでAndr...
■つらいところ(個人的感想)
・玄人向けライブラリ
=>仕組みがちょっと複雑なので理解しないと使いこなせない
=>ネットワークを書くのに一から記述する必要がある、Theano的な立ち位置
・ソースコードが大規模なため改造が大変そう
(一応ドキュ...
■こんなひとにおすすめ
・仕組みの部分からDeep Learningを勉強したい人
・Deep Learning 中∼上級者向けの人
・大規模機械学習をやってみたい人
・大規模機械学習基盤を作りたい人
・Mobileに組み込みたい人
Chainer:
PFN製のDeep Learningライブラリ。
言語:
・Python(+Cuda)
特徴:
・Define-by-Runという手法をとっていて、ネットワークを後から解
釈
・すばらしい
■いいところ(個人的感想)
・ネットワークの記述の柔軟性が高い
(特にRNN系非常に書きやすい)
・内部の動作がどうなってるか非常にわかりやすい
・デバックしやすい
・ナウいアルゴリズムがいち早く実装されてる
・CupyというCudaが簡単に使...
■つらいところ(個人的感想)
・ネットワーク以外の記述量が多くなってしまう(学習のコードとか)
・実行速度(最近はそこそこ早いっぽい)
・Deep Learning分かってないと多分使いこなせない
■こんなひとにおすすめ
・Deep Learingを一からガッツリ勉強したい人
・Deep Learning 中∼上級者の人
・研究でTry and Errorを繰り返しながらアルゴリズムを開発したい人
・複雑なネットワークを記述したい人
(ネ...
■MXNet:
DMLC(Distributed (Deep) Machine Learning Community)が作って
る。XGBoostの作成元としても有名。
■言語:
・CoreはC++。Wrapperがたくさんあり、Python、...
■いいところ(個人的感想)
・分散処理(1Node, Multi-GPU、Multi-Node、Multi-GPUどちら
も)がめっちゃ簡単にできる(Exampleあり)
・S3へモデルデータを保存する機能がある
・早い(ImageNet fu...
■つらいところ(個人的感想)
・エラーがわかりにくい、本当にわかりにくい
・ドキュメントが少ない
=>特殊な学習データを作ったりするのは大変
=>難しいことをしようとするとソースを読まなければならない
■こんなひとにおすすめ
・Deep Learning 中∼上級者向けの人
・速度を求めている人
・Python、C++以外でも利用したい人
■Keras:
PythonのDeep Learningライブラリ。
最近v1.0がリリースされた。
■言語:
・Python
■特徴:
・Torchに似た記述方法。
・行列演算のバックエンドはTheanoとTensorFlowを利用していて、...
■いいところ(個人的感想)
・ネットワーク記述が簡単、柔軟
ベースのAPIがたくさん準備されているため、記述量も少なく済
む。簡単なネットワークであればAPI組み合わせでなんとかなる。
v1.0.0から functional APIなるものが出...
■つらいところ(個人的感想)
・Multi-GPU非対応
TheanoをBackendとして使ってるとMulti-GPUつらい。
TensorflowのおかげでMulti-GPUが簡単にできるようになった?
・Pythonしか対応していない
■こんなひとにおすすめ
・Deep Learningをやりたい人全般
・あまり細かいことは気にせずにサクッとネットワークを作
りたい人
*個人的には一番おすすめ
まとめ
■Caffe
・とりあえずDeep Learing(CNN)やりたい人
・研究成果を試したい人
■Tensorflow
・分散コンピューティングやりたい人
■Chainer
・アルゴリズム開発したい人
・本気でDeep Learningを...
We are hiring!

→ https://www.wantedly.com/companies/abeja
Deep Learningライブラリ 色々つかってみた感想まとめ
Upcoming SlideShare
Loading in …5
×

Deep Learningライブラリ 色々つかってみた感想まとめ

2,815 views

Published on

160417 関東CV発表資料

Published in: Engineering
  • Be the first to comment

Deep Learningライブラリ 色々つかってみた感想まとめ

  1. 1. Deep Learningライブラリ 色々つかってみた感想まとめ @conta_
  2. 2. Self Introduction 緒方 貴紀 (twitter: @conta_) CTO@ABEJA, Inc. Computer Visionとか、Machine Learningを使った プロダクト開発をやっています。
  3. 3. Deep Learning Library?
  4. 4. _人人人人人人人人人_ > 多すぎてつらい <  ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
  5. 5. Dive into Deep Learning
  6. 6. *感じ方には個人差があります
  7. 7. 今回紹介するライブラリ
  8. 8. Caffe Caffe: UC Berkleyの人が作ってる。DeepLearning界隈ではかなり老舗なライブラリで、 功績は大きい 言語: ・CoreはC++。Python, MatlabのWrapperがある 特徴: ・基本的にProtocol Bufferでネットワークを記述
  9. 9. ■いいところ(個人的感想) ・Model Zooに学習済みモデルがたくさん公開されてる (既にCVPR2016の論文のモデルも公開されてる) ・研究者が割と使ってるので最新の研究成果がCaffeで実装されてたりする ・Multi-GPUに対応したので、設定1つで複数のGPUを利用可能 ・実行速度が割りと早い ・ネットワークのパフォーマンステストができる(caffe testコマンド)
  10. 10. ■つらいところ(個人的感想) ・カスタマイズがc++とProtocol Buffer。。。マヂつらぃゎ。。。(*1) =>人がカスタマイズしたものは、もはやわからん。 ・ネットワークをProtocol Bufferで書くのがつらい(*2) =>GoogLeNetは約2000行、ResNetは約7000行。。。 (Protocol Buffer職人芸) ・データセットを作成するのが大変 ・エラーがわかりにくい ・ソースコードを読めないと全機能は使えない、動きがわからない (ドキュメント更新しろ!) ・インストールがつらい (昔に比べると依存関係のOnOffのオプションが付いたため、 だいぶマシ) ・RNNを扱うことはできない(魔改造されたCaffeベースのものはあるけど。。。)
  11. 11. ■余談(*1) ・最近はPython Layerが追加されてPythonだけでもカスタマイズ できるように魔改造工夫している(No Documentation)
  12. 12. ■余談(*2) ・PythonでProtocol Bufferを生成 できるようになったため、 ループした記述が割と簡単になった (No Documentation)
  13. 13. ■こんなひとにおすすめ ・まず何か動かしたい人 ・とりあえず研究成果を試したい人 ・速度が必要な人 ・C++とProtocol Bufferを勉強したい人 ・根気強く何かと戦いたい人
  14. 14. Tensorflow: G⃝⃝gle製の分散行列計算ライブラリ。 別にDeepだけじゃないんだからね! 言語: ・CoreはC++。PythonとC++どちらでも動く。 特徴: ・分散処理が簡単にできる ・Googleのプロダクトで何年も利用されていて、安定感がある
  15. 15. ■いいところ(個人的感想) ・分散処理がめっちゃ簡単にできる(Distributed Tensorflow) ・GoogleがMLプラットフォームを提供開始 ・最近、Tensorflow使いました論文がよくでてきている ・コアがC++なのでAndroidでも動作する ・Docker Containerが落ちてるので、Docker使えるなら インストールに困らない ・Tensorboardがオシャレ
  16. 16. ■つらいところ(個人的感想) ・玄人向けライブラリ =>仕組みがちょっと複雑なので理解しないと使いこなせない =>ネットワークを書くのに一から記述する必要がある、Theano的な立ち位置 ・ソースコードが大規模なため改造が大変そう (一応ドキュメントはあるけど) ・Distributed Tensorflowを個人の資源で活用するのは困難なので、Googleのプラット フォームを使わないと恩恵を受けにくい =>分散コンピューティングのIOボトルネック、InfiniBandをいっぱい買えるお金持ち なら恩恵を受けられるかも
  17. 17. ■こんなひとにおすすめ ・仕組みの部分からDeep Learningを勉強したい人 ・Deep Learning 中∼上級者向けの人 ・大規模機械学習をやってみたい人 ・大規模機械学習基盤を作りたい人 ・Mobileに組み込みたい人
  18. 18. Chainer: PFN製のDeep Learningライブラリ。 言語: ・Python(+Cuda) 特徴: ・Define-by-Runという手法をとっていて、ネットワークを後から解 釈 ・すばらしい
  19. 19. ■いいところ(個人的感想) ・ネットワークの記述の柔軟性が高い (特にRNN系非常に書きやすい) ・内部の動作がどうなってるか非常にわかりやすい ・デバックしやすい ・ナウいアルゴリズムがいち早く実装されてる ・CupyというCudaが簡単に使える行列演算ライブラリが含まれてい て、自前のアルゴリズムを比較的簡単に高速化できる (C++で書いてラッパーとかつくらなくていい) ・中の人がすごい
  20. 20. ■つらいところ(個人的感想) ・ネットワーク以外の記述量が多くなってしまう(学習のコードとか) ・実行速度(最近はそこそこ早いっぽい) ・Deep Learning分かってないと多分使いこなせない
  21. 21. ■こんなひとにおすすめ ・Deep Learingを一からガッツリ勉強したい人 ・Deep Learning 中∼上級者の人 ・研究でTry and Errorを繰り返しながらアルゴリズムを開発したい人 ・複雑なネットワークを記述したい人 (ネットワーク内で条件文書きたい、データによって処理を分けたい等) ・RNNとかNLPとかを書きたい
  22. 22. ■MXNet: DMLC(Distributed (Deep) Machine Learning Community)が作って る。XGBoostの作成元としても有名。 ■言語: ・CoreはC++。Wrapperがたくさんあり、Python、C++、Scala、 R、Matlab、Juliaと多言語対応。 ■特徴: ・多言語! ・速度がかなり早い(所感) ・mshadow(行列演算)、ps-lite(分散処理)等のライブラリがベース
  23. 23. ■いいところ(個人的感想) ・分散処理(1Node, Multi-GPU、Multi-Node、Multi-GPUどちら も)がめっちゃ簡単にできる(Exampleあり) ・S3へモデルデータを保存する機能がある ・早い(ImageNet full datasetをGeForce GTX 980*4で8.5日) ・なぜ早いかがドキュメントで力説されている ・多分最も多言語が進んでいる ・C++で書かれてるので Mobile(iOS, Android)でも動く
  24. 24. ■つらいところ(個人的感想) ・エラーがわかりにくい、本当にわかりにくい ・ドキュメントが少ない =>特殊な学習データを作ったりするのは大変 =>難しいことをしようとするとソースを読まなければならない
  25. 25. ■こんなひとにおすすめ ・Deep Learning 中∼上級者向けの人 ・速度を求めている人 ・Python、C++以外でも利用したい人
  26. 26. ■Keras: PythonのDeep Learningライブラリ。 最近v1.0がリリースされた。 ■言語: ・Python ■特徴: ・Torchに似た記述方法。 ・行列演算のバックエンドはTheanoとTensorFlowを利用していて、 切り替えることができる
  27. 27. ■いいところ(個人的感想) ・ネットワーク記述が簡単、柔軟 ベースのAPIがたくさん準備されているため、記述量も少なく済 む。簡単なネットワークであればAPI組み合わせでなんとかなる。 v1.0.0から functional APIなるものが出来て、 非常に直感的にネットワークを記述できるようになった ・学習が簡単 Scikitのようにfit()関数呼び出せばよろしくやってくれる ・ソースが読みやすい
  28. 28. ■つらいところ(個人的感想) ・Multi-GPU非対応 TheanoをBackendとして使ってるとMulti-GPUつらい。 TensorflowのおかげでMulti-GPUが簡単にできるようになった? ・Pythonしか対応していない
  29. 29. ■こんなひとにおすすめ ・Deep Learningをやりたい人全般 ・あまり細かいことは気にせずにサクッとネットワークを作 りたい人 *個人的には一番おすすめ
  30. 30. まとめ ■Caffe ・とりあえずDeep Learing(CNN)やりたい人 ・研究成果を試したい人 ■Tensorflow ・分散コンピューティングやりたい人 ■Chainer ・アルゴリズム開発したい人 ・本気でDeep Learningを勉強したい人 ■MXNet ・速度が必要な人 ・Mobileで動かしたい人 ■Keras ・とりあえずDeep Learing勉強したい人 ・めんどくさいのである程度環境が準備されていて欲しいと思う人
  31. 31. We are hiring! → https://www.wantedly.com/companies/abeja

×