ESP32は深い学習の夢を見るか?[6](arduinoでリアルタイムDeepLearning)
目的
「前々前回」arduinoでDeepLearning出来る事を布教しました。
その後、esp-idf環境ではリアルタイムDeepLearningが可能な事を確認しました。
時間とゴニョゴニョが無いので、arduino側はそのままにしておりました。
しかし、ほっといたらarduinoが拗ねるといけません。
◆◆◆ そうだ、arduinoでもリアルタイムDeepLearningしてみよう ◆◆◆
今後も同じ扱いに出来るかどうかは不明。
経緯
arduino環境はDeepLearning出来ることは確認したので、esp-idf環境で完成してから反映させる予定でした。
しかし、「TTGO T-CAMERA」が以外に早く入手出来てしまった。
デモ環境を調べると、なななんとarduinoでは有りませんか。
これはやるしかないと言う事で。
1. 「TTGO T-CAMERA」の「デモ環境」をコンパイル。
でもエラーが出て、コンパイルが通らない。(おいおい)
2. この辺り「TTGO T-CAMERAをSTAモードで起動する 」を参考にさせて頂き改変しコンパイル。
※エラーの回避策は上記と一寸違うが。
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ソフト
※app_camera.cpp内にWiFiのSSID等の設定が必要。
1. 「前々前回」を参考に、arduinoの動作環境を設定して、コンパイルを実行する。
2. ディスプレイに下図のようなMNIST画像を拡大して表示する。
3. 「 画像収集ソフト」を起動し、画像読込を行う。
※画像収集のタイミングで画像認識を行っている。単独で動かしたい場合はarduino-nnc-cam.ino loop(){}の//nnc_loop();の//を削除。
4. ディスプレイ上の数値画像をカメラで撮影する。(例えば9)
※画像は外光の影響を避けた状態で、なるべく画面いっぱいに、カメラを傾けずに撮影するのがコツ。
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版に追随できる。(多分)
なお、もし追試する奇特な方がおられた場合、上記記載内容は無保証であり、各自の責任においてご利用願います。
Author And Source
この問題について(ESP32は深い学習の夢を見るか?[6](arduinoでリアルタイムDeepLearning)), 我々は、より多くの情報をここで見つけました https://qiita.com/hi631/items/076804f2c2eae335c225著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .