SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
3000円のエッジデバイス内で
画像の学習と推論を行う
Brownie(ぶらうにー)の話
ミクミンP
@ksasao
第56回 コンピュータビジョン勉強会@関東
2020/1/20
【宣伝】ごちうサーチが最新作に対応しました
(2020/1/7更新)
「ごちうサーチ」で検索
• 2019年1月施行の改正著作権法で明確に合法
になりました
• Microsoft Store でも配信を開始しました
• Amazon prime / dアニメストアに対応しました
• Dear My Sister / Sing For You も検索できます
• もちろん無料です
• 広告もありません
アプリのほか、アルゴリズム詳細、ソースコード(GitHub)なども
公開しています
Brownie はこんなことができます
じゃんけんをちょっとずつデバイス内で学習
していく様子
https://twitter.com/ksasao/status/1161978500091301893
1枚の学習画像だけでもそれなりに動作
2種類の画像の中間値もわかります
https://twitter.com/ksasao/status/1185909464471232512?s=20
デバイス単独で動きます
(6700mAhのモバイルバッテリーで22時間)
https://twitter.com/ksasao/status/1160532010856665089?s=20
画像認識した結果を様々なデバイスで使えます
(Windows/Mac/Linux/RaspberryPi/Arduinoに対応)
• Windows バイナリ版
• Node.js 版
があります。
https://github.com/ksasao/brownie
この水色のデバイスは何?
M5StickV って何?
https://twitter.com/ksasao/status/1151984910703288321
M5Stack 社製の AIカメラ
M5StickV
• Kendryte K210
• RISC-V プロセッサ (64bit x 2)
• KPU (0.8TOPS)
• 液晶モニタ (240x135px)
• LED(RGBW)
• スピーカー
• ジャイロ・加速度センサ
• TFカードスロット (microSD)
•3000円
Canaan Creative社 Kendryte K210
https://kendryte.com/
開発
• MaixPy (micropython ベース, NumPyなどは使えない)
• カメラなどが簡単に使える。Tiny YOLO 向けの API あり
• 統合開発環境 MaixPy IDE (Sipeed社製)
推論の実行
https://bbs.sipeed.com/t/topic/682
カメラから画像取得
モデル読み込み
推論
Tiny YOLO で物体検出するコード
https://bbs.sipeed.com/t/topic/683
YOLO用の初期化
推論
推論は簡単っぽい
学習は?
どうやって学習するか
• MaixPy では重みの更新はできない
• NumPy, SciPy が使えない
• アルゴリズムを手書きすると実行速度が遅い
• ネイティブコードのモジュールを読み込む機能は(現在は)ない
 MobileNet を特徴抽出器として利用して k-NN (k近傍法) で推論
https://sites.google.com/view/learning-with-limited-data
https://drive.google.com/file/d/1O3CxWtaytBfwjj50WprXXWwqMiZy-Kyq/view
k-NNを利用した推論のイメージ
境界を実験的に決定は
通常の機械学習 今回の実装
k-NN (k-Nearest Neighbor) を利用した
オフライン転移学習
https://twitter.com/ksasao/status/1161978500091301893
入力
画像
特徴
抽出層
全結合
層
MobileNet v1
SoftMax
認識結果
1000クラス
k-NN (k-Nearest Neighbor) を利用した
オフライン転移学習
https://twitter.com/ksasao/status/1161978500091301893
入力
画像
特徴
抽出層
全結合
層
MobileNet v1
SoftMax
認識結果
1000クラス
kpu.set_layers(task,29)
29層目まで計算した結果を取り出す
k-NN (k-Nearest Neighbor) を利用した
オフライン転移学習
https://twitter.com/ksasao/status/1161978500091301893
入力
画像
特徴
抽出層
特徴抽出層の出力
(768次元ベクトル)
を保存
学習時
グー
チョキ
パー
768次元ベクトルを可視化
1x768
k-NN (k-Nearest Neighbor) を利用した
オフライン転移学習
https://twitter.com/ksasao/status/1161978500091301893
入力
画像
特徴
抽出層
学習した特徴ベクトル群と
入力画像の特徴ベクトルの
ユークリッド距離をもとめ
最も近いものを返す (k=1)
推論時
グー
チョキ
パー
768次元ベクトルを可視化
1x768
k-NN (k-Nearest Neighbor) を利用した
オフライン転移学習
https://twitter.com/ksasao/status/1161978500091301893
入力
画像
特徴
抽出層
全結合
層
MobileNet v1
SoftMax
k-NNの
距離に
応じて
結果を
選択
学習済みの結果との同時利用も可能
k-NN
2種類の画像の中間値の推定
https://qiita.com/ksasao/items/6d6bcac4c5e92fa692a2
境界
特徴量空間に
マッピング
特徴量空間に
マッピング
k-NN (k-Nearest Neighbor) を利用した
オフライン転移学習
https://twitter.com/ksasao/status/1161978500091301893
良い点
• 学習にかかる時間がほぼゼロ (特徴ベクトルを保存するだけ)
• 1枚学習するだけでも動く
• 学習・推論が素早く試せる
悪い点
• 汎化性能が低い(今回の用途では十分)
応用
• 既存のセンサを置き換えられる
• ドア開閉センサ (磁気センサ)
• お風呂センサ (水位センサ)
• ボスが来たセンサ (光センサなど)
• 盗難センサ (重量センサなど)
• …
• 人間がパッと見てわかる程度の違いがあればわりと認識可能
• 部屋の散らかり具合
• …
M5StickVの
画像認識で
置き換え
性能が物足りないと感じてきたら
• M5Stack公式サイトが無料の転移学習サービスを提供
https://docs.m5stack.com/#/en/related_documents/v-training
もちろん自分でモデルを作ることも可能
Keras (*.h5)
TensorFlow Lite (*.tflite)
tflite_convert
KPU (*.kmodel)
NNCase (ncc)
• 最終的なモデルサイズで 2.5MB 程度が上限値
• サポートしている Operator に制約があるので注意
https://github.com/kendryte/nncase
ためしてみたい?
入手先
スイッチサイエンスで売り切れていても、
他の電子パーツ店(マルツ、共立エレ
ショップ)などでは在庫があることも
https://eleshop.jp/shop/g/gJ7C314/
https://www.marutsu.co.jp/GoodsDetail.jsp?salesGoodsCode=1555934
M5StickV を始める前に
• 動作確認済み microSD カードを入手
認識しない
カードがかなり多い
M5StickV が届いたら
• M5StickV Quick Start からファームウェアを最新に
https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start
Browine
https://github.com/ksasao/brownie
Tiny YOLO v2 face detection
+
Tiny YOLO v2 object detection (20-class)
MobileNet v1 (1000-class)
MobileNet v1 (feature extraction)
+
k-Nearest Neighbor (offline training)
Brownie Brownie 1000 Brownie Learn
まとめ
• M5StickV は安価でプログラミングが可能なAIカメラ
• MobileNet を特徴抽出器として利用した場合の素性は
意外に良好
• 既存センサの置き換えにもつかえそう
ミクミンP
@ksasaohttps://github.com/ksasao/brownie

