tensorflowによるcnnアーキテクチャ構築

25
TensorFlow 概要からCNNアーキテクチャ構築まで 片岡 裕雄 http://www.hirokatsukataoka.net/

Upload: hirokatsu-kataoka

Post on 24-Jan-2018

13.540 views

Category:

Science


0 download

TRANSCRIPT

Page 1: TensorFlowによるCNNアーキテクチャ構築

TensorFlow – 概要からCNNアーキテクチャ構築まで –

片岡 裕雄 http://www.hirokatsukataoka.net/

Page 2: TensorFlowによるCNNアーキテクチャ構築

概要 •  TensorFlowについて –  フレームワーク –  ドキュメント

• インストール~サンプル動作 –  Mac/Ubuntu –  サンプルコード

•  CNNアーキテクチャ構築 –  自らのデータでCNNアーキテクチャを構築

Page 3: TensorFlowによるCNNアーキテクチャ構築

TensorFlowについて

Page 4: TensorFlowによるCNNアーキテクチャ構築

TensorFlowとは? •  Googleが2015/11に発表した機械学習フレームワーク –  ディープラーニングを含む機械学習をカバー –  画像のみならず,音声や言語処理など –  Convolutional Neural Networks (CNN), Recurrent Neural Networks (RNN)等

h"ps://www.tensorflow.org/

Page 5: TensorFlowによるCNNアーキテクチャ構築

どんな人が作っているの? •  Corresponding Authors: Jeffrey Dean & Rajat Monga

•  Jeffrey Dean (Google Senior Fellow) –  伝説のプログラマ –  Google翻訳,BigTable,MapReduce,

GoogleBrain,LevelDB,TensorFlowなど –  ACM Fellow,National Academy of Engineering

h"p://research.google.com/people/jeff/

h"ps://www.linkedin.com/in/rajatmonga

•  Rajat Monga (Google Research) –  Googleの研究員,機械学習分野 –  論文:NIPS, ICML, CVPR等 –  TensorFlow

h"p://download.tensorflow.org/paper/whitepaper2015.pdfWhitePaperには総勢40名!

Page 6: TensorFlowによるCNNアーキテクチャ構築

特徴 (1) • 動作環境 –  Apache 2.0 License –  Mac / Ubuntuをサポート •  Windowsは環境設定中?

–  Mac:CPU –  Linux:GPU/CPU (GPUはLinuxのみ対応) –  GPUサポート:Cuda 7.0, CuDNN 6.5 v2

Page 7: TensorFlowによるCNNアーキテクチャ構築

特徴 (2) • カバーする言語,リファレンスの充実 –  C++,Python –  公式ページ https://www.tensorflow.org/versions/master/api_docs/index.html にリファレンス有

Page 8: TensorFlowによるCNNアーキテクチャ構築

特徴 (3) •  Deep Flexibility –  データフローグラフの配布 –  簡易的な記述性 –  Python/C++にもカバー

•  True Portability –  CPU / GPUに対応,スケールアップが簡便 –  CPUでスモールデータ試行,GPUでビッグデータ!等 –  モバイル環境にも対応

•  Connect Research and Production –  研究から商品化の際に大幅に書き直すのは終わったらしい –  Googleでは研究者・エンジニアともにTensorFlowを使用 –  商品化への移行をスムーズに

Page 9: TensorFlowによるCNNアーキテクチャ構築

特徴 (4) •  Auto-Differentiation –  深層学習を始めGradientベースの学習 –  モデル構築が簡易的にできるように!

•  Language Options –  主にPythonやC++を配布 –  SWIGインタフェイスによりGo, Java, Lua, JavaScript, Rなど

•  Maximize Performance –  32コアCPUや4つのGPUカード –  最上級のスレッド,キュー,非同期計算

Page 10: TensorFlowによるCNNアーキテクチャ構築

特徴 (5) • チュートリアル –  MNIST (文字認識のデータセット) •  For ML Beginners •  For Experts

–  TensorFlow Mechanics 101 (コードの配布,MNISTの詳細) –  Convolutional Neural Networks (CNN) –  Vector Representations of Words –  Recurrent Neural Networks (RNN) –  など

Page 11: TensorFlowによるCNNアーキテクチャ構築

その他,詳細はTensorFlowページへ •  TensorFlow •  WhitePaper

h"ps://www.tensorflow.org/

h"p://download.tensorflow.org/paper/whitepaper2015.pdf

Page 12: TensorFlowによるCNNアーキテクチャ構築

インストール~サンプル動作

Page 13: TensorFlowによるCNNアーキテクチャ構築

インストール • インストールは(ハマらなければ)簡単! •  Mac

