SlideShare a Scribd company logo
機械学習初学者が短期間で
TENSORFLOWで作ったMNISTモデル
をANDROIDアプリに組み込んだ話
2018/01/16
まえすとろ
WHO AM I?
• Name: まえすとろ
• Androidエンジニアとして働いています
• 過去にOR系の業務をしていましたが…
• 大学院では純粋数学で作用素環論という分野を専攻。
• Twitter: @maestro_L_jp
今回話す内容
• 手書き画像(0-9)から数字を
推測するロジック(いわゆる
MNISTのモデル)をAndroid
端末上で動かすアプリ作りま
した。
• 数日でこれ作りました。。。(苦労した…)
デモ
• 今回はこのアプリを作るのに使った技術について話します。
• KerasによるTensorFlowモデルの作成
• TensorFlowモデルをAndroid上で動かすための方法
KerasによるTensorFlowモデルの作成
Kerasとは?
• TensorFlow, Theanoなどをバックエンドにとした、ニュー
ラルネット用ラッパーライブラリ。
• https://keras.io/ja/
• TensorFlowのAPIをそのまま使うより簡単でかつ直感的に
書ける!
• 初学者にはもってこい。
• Qiitaの記事とかみるとKerasを使ってサンプルあげてたりす
るものが結構ある。
• ちょっと発展したことをやろうとした時に、実践的な記
事から学んでアウトプットにすぐに反映させやすい。
機械学習初学者が短期間でTensor flowで作ったmnistモデルをandroidアプリに組み込んだ話
「分類」を行う場合は、
ラベルは1次元から
「ラベルnに入る確信度」
を表す10次元のデータに変換。
機械学習初学者が短期間でTensor flowで作ったmnistモデルをandroidアプリに組み込んだ話
Model.fitで実際の学習処理
を行うが、その前にModel自
体を確定するために
Model.complieを実行する。
• 学習したmodelを保存するにはModel#saveでパスを指定して
保存できる。
• ファイル形式はHDF5。(拡張子は.h5)
• Keras本体とは別にh5pyをインストールしないといけない。
• しかし、HDF5形式のモデルはTensorFlowでは直接は扱えな
い!
HDF5形式の
モデル
export load
• HDF5をTensorFlowで読める形式(pbファイル)に変換する必要
あり。
• https://github.com/icchi-h/keras_to_tensorflow
HDF5形式の
モデル
export
load
pb形式の
モデル
「KerasToTensorFlow」という
ライブラリで変換。
TensorFlowモデルをAndroid上で動かすための方法
tensorflow-androidを使う
• NDKのセットアップなしでTensorFlowモデルを
Android上で使えるようにするためのライブラリ。
• 2017年5月のGoogle I/O 2017で発表された。
tensorflow-androidの導入
• 1. build.gradleの設定する
この1行を追記
• 2. TensorFlowInferenceInterfaceオブジェクトを使ったクラス作成。
Feedに入力するべき値や、fetchに入力す
るべき値はh5のモデル変換時に出てきた
pb.asciiファイルに記載されているのでそ
こを参照にしていすること。
まとめ
• Kerasを使えば機械学習のコーディングとか慣れていなくても手っ取り
早く実装+検証ができる!
• tensorflow形式であればモデルのAndroidへの組み込みは容易になった。
• 今後、Keras+tensorflow-androidを使ってどんどん
機械学習を使ったアプリとか作っていきたい!
今回作ったアプリとスクリプトのURL
• MnistAndroid
• https://github.com/LyricalMaestro/MnistAndroid
• モデル生成スクリプト
• https://github.com/LyricalMaestro/tensor-flow-mnist-model-
for-android-maker
参考文献
• https://qiita.com/icchi_h/items/c37b52a3eb926d63f917
• https://qiita.com/yampy/items/706d44417c433e68db0d
• https://qiita.com/uramonk/items/c207c948ccb6cd0a1346

More Related Content

