1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ESP32は深い学習の夢を見るか?[6](arduinoでリアルタイムDeepLearning)

Last updated at Posted at 2019-07-10

目的

 「前々前回」arduinoでDeepLearning出来る事を布教しました。
 その後、esp-idf環境ではリアルタイムDeepLearningが可能な事を確認しました。
 時間とゴニョゴニョが無いので、arduino側はそのままにしておりました。
 しかし、ほっといたらarduinoが拗ねるといけません。
 ◆◆◆ そうだ、arduinoでもリアルタイムDeepLearningしてみよう ◆◆◆
 今後も同じ扱いに出来るかどうかは不明。

経緯

 arduino環境はDeepLearning出来ることは確認したので、esp-idf環境で完成してから反映させる予定でした。
 しかし、「TTGO T-CAMERA」が以外に早く入手出来てしまった。
投稿24-2 Image1.jpg
 デモ環境を調べると、なななんとarduinoでは有りませんか。
 これはやるしかないと言う事で。
 1. 「TTGO T-CAMERA」の「デモ環境」をコンパイル。
  でもエラーが出て、コンパイルが通らない。(おいおい)
 2. この辺り「[TTGO T-CAMERAをSTAモードで起動する] (https://qiita.com/yukinolinlin/items/65f6575d13d3bf0717e0) 」を参考にさせて頂き改変しコンパイル。
  ※エラーの回避策は上記と一寸違うが。
 3. うまくいったので、ブラウザで動作確認。
 4. NNCに食わせる、グレィスケールの画像が出せないのには参った。(ライブラリが腐っているような)
 5. 何とかしてからarduino-nncと結合し、コンパイルが通るようにした。
 6. カメラで数値画像を捉え、DeepLearningしてMNIST画像(0-9)をリアルタイム認識。(おお!一応できたぞ)

前提条件(前々前回と同様)

 以下のソフトを予め導入の事。
 1. neural_network_console (当たり前、for Windows 8.1/10_64bit 1.4.0にて検証)
 2. arduino開発環境     (ライブラリの追加が必要になります、エラーが出るのでzipを探す)
 3. visualstudio(2017)    (自分好みにツールの変更を行いたい場合)

neural_network_consoleでの操作

 「前々回」と同様。

arduinoによるEVALUATION

 arduinoでコンパイル、実行可能な形で下記に格納していいる。
   [arduinoによるDeepLearningのEVALUATIONソフト] (https://github.com/hi631/esp32-nnc/tree/master/arduino-nnc-cam)
  ※app_camera.cpp内にWiFiのSSID等の設定が必要。
 1. 「前々前回」を参考に、arduinoの動作環境を設定して、コンパイルを実行する。
 2. ディスプレイに下図のようなMNIST画像を拡大して表示する。
 3. 「 [画像収集ソフト] (https://github.com/hi631/esp32-nnc/tree/master/gethttpfile)」を起動し、画像読込を行う。
  ※画像収集のタイミングで画像認識を行っている。単独で動かしたい場合はarduino-nnc-cam.ino loop(){}の//nnc_loop();の//を削除。
 4. ディスプレイ上の数値画像をカメラで撮影する。(例えば9)
  ※画像は外光の影響を避けた状態で、なるべく画面いっぱいに、カメラを傾けずに撮影するのがコツ。

Image0-9a.jpg

 5. 下記のようにシリアルに表示され、( 9 )と認識されれば成功。
  ※上記画像(0-9)を一通り認識できる事を確認している。
   esp-idf版とほぼ同様でが、エラー(他の数字と誤認識)の数値が上がっている。

	Pos= -3 -1
	............................
	............................
	............................
	.........OOOOOOO............
	........OO.....O............
	.......OO...................
	......OOO...........O.......
	.....OOO...........OO.......
	.....OO...........OOO.......
	.....OO...........OOO.......
	.....O............OO........
	....OO...........OOO........
	....OO...........OOO........
	....OOO.........OOO.........
	.....OOO......OOOOO.........
	.....OOOOOOOOOOOOOO.........
	.......OOOOOO..OOO..........
	...............OOO..........
	...............OOO..........
	...............OOO..........
	..............OOO...........
	..............OOO...........
	..............OOO...........
	.............OOO............
	.............OOO............
	.............OOO............
	.............OO.............
	............................
	 +0.000 +0.000 +0.000 +0.458 +0.000 +0.000 +0.000 +0.007 +0.079 +0.966 ( 9 )
	PGM: 39200B 142ms

「TTGO T-CAMERA」使用上の注意

 1. 上記にも書いたが、デモプログラムはそのままでは動作しない。黒魔術が必要。
  ESP32-CAMERA側での改善が望まれる
 2. WiFiの設定
  app_camera.cpp内にWiFiのSSID等の設定が有る。
  これを設定しないとデモプログラムは先に進まない。(....が表示されるだけ)
 3. 標準の魚眼レンズでは認識が悪い。
  標準では魚眼レンズ付きとなっているが、画像の周辺が歪むので認識に影響が出ている。
  標準レンズに交換することにより、同程度の認識になる。(魚眼の方が高いのに)
 4. 温まると起動が遅くなる。
  温まると(?)「Brownout detector was triggered」が発生し、再起動を暫く繰り返す。
  ※当方だけの現象かも知れない。アンテナの当たりを軽く撫ぜてやると機嫌がよくなる。
 5. グレィスケールが使えない。
  「PIXFORMAT_GRAYSCALE」を指定すると「2BPP/YUV422」で出力される。
  仕方が無いので、Yだけを取り出し半分に圧縮してグレィスケールを作成。でもメモリは倍(38400バイト)も使っている。

デモプログラムの他機種への転用

 デモプログラのピン設定を書き換え、他の環境(esp-idfでの動作環境)で動作確認を行った。
 結果的には画像認識は上手くいっているが、画像にラインが表示される。
 クロックを12MHzにする事により、多少緩和される。(10MHzはダメ)
 10MHzでダメな事より、クロックスピードではなくデモプログラムに何か落とし穴が有る模様だが、良く判っていない。


 今後は src main内のc_source 派生のプログラムを差し替えれば(一部変更要)、esp-idf版に追随できる。(多分)  なお、もし追試する奇特な方がおられた場合、上記記載内容は無保証であり、各自の責任においてご利用願います。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?