43
IoT分野へのRuby言語/OSS適用試行 ~試行のユースケースを具体化・最新化~ 2018年2月 日本OSS推進フォーラム アプリケーション部会 株式会社HTKエンジニアリング 仲村 秀樹 Copyright 2018 Japan OSS Promotion Forum

IoT分野へのRuby言語/OSS適用試行ossforum.jp/jossfiles/AP2.pdf · 22.02.2018 · 18 縦横移動 ペットボトル部分を切り取り、縦横に動かして水増ししている。

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

IoT分野へのRuby言語/OSS適用試行~試行のユースケースを具体化・最新化~

2018年2月

日本OSS推進フォーラム アプリケーション部会

株式会社HTKエンジニアリング

仲村 秀樹

Copyright 2018 Japan OSS Promotion Forum

1.はじめに

2.2017年度活動

3.デモ構成、工夫・苦労

4.Embedded Technology 2017

5.最後に

Copyright 2018 Japan OSS Promotion Forum

目次

1

Copyright 2017 Japan OSS Promotion Forum 2

はじめに

これまでの活動

Copyright 2018 Japan OSS Promotion Forum

1.はじめに

3

2014年度 2015年度 2016年度 2017年度

Ruby言語

OSS推進フォーラムアプリ部会活動

IoT分野へのRuby言語適用施行

Ruby(1995年~)

mruby(2012年~)

mruby/c

Ruby・mruby Ruby・mruby Ruby・mruby Ruby・mruby/c

IoTへの適用施行システム拡張

mruby深堀Deeplearning

機器追加

IoT試行の変遷 2014~2015

Rubyに着目したIoT適用試行

2016

OSS全般を活用したIoT適用試行に拡大

IoT適用シーンをより具体化

AI(DeepLearning)を適用

Copyright 2018 Japan OSS Promotion Forum

1.はじめに

4

Copyright 2017 Japan OSS Promotion Forum 5

2017年度の活動

これまで活動に対し、次の観点で試行を追加

Bluetooth Low Energy(BLE)ビーコン制御→mruby/Cを用いたIoTセンサ機器の拡充

ディープラーニングのさらなる深堀→工場のライン制御を意識したAI適用試行

カメラ入力制御の高精度化→カメラ単体で画像処理までを実施

Copyright 2018 Japan OSS Promotion Forum

2.2017年度活動

6

活動チームメンバー紹介(敬称略)

Copyright 2018 Japan OSS Promotion Forum

2.2017年度活動

7

廣田 哲也

田坂 有史

岩城 有美子

津々美 利夫、福田 凌平

Copyright 2017 Japan OSS Promotion Forum 8

デモ構成

デモシナリオ

Copyright 2018 Japan OSS Promotion Forum

3.デモシナリオ

9

ディープラーニング

Tensorflow:ディープラーニングフレームワーク

Keras: Tensorflowのラッパ。Tensorflowを直接使うよりも簡単.

Flask: REST API提供のため使用

Gunicorn: APIサーバとして使用

Nginx

Copyright 2018 Japan OSS Promotion Forum

3.システム構成 – 利用OSS

11

BLEビーコン/ゲートウェイ

Ruby:ゲートウェイプログラム

Bluez:BLEデータ受信のために使用

センサー/カメラ

Ruby:カメラや通信制御に利用

OpenCV:画像処理ライブラリ(ruby-opencv経由で使用)

Copyright 2018 Japan OSS Promotion Forum

3.システム構成 – 利用OSS

12

クラウド

RubyでWebアプリ/APIサーバを実装するため、以下のOSSを利用

ActiveRecord

Sinatra

Unicorn

Nginx

MySQL

Copyright 2018 Japan OSS Promotion Forum

3.システム構成 – 利用OSS

13

Copyright 2017 Japan OSS Promotion Forum 14

工夫・苦労点

判定精度向上のための施策

学習率を変えることにより精度を上げた

学習率を最適な値にしないと過学習や未学習といった問題が起きることから、最適化関数のパラメータである学習率を中心に試行錯誤した。

データセットを用意することに苦労した

事前に用意した学習データで作った学習モデルを使用すると判定精度が出なかった。学習する画像の背景を本番環境に合わせたり、学習データ画像の水増しを行うことで精度を上げていった

Copyright 2018 Japan OSS Promotion Forum

3.ディープラーニング

15

学習率のチューニング Resnet50というニューラルネットワークで転移

学習を行った。転移学習をするにあたって出力層を今回認識する物体の数に合わせている。

Resnet50による学習で使用する最適化関数は原論文から「SGD + Momentum」を使うと書かれている。よって、これを使用した。

今回作成したデータセットは3クラス768枚の画像で、ペットボトルを様々な方向から撮影したものある。学習に使う画像が少ないことから過学習や未学習といった問題が発生した。

過学習や未学習を回避するためには、最適化関数のパラメータをチューニングする必要がある。今回は主に学習率のチューニングを行った。

Copyright 2018 Japan OSS Promotion Forum

3.ディープラーニング

