Jetson Xavier NXを使ってエッジコンピューティングとウェブを組み合わせたしくみを構築するまでの記録。
- ウェブ側:Laravel 6
- エッジ側:Python3, OpenCV4, Tensorflow2.0
- 通信プロトコル:mqtt
Jetson Xavier NXにTensorflowをインストールする
https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html
チュートリアル
https://developer.nvidia.com/embedded/twodaystoademo
object detectionのdetectNetで値の取得にハマる。無事同じ悩みのスレッドを見つけて解決。
https://github.com/NVIDIA/DIGITS/issues/2214
detectNetのIDが何を指すのか
OpenCVのインストール
うまくいかない。ここを参考に今一度。1日かかりきりたい。
How to configure your NVIDIA Jetson Nano for Computer Vision and Deep Learning
色々やってみたが、なぜかvirtual environmentでOpenCVがimportできない。virtual environmentから抜けた環境だと動く。なぜだかわからないがとりあえず動く環境で作業を進めることに。
次の課題として浮上したのはdetectNetが途中動きを止めることだ。Xavierの出力をあげて負荷を確認してみよう。Jetsonの状態確認のためのツール。
https://github.com/rbonghi/jetson_stats
調べたところ、detectNetを使ったプログラムが止まるのは、detectNetのせいではなく、カメラ側の問題らしい。Gstremerがプログラムを走らせている途中で以下のエラーを吐いて止まる。
** (python3:17067): CRITICAL **: 08:43:07.729: gst_adapter_push: assertion ‘GST_IS_BUFFER (buf)’ failed Segmentation fault (core dumped)
エラーでググるもよくわからない。ループが何回転した時に止まるのか確認するも安定してないので、何かしらメモリに関するところなのかも。カメラ側に問題ありということで、LogicoolのカメラからPiCamera V2に変更したところ、止まらなくなって解決できた?(以前止まった時間は超えたけどまだ様子見)
PiCameraのピント合わせ
色々とトライしてみたが、やはり元のプログラムが動かないと自分の力だとどうしようもなさそうな気配。物体検知は動くが、元々のカウンタープログラムとの相性がよくない。最初からやり直すべきかどうか。
現状
- detectNetを使った物体検知は動く
- OpenCV4のカウンタープログラムは動く
- detectNetを使った物体検知プログラムから取得する画像情報がカウンタープログラムでうまく読み込めず(gstreamerのpipelineが壊れる)壁にあたっている。