Suche senden
Hochladen
TensorFlow Liteを使った組み込みディープラーニング開発
•
7 gefällt mir
•
3,551 views
Makoto Koike
Folgen
PyCon mini Shizuoka2020
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 55
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Recomendados
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
cvpaper.challenge 研究効率化 Tips
cvpaper.challenge 研究効率化 Tips
cvpaper. challenge
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
Hirokatsu Kataoka
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
Yusuke Uchida
失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用
Hiroyuki Masuda
【DL輪読会】GET3D: A Generative Model of High Quality 3D Textured Shapes Learned f...
【DL輪読会】GET3D: A Generative Model of High Quality 3D Textured Shapes Learned f...
Deep Learning JP
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
Deep Learning JP
Más contenido relacionado
Was ist angesagt?
【DL輪読会】Segment Anything
【DL輪読会】Segment Anything
Deep Learning JP
「世界モデル」と関連研究について
「世界モデル」と関連研究について
Masahiro Suzuki
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
Toru Tamaki
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者
cvpaper. challenge
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
Fumihiko Takahashi
Ml system in_python
Ml system in_python
yusuke shibui
Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査
Kazuyuki Miyazawa
モデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留する
Takahiro Kubo
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
Yusuke Uchida
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection
Deep Learning JP
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
Yoichi Ochiai
機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明
Satoshi Hara
画像キャプションの自動生成
画像キャプションの自動生成
Yoshitaka Ushiku
敵対的生成ネットワーク(GAN)
敵対的生成ネットワーク(GAN)
cvpaper. challenge
モデル高速化百選
モデル高速化百選
Yusuke Uchida
[DL輪読会]NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
[DL輪読会]NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Deep Learning JP
Was ist angesagt?
(20)
【DL輪読会】Segment Anything
【DL輪読会】Segment Anything
「世界モデル」と関連研究について
「世界モデル」と関連研究について
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
ゼロから始める転移学習
ゼロから始める転移学習
【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
Ml system in_python
Ml system in_python
Teslaにおけるコンピュータビジョン技術の調査
Teslaにおけるコンピュータビジョン技術の調査
モデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留する
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明
画像キャプションの自動生成
画像キャプションの自動生成
敵対的生成ネットワーク(GAN)
敵対的生成ネットワーク(GAN)
モデル高速化百選
モデル高速化百選
[DL輪読会]NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
[DL輪読会]NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Ähnlich wie TensorFlow Liteを使った組み込みディープラーニング開発
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
Taira Hajime
TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)
Kiyoshi Ogawa
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
TFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_Mobile
yusuke shibui
Singularityで分散深層学習
Singularityで分散深層学習
Hitoshi Sato
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
Ryohei Kamiya
[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業
Makoto Koike
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
Toshiki Tsuboi
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Naoki Matsumoto
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
74th
Introduction Pycon2010
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
Slides AXIS WS2
Slides AXIS WS2
Shigeru Kobayashi
Runtime c++editing
Runtime c++editing
Seiya Ishibashi
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
Yutaka Kato
Security.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyo
Ren Sakamoto
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Takayuki Shimizukawa
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋
Yuto M
20110819 関西 kinect勉強会 初級編
20110819 関西 kinect勉強会 初級編
誠 山崎
hbstudy#6LTyuzorock
hbstudy#6LTyuzorock
yuzorock
Ähnlich wie TensorFlow Liteを使った組み込みディープラーニング開発
(20)
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
TFLite_and_PyTorch_Mobile
TFLite_and_PyTorch_Mobile
Singularityで分散深層学習
Singularityで分散深層学習
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Introduction Pycon2010
Introduction Pycon2010
Slides AXIS WS2
Slides AXIS WS2
Runtime c++editing
Runtime c++editing
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
Security.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyo
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋
20110819 関西 kinect勉強会 初級編
20110819 関西 kinect勉強会 初級編
hbstudy#6LTyuzorock
hbstudy#6LTyuzorock
TensorFlow Liteを使った組み込みディープラーニング開発
1.
TensorFlow Lite #2020/02/29 Pycon
mini Shizuoka 「あなたの知らないPython」
2.
● ● ○ ○ ● ○ 2
3.
● ○ ● ● 3
4.
● AIはいってる! AIはいってる! AIはいってる! AIはいってる! AIはいってる! AIはいってる! AIはいってる! AIはいってる! AIはいってる! AIはいってる! AIはいってる! AIはいってる! 脳はいってる! AIはいってる! AIはいってる! AIはいってる! 4
5.
● 5
6.
● 計算資源 ● ストレージ ●
サービス ● etc... ● 計算資源 ● ストレージ ● サービス ● etc... ネットワーク (インターネット) ネットワーク (インターネット) 端末 端末 6
7.
● ○ ○ ● ○ ○ ● ○ ○ 7
8.
● モデル出力 (特徴量) ● 端末さえあれば使える ● モデルの運用やアップデートが難しい ●
モデルが盗まれそう ● ネットワークがないと使えない ● モデルの運用やアップデートは可能 ● モデルも盗まれにくい? 8
9.
インストール方法: $ pip install
tensorflow 最新バージョンはv2.1.0. とりあえず直ぐに試してみたい人は,Google Colabをおス スメします! -> “Google Colab”で検索してGO! 9
10.
● ● ● 10
11.
● ● ● ● ● ● ● 11
12.
TFLite モデル変換以後は実行環境により異なる 12
13.
● ● ○ ○ ○ ○ 13
14.
● from tensorflow.lite import
TFLiteConverter #SavedModelからの変換 converter = TFLiteConverter.from_saved_model(model_dir) tflite_model = converter.convert() #KerasModelからの変換 converter = TFLiteConverter.from_keras_model(model) tflite_model = converter.convert() 14
15.
● ○ ○ ○ ○ ● ○ ○ ○ ○ ● ○ ○ 15
16.
詳しくは →https://www.tensorflow.org/lite/performance/post_training_quantization from tensorflow.lite import
TFLiteConverter, Optimize #KerasModelからの変換 + Weight Quantization converter = TFLiteConverter.from_keras_model(model) converter.optimizations = [Optimize.OPTIMIZE_FOR_SIZE] #これ tflite_model = converter.convert() 16
17.
量子化なし Weight Quantization Full Integer Quantization mobilenet
Size[MB] 17.0 4.1 4.5 Speed[ms] 285.7 555.5 263.2 mnist ※Dense2層 ※極小NN Size[MB] 0.4 0.1 0.1 Speed[ms] 0.83 0.12 0.14 モデル量子化によるモデルサイズと平均推論速度 17
18.
量子化なし Weight Quantization Full Integer Quantization mobilenet
Size[MB] 17.0 4.1 4.5 Speed[ms] 285.7 555.5 263.2 mnist Size[MB] 0.4 0.1 0.1 Speed[ms] 0.83 0.12 0.14 モデル量子化によるモデルサイズと平均推論速度 ● モデルサイズ縮小に効果大 ● 推論速度はよくわからない ○ 実行環境のRAM容量による? ○ モデルのアーキテクチャによる? ● 【補足】Accuracyの低下はほぼ無かった 18
19.
● TensorFlowには,枝切り用のパッケージがあり簡単に試すことが出来る. (Tensorflowとは別途インストールが必要 → https://www.tensorflow.org/model_optimization) 学習時に枝切り対象レイヤーとスケジュールを設定して行なう.学習済みモデル単体 での変換はできない. (現状は)重みを0に置き換えるだけなので,モデルサイズ&推論速度は変わらない. モデルを圧縮した時のサイズが小さく出来る. 19
20.
import tensorflow_model_optimization as
tfmot params = { ‘pruning_schedule’: #ここでpruning_scheduleを定義 ...(略) } model = Sequential([ #モデル定義 ...(略)]) model = tfmot.sparsity.keras.prune_low_magnitude(model, **param) model.compile(..略..) callbacks = [ #コールバックに下記を追加 tfmot.sparsity.keras.UpdatePruningStep() ] model.fit(...(略), callbacks=callbacks) 詳しくは→https://www.tensorflow.org/model_optimization 20
21.
枝切り なし 枝切り 50% 枝切り 80% キュウリ CNN File Size[MB] * (圧縮率) 0.84 (100%) 0.64 (76.2%) 0.35 (41.2%) Accuracy[%] 82.2
82.0 76.6 Speed[ms] 41.7 40.0 48.7 枝切りによる圧縮ファイルサイズ,正答率,平均推論速度 *: weight quantization + zip圧縮したサイズ 通常のtfliteファイルサ イズは4.8MB 21
22.
Device TFLite Runtime ● ● Mobilenet 学習済みモデル (Model Zoo) SSD-Mobilenet Posenet ︙ オリジナルモデル TFLiteConverter
model.tflite Quantization 枝切り 蒸留 モデル構造の最適化 22
23.
● ● ○ ● https://tinymlbook.com/ 23
24.
24
25.
SoC : STM32H743VI (CPU
ARM Cortex M7 32bit 480MHz) (RAM 1MB , FlashROM 2MB) カメラ:OV7725 (max 640x480) SDカード:μSDスロットあり30GBまで 消費電力:110mA〜170mA@3.3V 特徴: オープンソースのファームウェア上でMicroPythonが動 く.pythonヒープ領域が230KBぐらいしか使えない・・・ SoC : Kendryte K210 (CPU RISC-V 64bit 400-800MHz) (RAM 8MB, FlashROM 16MB) (KPU : CNNアクセラレータ) カメラ:OV2640/OV7740 SDカード:μSDスロットあり 消費電力:>600mA@5V? 特徴: コスパかなり良い.RISC-Vだからか? 畳み込みや活性化関数などのアルゴリズムがハード実装 されている.ただ,いろいろ制約あり. https://openmv.io/collections/cams/products/openmv- cam-h7 https://wiki.sipeed.com/en/maix/board/bit.html 25 一般的にカメラにはイメージセンサ制御のための マイコンが搭載されています. 今回は,そのマイコンの上でディープ・ラーニング の推論も動かしてしまおうという試みです.
26.
● ○ https://github.com/openmv/openmv/releases ● ○ https://openmv.io/pages/download USBでプログラム書き込み 26
27.
● ○ ○ 😨 ○ ○ ● ○ https://www.st.com/ja/embedded-software/x-cube-ai.html ○ ○ ○ 27
28.
● ○ https://github.com/workpil es/CUCUMBER-9 ● ● テストデータに対し て82.8%の正答率 28
29.
● ○ https://github.com/workpil es/CUCUMBER-9 ● ● テストデータに対し て82.8%の正答率 ● ● ● 29
30.
● 30
31.
● 31
32.
● ○ ■ src/stm32cubeai/nn_st.c ○ ■ src/omv/boards/OPENMV4/omv_boardconfig.h ■
237K -> 230K ○ ■ 静的ライブラリ「libtf_person_detect_model_data.a」の参照箇所を削る 32
33.
● ○ ■ src/stm32cubeai/nn_st.c ○ ■ src/omv/boards/OPENMV4/omv_boardconfig.h ■
237K -> 230K ○ ■ 静的ライブラリ「libtf_person_detect_model_data.a」の参照箇所を削る ○ ■ おそらくファームウェアで使ってる STマイコンのライブラリが古い? ■ じゃあ,Weight量子化を・・・なぜかツールで Float32へ戻される ■ じゃあ,Float16量子化を・・・なぜかツールで Float32へ戻される ■ 結局,量子化なしで<200KBのモデルを作る羽目に・・・ 33
34.
● テストデータに対し て72.5%の正答率 34
35.
35
36.
● import nn_st net =
nn_st.loadnnst(‘network’) out = net.predict(img) 36
37.
● ● 37
38.
● ○ ○ https://github.com/sipeed/MaixPy ○ https://maixpy.sipeed.com/en/ ● ○
http://dl.sipeed.com/MAIX/MaixPy/ide/v0.2.4 ○ 38
39.
FlashROMに書き込む場合 SDカードから読み込む場合 39
40.
● ○ https://github.com/sipeed/Maix_Toolbox ● ○ ○ https://github.com/kendryte/nncase 40
41.
● ○ ○ ● ○ ○ ■ https://github.com/kendryte/nncase/blob/master/docs/tflite_ops.md ■ (v0.1.0-rc5)https://github.com/kendryte/nncase/tree/v0.1.0-rc5 Maix_Toolbox(nncase
v0.1.0-rc5)の場合 [Maix Toolbox使用] nncase v0.1.0-rc5 nncase v0.2.0 Beta2 量子化なし 8bit量子化 量子化なし 8bit量子化 [TF2.1] TFLiteConverter 量子化なしモデル ○:推論実行可能 ✕: MaixPyファームウェアv0.5.0では実行できない 41
42.
Flattenの前後でdequantize,quantize が呼ばれている.無駄. DenseはPaddingとConv2dに置き換え られる.無駄. 42
43.
● ○ ● ○ これ 43
44.
● import KPU as
kpu task = kpu.load(0x200000) img = img.resize(INPUT_SIZE, INPUT_SIZE) img.pix_to_ai() fmap = kpu.forward(task, img) plist = fmap[:] pred = plist.index(max(plist)) 現時点でドキュメントには 載ってないがこれでリサ イズできる 現時点でドキュメントには 載ってないおまじない. (RBG565->RBG888に 変換してるぽい) 44
45.
● ● 45
46.
● ○ ○ ● ○ ● ○ ● ○ ○ 46
47.
47
48.
モデル出力 (特徴量) 48
49.
● 試作1号機(2016年2月) 試作2号機(2016年8月) 試作3号機(2017年8月) 49
50.
50
51.
51
52.
モデル Ver1.0 モデル Ver1.0 モデル Ver1.1 ネット環境がない場所で, モデルの管理が大変 モデル Ver1.0 LANなど JetsonNano TPU dev board 52
53.
● ○ ● ○ ● ○ 53
54.
● ● ○ ● 54
55.
55
Jetzt herunterladen