16

学習に用いるデータセットの工夫 事前に擬似環境で撮影した学習データを使った場合、判

定精度が上がらなかった。(失敗)そのため、リハーサル環境で撮影した画像を学習データに用いた。

画像処理により学習データの水増しを行った。移動や拡大縮小による水増しに加え、デモ環境では人の出入りによる対象物に影や光のあたり具合が変わるため、ガンマ補正を行った(次ページ)

Copyright 2018 Japan OSS Promotion Forum

3.ディープラーニング

17

擬似環境で撮影、データセット作成

⇒失敗

水増し

有効

18

縦横移動 ペットボトル部分を切り取り、縦横に動かして水増ししている。

拡大縮小 画像を拡大・縮小し、リサイズして水増ししている。

3.ディープラーニング

ガンマ補正(明るさの調整) 画像のガンマ値を変更して、明るさが変わることによって水増ししている。

ガンマ補正

画像の水増し

拡大・縮小

縦横移動

Copyright 2018 Japan OSS Promotion Forum

3.BLEビーコン

※mruby/cをPsoC5LPで動かす|Chapter01「LED点滅」 しまねソフト研究開発センター

( http://www.s-itoc.jp/activity/research/mrubyc/mrubyc_tutorial/405 ) (参照 2018-02-22)

PSoC5

CY8CKIT-059 PSoC® 5LP Prototyping Kit With Onboard Programmer and

Debugger

Cortex-M3

を搭載したSoC

Cortex-M0

を搭載したSoC

PSoC4

CY8CKIT-143A PSOC® 4 BLE 256KB MODULE

デモで使用したPSoC4チュートリアルで使用しているPSoC5

20

Cortex-Mシリーズは組込み向けのCPU

Copyright 2018 Japan OSS Promotion Forum

3.BLEビーコン

Cortex-M3 Cortex-M0

DMIPS 1.25DMIPS/MHz 0.9MIPS/MHz

電力 0.045mW/MHz 0.015mW/MHz

アンアラインドデータアクセス

可 不可

Nordic Semiconductor、日本国内の主要5社より提供の

nRF51822 SoC搭載RFモジュールをワイヤレスジャパンで発表

NORDIC SEMICONDUCTOR

(https://www.nordicsemi.com/jpn/node_206/node_305/Product-Related-News/Nordic-Semiconductor-nRF51822-SoC-RF )

(参照 2018-02-22)Pebble公式サイト

(https://www.pebble.com/pebble-time-steel-smartwatch-features )

(参照 2018-02-22)

Pebble-Smartwatch

Cortex-M3を使用

nRF51822

Cortex-M0を使用

性能はM3に劣るが

省電力・小型・低コスト

21

目的1

目的2

Copyright 2018 Japan OSS Promotion Forum

3.BLEビーコン

mruby/c

mruby

Ruby

実行時のメモリ消費量

数MB

<400KB

<50KB ⇒ mruby/cが動き出すメモリ消費量は?

HW(PSoC4)

Cortex-M0

mruby/c VM

mruby/c アプリ

HW(PSoC5)

Cortex-M3

mruby/c VM

mruby/c アプリ

※「mruby/c」の利用期待分野~M2Mでの利用~ 九州工業大学

( https://www.slideshare.net/shimane-itoc/mrubycm2m160726 ) (参照 2018-02-22)

22

mruby/cでBLEビーコンのアプリを作成

mruby/c:2017年8月9日時点のコードを取得commit 738a9a005ae12ff04d453a9f214b450232589701

アプリ:50ms毎にBLEの電波を発信

HW:CY8CKIT-143A PSoC® 4

Copyright 2018 Japan OSS Promotion Forum

3.BLEビーコン

要素

CPU Cortex-M0

Flush memory 256KB

SRAM 32KB

CY8CKIT-143A PSOC® 4 BLE 256KB MODULE

23

問題:PSoC5で使用したmruby/cをPSoC4に移植してもLEDが点灯しない。

原因:アンアラインドデータへのアクセス

対処:アライメントの調整

long(32)

char(8) uint(32)・・・

short(16) ・・・!

・・・uint(32)

long(32)

char(8)

short(16) ・・・

uint(32)

Copyright 2018 Japan OSS Promotion Forum

3.BLEビーコン

24

消費メモリの調査

Copyright 2018 Japan OSS Promotion Forum

3.BLEビーコン

mruby/cなし mruby/c VMあり mruby/c アプリ(BLE)あり

2.5KB

約7.5KB

約8.5KB

※参考 PSoC4でBLEを送信するのに必要なメモリ使用量

mruby/cを動かすのに

必要なメモリ使用量

SRAM使用量

10.0KB

18.5KB

HW(PSoC4)

Cortex-M0

アプリ(While文のみ)

PSoCを動かすためのコード

HW(PSoC4)

Cortex-M0

mruby/c VM

PSoCを動かすためのコード

mruby/cアプリ(BLE)

HW(PSoC4)

Cortex-M0

mruby/c VM

PSoCを動かすためのコード

25

サマリ

アライメントを考慮すればCortex-M0でも動く

mruby/cだけを最低限の機能で動かすには約7.5KBのRAMで動く

今回使用したチップとmruby/cの組み合わせでは、合計18.5KBのRAMが必要だった

Cortex-M0でmruby/cを使ったアプリ開発をする際には、RAM7.5KBの使用量を考慮して開発する必要がある。

Copyright 2018 Japan OSS Promotion Forum

3.BLEビーコン

26

撮影用カメラをUSBカメラからRaspberry Pi カメラモジュール(Raspberry Pi Camera V2)に変更

撮影方法をfswebcamコマンドによるものからOpenCV(ruby-opencv)による映像取込みに変更

上記2つの変更により、写真1枚当たりの撮影速度が向上(3秒程度→1秒程度)

動く物体を撮影するため、一回の撮影トリガで5枚連続で写真を撮影するように変更

画像ファイルサイズの軽量化のためにOpenCVで取り込んだ画像を一時ファイルとして保存した上でRaspberry Pi上でImageMagick(RMagick)を使用してjpeg圧縮を行った

ImageMagick(RMagick)に明示的にメモリ解放ができる仕組みがあるため

Copyright 2018 Japan OSS Promotion Forum

3.カメラ制御

27

2016年度までの開発資産を有効活用したため、大きな変更・追加は行わず

今年度は開発時間を確保することがほとんどできなかったが、RubyとSinatraの構成により、わずかな変更で新機能に対応できた。

Copyright 2018 Japan OSS Promotion Forum

3.クラウド

28

Copyright 2017 Japan OSS Promotion Forum 29

Embedded Technology

2017

11/15~11/17@パシフィコ横浜

「福岡県Ruby・コンテンツビジネス振興会議」様のご好意により「フクオカ&しまねmrubyパビリオン」ブースに展示させていただいた

Copyright 2017 Japan OSS Promotion Forum

4.Embedded Technology 2017

30

会場でアンケートを実施。19名から回答をいただいた 設問

mruby/cを組込み開発で使用してみたいと思いますか

組み込み開発分野 mruby/cはCよりも優位になると思いますか

あなたがIoT分野で重要視する要件はなんですか

IoTシステムのそれぞれでの開発言語は、あなたなら何を選定しますか

AIの適用実績はありますか

ディープラーニングを行う場合、どの言語を使用したいですか

使用した・使用したいディープラーニングフレームワークを教えて下さい

Copyright 2017 Japan OSS Promotion Forum

4.Embedded Technology 2017

31

Copyright 2017 Japan OSS Promotion Forum

4.Embedded Technology 2017

32

mruby/cを組込み開発で使用してみたいと思いますか

印象的な・特徴が現れた結果

はい

74%

いいえ

10%

未記入

16%

はい

いいえ

未記入

Copyright 2017 Japan OSS Promotion Forum

4.Embedded Technology 2017

33

組み込み開発分野 mruby/cはCよりも優位になると思いますか

印象的な・特徴が現れた結果

はい

42%

いいえ

32%

未記入

26%

はい

いいえ

未記入

Copyright 2017 Japan OSS Promotion Forum

4.Embedded Technology 2017

34

IoTシステムで選定する開発言語は?:センサー

印象的な・特徴が現れた結果

アセンブラ

12%

C/C++

63%

Ruby/mruby

17%

Python

8%

Java

0%

アセンブラ

C/C++

Ruby/mruby

Python

Java

Copyright 2017 Japan OSS Promotion Forum

4.Embedded Technology 2017

35

AIの適用実績はありますか

印象的な・特徴が現れた結果

ある

5%

ない

69%

検討している

21%

個人的に使ったこ

とはある

5%

ある

ない

検討している

個人的に使ったことはある

Copyright 2018 Japan OSS Promotion Forum

4.Embedded Technology 2017

36

ET2014でのアンケート結果との比較考察

開発言語選定はほぼ同様の傾向センサー(組み込み機器)はC/C++が強いクラウドはRuby,Python,Javaを利用

組込み分野へRuby/mruby適用したい・有用との意見は多いが、実際に利用されるのはC/C++

Copyright 2017 Japan OSS Promotion Forum 37

最後に

来年度活動

「IoT」のキーワードは継続

ロボティクス

センサーに加え、アクチュエータも

最新トレンド追従

エッジコンピューティング

OSSの従来適用分野から特化分野への活用試行

mruby/Cの活用拡充

etc..(考え中...)

Copyright 2018 Japan OSS Promotion Forum

5.最後に

38

成果はGithubで公開しています

Copyright 2018 Japan OSS Promotion Forum

5.最後に

39

https://github.com/ossforumjp-app-IoT

Copyright 2018 Japan OSS Promotion Forum

5.最後に

40

本会場でデモを展示しております

ぜひご覧ください

Copyright 2017 Japan OSS Promotion Forum 41

ご清聴、

ありがとうございました

Copyright 2018 Japan OSS Promotion Forum 42