ESP32 gysfdmaxb Server Viwer CGI

ESP32 gysfdmaxb Server (GPS / Wi-Fi Http Server) から受信できる、GPSデータをCGIで受け取って、
Yahoo Map API を使って、ブラウザー上で、MAP 表示できるようにしてみました。
esp32_gps-view-181005-1.jpg

Yahoo MAP APIの使い方に関しては、
http://www.hanemaru.com/itemcolumn/11yolp001.html
を参考にさせて貰いました。ありがとうございました。

Perl Http Client のプログラムは、
http://www.geekpage.jp/programming/perl-network/simple-http-client.php
を参考にさせて貰いました。ありがとうございました。

使い方は、ESP32 gysfdmaxb Server と同じローカルネットワークに繋がった、PC(おんちゃんは、Windows10) に Apache を動作させて、
Apache の /cgi-bin/ ディレクトリー下に、今回の esp32_gps.cgi を設置します。

その後、同じ PC のブラウザーから、今度は、esp32_gps.cgi を実行すれば、OK です。
例 : http://localhost/cgi-bin/esp32_gps.cgi

そうすると、esp32_gps.cgi から、ESP32 gysfdmaxb Server の IP:192.168.1.91 へHTTP Client としてアクセスして、GPSデータを取り込んで、その位置情報を使って、Yahoo Map API を使って、現在位置の地図を、PCのブラウザーに表示します。

ESP32 gysfdmaxb Server (GPS / Wi-Fi Http Server)

ESP32 に、みちびきGPS gysfdmaxb を繋げて、GPS / Wi-FI http サーバーを作ってみました。

仕組みは、http://www.netosa.com/blog/2017/10/esp-wroom-02-wi-fi-lan.html と同じで、
但し、今回は、ESP32 を使っています。

使い方は、ローカルネットワーク上のPCのブラウザーから、ESP32 gysfdmaxb Server の IP:192.168.1.91
をブラウザーから、 http://192.168.1.91 と叩けば表示されます。
ESP32_gysfdmaxb_Server_resp-181005-1.jpg

回路図は、こちらです。
esp32-gysfdmaxb-server_2018.10.6.jpg

OpenCV3.4.2 Dnn Object Detection with TensorFlow Model

OpenCV3.4.2 dnn モジュールを使うと、TensorFlow の学習済みモデルを利用した、
Object Detection AP が簡単に出来ると言う事なので、試してみました。

参考ページは、こちらになります。
TensorFlow Object Detection API

おんちゃんは、入力をWebカメラ、USBカメラにしました。
Model は、MobileNet-SSD v2 / 2018_03_29 を使っています。

使った感想は、検出オブジェクトの重複があるようで、重複を削る所が足りないような気がします。
但し、CPU だけで、結構な速度が出るのは、関心しました。
もしかしたら、 OpenCV の dnn では、TensorFlow Lite の様なモデルの軽量化をしているのかもしれません。
後、Boxの枠ですが、画像ファイルだと大体出来ていますが、動画だと少し変です。おおんちゃんの
プログラムミスかもしれません。

以上です。コッホ!!

注) OpenCV3.4.2 以降を使ってください。古いバージョンだとエラーが出ます。

TensorFlow Lite Object Detection on PC(CentOS7)

公開されている、Object Detection API を TensorFlow Lite で書いてみました。

プログラムのベースは、 object_detection_tutorial.ipynblabel_image.py です。

使ったモデルは、こちらで公開されている、 ssd_mobilenet_v1_coco_2018_01_28 をダウンロードして、
下記ページに従って、
Running on mobile with TensorFlow Lite
ssd_mobilenet_v1_coco_2018_01_28 -> detect.tflite へ変換しました。

因みに、おんちゃんは、 CentOS7 に Python3.5 (IUS版) をインストールして、
その後、 TensorFlow を buzel でソースビルドを行っています。

Tensorflow Lite は、with XLA JIT support=y を指定して、Buzel でのソースビルドが必要です。
当初、Windows10 でCmake で試しみましたが、上記のオプションが指定できないので、
結局、CentOS7 になりました。

実行時の注意点は、vis_util.visualize_boxes_and_labels_on_image_array() のパラメータで
min_score_thresh=0.3 (default=0.5) にして、ボックスの表示を多くしています。
そうすると、ssd_mobilenet_v1_coco でも結構検出しているのが、目で見えるので、楽しいです。
公開されている、CNTK 2.4 Object Detection FasterRCNN の USBカメラ、Mjpg-streamer での利用を考えてみました。
https://docs.microsoft.com/en-us/cognitive-toolkit/Object-Detection-using-Faster-R-CNN

https://github.com/Microsoft/CNTK/tree/master/Examples/Image/Detection/FasterRCNN

cntk-samples-2-4\Examples\Image\Detection\FasterRCNN ディレクトリーの中の
run_faster_rcnn.py を実行すれ、モデルの学習が出来て、その後、サンプル画像で、
オブジェクトの検出&認識を試せますが、これが、余りにもちゃっちいので、つまりません。

