Pay money To my Life

Spend time for myself, and you... "Knowledge was the only way to remember that your past is true"

TensorFlow Liteについて語る会に参加しました

はじめに

 TensorFlow Liteは、デバイス上での推論を可能にする、オープンソースディープラーニングフレームワークである。 思いっきり学習させると、モデルは当然大きくなる。そう言った学習させたモデルをエンドデバイススマホやIoTデバイス)に実装するとなると、そのままではきついことがあり、その問題を解決するためのフレームワーク

www.tensorflow.org

 そんなTFLiteについて、気楽に語り合おうという会が企画されたため、参加してみた。そんな備忘録。clusterを初めて使用したので、そこもまた新鮮でした。

tfug-kansai.connpass.com

TensorFlow Liteについて語る会・発表

発表者は2名。@cocodripsさんと、@natsutanさん。

twitter.com

twitter.com

スマホでDeepLearning実践入門(@cocodrips)

  • v1, v2で全く挙動が違うので注意(みんなどんどん使って情報をネット上に増やしたい)
  • Weightの量子化、WeightとActivationの量子化、の2種類の最適化オプションがある
  • 後者はデータセットを最適化する必要あり、今回は前者に関するお話
  • weightをint8に量子化すると、float32からは推論速度は2~3倍になる
  • 物体検出で63MB、画像のクラス分類モデルで20MB(90class)、5classで8.5MBになる
  • 類似画像検索では、特徴量抽出機をfloat32->float16にすると問題なく使えるけど、int8では全くだめだった
  • SavedModelからはconvertできない(稀、ネットで拾ってくるようなモデルは無理)、Lite用に加工してやる必要あり
  • TFLiteはサイズを可変にすることができない、、、
  • python APIはオプションが少ない(shapeの-1を自動で変換してくれない、固定になっていないと使えない)、v2はクソなのでv1を使った方便利
  • tflite_convertではSavedModelもKerasも変換可能、細かいことを設定できる
  • けど、チュートリアル以外のモデルはv2ではconvertできなかったため基本的にv1を使用している(体験談)
  • tocoはもうすでに公式では推奨されていないけれど、一番オプションも多く使いやすい(cocoさんもこれ推奨、使い方等は過去のブログ参照)
  • NETRON(ネットロン)がめっちゃ便利、グラフ構造やレイヤーが簡単に把握できる(TensorFlowBoardを使用する必要がない、ダブルクリックで詳細が確認可能)
  • これを入れるとTF使っているなら、幸せになれること間違いなし f:id:K_PTL:20200508192436p:plain
  • TF Liteが使えるモバイル用のフレームワークはいくつかある
  • MLKitが一番有名かな?(AndroidiOS両方に対応)
  • firebaseにモデルを上げておいて、後からDLするっていうスタンスも3行くらいで書けちゃう
  • Core ML (iOS)は、最初から入っているためframework分のアプリ容量膨張を防げる
  • Mediapipe(AndroidiOS両方に対応)、ストリーミングで推論可能、資料が少なく勉強するのが大変、、??
  • iOSはobject-cでframework対応していないため、独自にframework作成する必要あり、、今後に期待、、、
  • リアルタイムでエリアディテクションできちゃう f:id:K_PTL:20200508193352p:plain
  • v1, v2で全く挙動が違うので注意(みんなどんどん使って情報をネット上に増やしたい)

TFLiteのグラフ構造について(@natsutan)

  • NetronでTFLiteのグラフをみましょう。
  • TFLiteはChainerと同じ計算グラフ、、??
  • 基本的なNNでは計算の向きは変わらない(推論のForwarding、学習のBackprop.)
  • 分岐があるときに、BackProp.時にオペレータの前に変数を「勾配を足し合わせる」というノードとして機能させるため、動的にグラフを変化させたい時など非常に便利
  • tfliteは推論特化だけど、エッジ側で再学習するケースが最近で始めているのでBackProp.も使うことになるかもしれない

終わりに

 ちょうど今、機械学習を使用することになるかどうかはわからないが、エンドデバイスでセンサデータを取り扱う研究に取り組んでいるため、将来使うことになる(今の研究でなくても、いつかは必ず使うだろう)。趣味程度にでも、独学で進めていきたいなぁ。。まだコミュニティもTensorFlow本体に比べれば小さめなので気楽に楽しめそう。



昨夜、あいみょんのインスタライブがありましたね。ほんわかしました。
しかも昨日はまんげつだったんす。す。
ってことで、今回はこちらの曲を聞いてお別れです。

(せーのっ)

\\\ 満月の夜なら ///