エッジコンピューティング奮闘記

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が何を指すのか

What Object Categories / Labels Are In COCO Dataset?

 

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が壊れる)壁にあたっている。