•  Ubuntu #Ubuntu/Linux64-bit,CPUonly:$sudopipinstall--upgradeh"ps://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl

h"ps://www.tensorflow.org/versions/master/get_started/os_setup.html

#Ubuntu/Linux64-bit,GPUenabled:$sudopipinstall--upgradeh"ps://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl

#MacOSX,CPUonly:$sudoeasy_install--upgradesix$sudopipinstall--upgradeh"ps://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

Page 14: TensorFlowによるCNNアーキテクチャ構築

MNIST datasetでの学習 • 機械学習における初歩的な問題? –  文字認識: 文字と言っても0-9までの数字10クラス –  CNNのYan LeCun氏が配布 –  データや最高精度の推移も下記リンクに記載

h"p://yann.lecun.com/exdb/mnist/

文字認識のサンプル

Y. LeCun+, Gradient-Based Learning Applied to Document Recognition, Proceedings of the IEEE, 86 (11): pp. 2278-2324, 1998.

Page 15: TensorFlowによるCNNアーキテクチャ構築

(MNISTに限らず)ソースコード取得 •  GitHubにアクセス~全結合ネットワークの実行

$gitcloneh"ps://github.com/tensorflow/tensorflow

$cd./tensorflow/tensorflow/g3doc/tutorials/mnist

$pythonfully_connected_feed.py

実行例

Page 16: TensorFlowによるCNNアーキテクチャ構築

Convolutional Neural Networks (CNN) •  Deep MNIST for Expertsを参考にCNNを実装 –  cnn.pyとして保存 –  約99.2%の精度を実現

h"ps://www.tensorflow.org/versions/master/tutorials/mnist/pros/index.html

$pythoncnn.py

次以降のページで少し関数の説明&改造

Page 17: TensorFlowによるCNNアーキテクチャ構築

基本関数について

重みW バイアスb

ReLU関数 + 畳み込み

Max-pooling

入力&出力層の設定

データ読み込み

第 一 層

第 二層

画像変換

全結合層への連結

Softmax層

Dropout

全結合層

Page 18: TensorFlowによるCNNアーキテクチャ構築

アーキテクチャを改造! • 畳み込み層の構造をよりDeepに

Page 19: TensorFlowによるCNNアーキテクチャ構築

アーキテクチャを改造! • 畳み込み層の構造をよりDeepに

この部分を変更 CPCPFF※ => CCPCCPFF※ ※ C:畳み込み層   P:プーリング層   F:全結合層

無理に変更したのでチャネルが 32=>32(1層),64=>64(2層)です...

Page 20: TensorFlowによるCNNアーキテクチャ構築

CNNアーキテクチャ構築

Page 21: TensorFlowによるCNNアーキテクチャ構築

コードをアップロードしました!※

•  my_cnn.tar.gz my_cnn.zip

h"p://www.hirokatsukataoka.net/temp/TensorFlow/my_cnn.tar.gz

h"p://www.hirokatsukataoka.net/temp/TensorFlow/my_cnn.zip

※ しばらくの間置いておきます.

Page 22: TensorFlowによるCNNアーキテクチャ構築

ネットワークアーキテクチャ •  5層アーキテクチャ –  CPCPCPFF –  畳み込み+プーリング3層 –  全結合層2層

55

33 3

3

32

3216

168

8

44

500

2

3248 64

Page 23: TensorFlowによるCNNアーキテクチャ構築

パラメータと学習 • パラメータ –  ミニバッチ: 50 –  繰り返し:500

• 学習 –  歩行者検出:Daimler dataset (Positive: 1,000 Negative: 1,000)※

–  学習:1,500サンプル –  テスト:500サンプル

h"p://www.gavrila.net/Datasets/Daimler_Pedestrian_Benchmark_D/Daimler_Mono_Ped__Detec\on_Be/daimler_mono_ped__detec\on_be.html

※ アップロードのために最小構成にしました ※ 実際に使用する際には学習サンプル数を増やしてください

Page 24: TensorFlowによるCNNアーキテクチャ構築

結果 • 最小構成でも90%の識別率 –  歩行者/背景の2値識別なので特に高いわけでもない (ランダム50%) –  サンプルを増やして実験した結果,99.87%の精度 •  Positive:15,660サンプル •  Negative:25,000サンプル •  繰り返し:30,000回

Page 25: TensorFlowによるCNNアーキテクチャ構築

まとめ

•  TensorFlowの概要と,CNNアーキテクチャ構築 –  TensorFlowとは?

–  ニューラルネットのサンプルを動かす

–  自分でアーキテクチャ構築

• データやアーキテクチャ構築など, • 自分の問題で試してみよう!