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

2015年12月23日水曜日

Deep Learning用のモデルを簡単に作成できるLabellioを使ってみた

本記事は Deep Learning Advent Calendar 2015 22日目の記事です。
AlpacaがリリースしているDeep LeaningのWebサービスにLabellioというのがあります。これを使うと、画像データを与えるだけで、自動的にDeep Learningで学習を行いモデルを作成することができます。モデルはもちろんエクスポート可能であり、著名なDeep LearningフレームワークのひとつであるCaffeに対応した形式でエクスポートすることができます。

学習はすべてLabellioの用意するリソース上で行われるので、自前で用意するのは訓練用の画像データとそのラベルだけでよいという優れものです。
訓練データは自前で用意したものをUploadすることもできますし、とりあえず試したいのであればLabellioが提供するAPIを利用してFlickr/Bingから訓練データを自動的に取得させることもできます。

今回は、Flickrから取得したデータを使ってみました。例としてフルーツの画像分類器を作成してみます。

まずモデル名として"Fruits"と指定します。
そして訓練データをFlickr上から取得するように指定します。

SourceとしてFlickrを指定。
LabelにOrange, Apple, Bananaを入力する。



ラベルの入力が終わったらAddを押す。





ここでNextを押すと学習用の処理がLabellioにenqueueされる。



後はTrainingが終わるのを待つ。
今回の場合は150個程度の訓練データしか使ってないようなので、数分程度で学習が終了した。


学習が終わった後、適当にGoogleで見つけたバナナの画像をこの分類器に与えてみる。




結果が出るまで少し待つ




それ程時間がかからずに結果が出る。
バナナな確率0.6。思ってたより数値が良くないのは訓練データが少ないせいだろうか。
そういえば訓練結果のAccuracyも0.57だった。

もう少しいろいろデータを用意して試してみたいところだ。

使ってみた感触


もはや画像データを渡せばいいだけなので、Deep Learningが何なのかといった知識がまったく不要である。また学習のリソースごと提供してくれているのが非常にポイントが高い。フレームワークはオープンソースで無料なのがいくつも存在するが、学習用のリソースはそうはいかない。

営利目的でしっかりとしたものを作るのならともかく、単に学習を目的としていたり、趣味でちょこっと作りたいときなど、学習リソースの調達はネックになることが多いであろう。

そのなかで学習環境もセットで提供されているLabellioは非常に存在価値が高いといえる。


2015年10月9日金曜日

Define-by-RunとDefine-and-Run

Neural Networkの設計思想を表す用語のようだ。

The "Design-by-Run" scheme is also an important design decision to neuron that has both pros and cons. Most existing neural network library today follows "Design-and-Run" scheme or a declarative approach that first compile a pre-determined network structure and then train against a dataset. In such way, one can pre-allocate any necessary cache space to ensure that there are minimal memory reallocations in training, thus minimize the memory footprint whenever possible and have substantially optimized performance. Meanwhile, such a declarative approach also makes the underlying neural network static during the lifetime of training. The "Design-by-Run" scheme instead treats the neural networks morphologically, i.e. they are composed and (can) deform on-the-fly. At a cost, it will ask for onsite memory allocation whenever needed
簡単に日本語でまとめると

Neural Networkの設計にはDesign-and-RunとDesign-by-Runという二つの設計思想がある。


Design-and-run


  • 今日の一般的なスキーマで宣言的なアプローチに分類される
  • 宣言的なアプローチとは事前に決定されたネットワーク構造を利用し、トレーニングを行うもの。
  • キャッシュスペースが事前に割り当てられるので、メモリの使用を最小化し、性能を最適化することができる。しかしトレーニングの間にネットワーク構造を変更できないという欠点がある。


Design-by-run


  • ニューラルネットワークを形態学的に(morphologically)扱うことができる。
  • ネットワークの構造変更が容易にできるが、メモリの割り当てなどは最適化できない。




https://github.com/bobye/neuron/wiki/Basics#design-rationale