Más contenido relacionado

Más de Kazuhiro Sasao

冴えないデータセットの育て方
冴えないデータセットの育て方冴えないデータセットの育て方
冴えないデータセットの育て方Kazuhiro Sasao
 
おうちセンサでキャラクターと暮らしてみた
おうちセンサでキャラクターと暮らしてみたおうちセンサでキャラクターと暮らしてみた
おうちセンサでキャラクターと暮らしてみたKazuhiro Sasao
 
飯テロ判定bot @no_meshitero
飯テロ判定bot @no_meshitero飯テロ判定bot @no_meshitero
飯テロ判定bot @no_meshiteroKazuhiro Sasao
 
M100でアプリを作ってみた
M100でアプリを作ってみたM100でアプリを作ってみた
M100でアプリを作ってみたKazuhiro Sasao
 
数千台のPepperがウェーブをする
数千台のPepperがウェーブをする数千台のPepperがウェーブをする
数千台のPepperがウェーブをするKazuhiro Sasao
 
超低消費電力無線センサでミクさんと生活してみた
超低消費電力無線センサでミクさんと生活してみた超低消費電力無線センサでミクさんと生活してみた
超低消費電力無線センサでミクさんと生活してみたKazuhiro Sasao
 
Moverio BT-200 チュートリアル
Moverio BT-200 チュートリアルMoverio BT-200 チュートリアル
Moverio BT-200 チュートリアルKazuhiro Sasao
 
NASA のデータセットで遊ぶ
NASA のデータセットで遊ぶNASA のデータセットで遊ぶ
NASA のデータセットで遊ぶKazuhiro Sasao
 

Más de Kazuhiro Sasao (9)

ごちうサーチ
ごちうサーチごちうサーチ
ごちうサーチ
 
冴えないデータセットの育て方
冴えないデータセットの育て方冴えないデータセットの育て方
冴えないデータセットの育て方
 
おうちセンサでキャラクターと暮らしてみた
おうちセンサでキャラクターと暮らしてみたおうちセンサでキャラクターと暮らしてみた
おうちセンサでキャラクターと暮らしてみた
 
飯テロ判定bot @no_meshitero
飯テロ判定bot @no_meshitero飯テロ判定bot @no_meshitero
飯テロ判定bot @no_meshitero
 
M100でアプリを作ってみた
M100でアプリを作ってみたM100でアプリを作ってみた
M100でアプリを作ってみた
 
数千台のPepperがウェーブをする
数千台のPepperがウェーブをする数千台のPepperがウェーブをする
数千台のPepperがウェーブをする
 
超低消費電力無線センサでミクさんと生活してみた
超低消費電力無線センサでミクさんと生活してみた超低消費電力無線センサでミクさんと生活してみた
超低消費電力無線センサでミクさんと生活してみた
 
Moverio BT-200 チュートリアル
Moverio BT-200 チュートリアルMoverio BT-200 チュートリアル
Moverio BT-200 チュートリアル
 
NASA のデータセットで遊ぶ
NASA のデータセットで遊ぶNASA のデータセットで遊ぶ
NASA のデータセットで遊ぶ
 

3000円のエッジデバイス内で画像の学習と推論を行うBrownie(ぶらうにー)の話