なので、アプリケーションでの利用を想定して、USB カメラ、mjpg-steamer のキャプチャー画像で、
物体の検出&認識できるようにしてみました。

公開されている、TensorFlow Object Detection API を USBカメラ、Mjpg-streamer での利用方法を試してみます。
GitHub で公開されている、object_detectioon_tutorial.ipynb をベースに、 USBカメラ、Mjpg-streamer での利用をためしてみました。
https://github.com/tensorflow/models/tree/master/research/object_detection

サンプルは、ローカルの画像を2つ読み込んで、試していますが、
これを、 USB カメラ、mjpg-steamer から取り込んだキャプチャー画像に変えてみます。

object_detectioon_tutorial.ipynb が実行できる環境が整えば、結構簡単です。
Windows10 + Tensorflow-1.5.0 GPU +Python3.5 + OpenCV3.4 (Anaconda で全て構築しています)
Tensorflow は、新しいバージョンが出ていますが、GPU版は、1.5.0 をつかいます。

CNTK_106A_LSTM_Timeseries_with_Simulated_Data の改造

CNTK_106A_LSTM_Timeseries_with_Simulated_Data を勉強を兼ねて改造してみました。

改造の目的は、最後の学習済みモデルを使った確認方法を変えてみます。
新しく取り入れる確認方法は、
『詳解ディープラーニング TensorFlow・Kerasによる時系列データ処理』 巣籠悠輔 著 
第5章リカレントニューラルネットワーク -> 5.1.4.2 TensorFlow による実装
に出ている方法を取り入れてみます。

違いは、オリジナルは、確認のために使う入力のサイン波データを、全てトレーニング用の元データを使いますが、後者の方は、入力の最初の数ステップ(N+M-1)は、元のオリジナルのサイン波形を使いますが、その後は、全て、モデルからの予測データを入力にフィードバックさせて、サイン波を生成している点です。

 

CNTK_201B_CIFAR-10_ImageHandsOn の改造

CNTK2.5 のチュートリアルのプログラム CNTK_201B_CIFAR-10_ImageHandsOn を学習データのアクセス部分を、
keras.datasets.cifar10 ライブラリーを使う方法に変えてみました。

CNTK_201B_CIFAR-10_ImageHandsOn を色々試していましたが、何回か実行する度に、どういう訳か、Windows10 のディスクアクセスが 100% になるので困っていましたが、
データアクセスの部分を Keras でも出来る様なので、早速試してみました。

それでは、早速コードを記載してみます。こらの方が、オリジナルより理解しやすいのでは?

CNTK_103C_MNIST_MultiLayerPerceptronの改造

CNTK2.5 のチュートリアルのプログラム CNTK_103C_MNIST_MultiLayerPerceptron を学習データのアクセス部分を、
Scikit-learn のライブラリーを使う方法に変えてみました。
参考にしたのは、

『詳解ディープラーニング TensorFlow・Kerasによる時系列データ処理』 巣籠 悠輔[著] 
第4章 ディープニューラルネットワーク (p143) の、sklearn を使った MNIST データの読み込みです。

CNTK_103C_MNIST_MultiLayerPerceptron のオリジナルは、CNTKの関数を使った方法が記載されていますが、
Scikit-learn のライブラリーを使うと超簡単なようです。
また、Scikit-learnの方法だと、TensorFlow,Keras でも同じ様に使えます。
学習、評価データのアクセス以外のモデルの作成や、学習の部分は、オリジナルを使います。

それでは、早速コードを記載してみます。こらの方が、オリジナルより理解しやすいのでは?

CNTK 2.5 の勉強も少しは、こなしたので、今までの勉強を生かして、
具体的な、システムへの応用として、
「cntk 2.5 を使った砂防ダムの監視カメラによる水量の観測から、鉄砲水発生を予測」
なるものを考えてみました。

今はまだ、実現可能性を考えずに、只単純に、こんなシステムが出来ればとの、発案です。
どのような物かと言えば、

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アイテム

  • esp32-gysfdmaxb-server_2018.10.6.jpg
  • ESP32_gysfdmaxb_Server_resp-181005-1.jpg
  • esp32_gps-view-181005-1.jpg
  • ESP-WROOM-02-G`PS-2017.10.21-1l.jpg
  • PIC32MX_hid_basic_moouse_bredboard2_2017.10.15.jpg
  • PIC32MX_hid_basic_moouse_bredboard1_2017.10.15.jpg
  • PIC32MX hid_basic_mouse_usart_pps-output-settings_2017_10_14.jpg
  • PIC32MX hid_basic_mouse_usart_pps-input-settings_2017_10_14.jpg
  • PIC32MX hid_basic_mouse_usart_pin-table_2017_10_12.jpg
  • PIC32MX hid_basic_mouse_usart_pin-diagram_2017_10_12.jpg

ウェブページ

サイトナビ