PDF
Mix leaplt#12登壇資料
PPTX
Androidで動かすはじめてのDeepLearning
PDF
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
PPTX
いきなりAi tensor flow gpuによる画像分類と生成
PDF
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
PDF
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
PDF
TensorFlowを使ってテキストをクラス分類してみたら精度96.8%の分類器を簡単に得ることができた話
PDF
Enjoy handwritten digits recognition AI !!
Mix leaplt#12登壇資料
Androidで動かすはじめてのDeepLearning
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
いきなりAi tensor flow gpuによる画像分類と生成
2018年01月27日 Keras/TesorFlowによるディープラーニング事始め
「TensorFlow Tutorialの数学的背景」 クイックツアー(パート1)
TensorFlowを使ってテキストをクラス分類してみたら精度96.8%の分類器を簡単に得ることができた話
Enjoy handwritten digits recognition AI !!

Similar to 機械学習初学者が短期間でTensor flowで作ったmnistモデルをandroidアプリに組み込んだ話 (20)

PPTX
もう学習は機械に任せたい2 -ディープラーニングの逆襲-
PDF
20170624 発表資料-ml
PPTX
tfug-kagoshima
PDF
自習形式で学ぶ「DIGITS による画像分類入門」
PPTX
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
PPTX
Webエンジニアが初めて機械学習に触れてみた話
PPTX
MNISTデータセットの画像分類器の実装
PPTX
Human Brain to Tensorflow in 5 Minutes
PPTX
Google TensorFlowで遊んでみた①
PDF
ハンズオン セッション 1: DIGITS によるディープラーニング入門
PDF
Python初心者がKerasで画像判別をやってみた
PDF
研究を加速するChainerファミリー
PPTX
葉物野菜を見極めたい!by Keras
PDF
2019/5/24 Chainer familyで始める深層学習 ハンズオンの部
PDF
TensorFlow 入門
PPTX
「機械学習とは?」から始める Deep learning実践入門
PDF
TensorFlowの使い方(in Japanese)
PPTX
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
PDF
LIFULL HOME'S「かざして検索」リリースの裏側
PPTX
Tensorflowのチュートリアルで理解するdeep learningはじめてハンズオン
もう学習は機械に任せたい2 -ディープラーニングの逆襲-
20170624 発表資料-ml
tfug-kagoshima
自習形式で学ぶ「DIGITS による画像分類入門」
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
Webエンジニアが初めて機械学習に触れてみた話
MNISTデータセットの画像分類器の実装
Human Brain to Tensorflow in 5 Minutes
Google TensorFlowで遊んでみた①
ハンズオン セッション 1: DIGITS によるディープラーニング入門
Python初心者がKerasで画像判別をやってみた
研究を加速するChainerファミリー
葉物野菜を見極めたい!by Keras
2019/5/24 Chainer familyで始める深層学習 ハンズオンの部
TensorFlow 入門
「機械学習とは?」から始める Deep learning実践入門
TensorFlowの使い方(in Japanese)
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
LIFULL HOME'S「かざして検索」リリースの裏側
Tensorflowのチュートリアルで理解するdeep learningはじめてハンズオン
Ad

More from まえすとろ (8)

PPTX
ベイズ統計セミナーVol4
PPTX
ベイズ統計セミナーVol2
PPTX
Lights outを線形代数で解く
PPTX
DeviceOwnerのお話
PPTX
LightsOutSolver
PPTX
Githubでアカウントを晒した事故に対する対処
PPTX
Android6.0で変わったアプリのアクセス権について
PPTX
Ok httpの紹介
ベイズ統計セミナーVol4
ベイズ統計セミナーVol2
Lights outを線形代数で解く
DeviceOwnerのお話
LightsOutSolver
Githubでアカウントを晒した事故に対する対処
Android6.0で変わったアプリのアクセス権について
Ok httpの紹介
Ad

機械学習初学者が短期間でTensor flowで作ったmnistモデルをandroidアプリに組み込んだ話

Editor's Notes

  • #4: 作った背景は、単純に興味本位です。
  • #11: 仮に畳み込みレイヤーとか追加したいときはmodel.add(Convolution2D)
  • #20: 作った背景は、単純に興味本位です。
  • #21: 作った背景は、単純に興味本位です。
  • #22: 作った背景は、単純に興味本位です。