Jetson nano セットアップとUSBカメラを使った画像認識 (YOLO) の動作


Jetson nano セットアップとUSBカメラを使った画像認識 (YOLO) の動作

Jetson nanoはNVIDIAのGPUが載った、Raspberry Piサイズのボードです。

簡単な設定でUbuntuとNVIDIA Driver, CUDAが整った環境が揃えられるので、CPUでは重すぎて動かないディープラーニングなどを個人で少し試すのによいデバイスかと思います。

試しにUSBカメラを繋いでYoloを動かしました。

使用したハードウェア

  • Jetson Nano Developer Kit

  • 128 GB Micro SD カード

  • 電源アダプタ 5V/4A

  • USBカメラ

  • USB WiFiモジュール

  • ジャンパーピン

J48にジャンパーピンを接続するとDCジャック電源供給に切り替わります。デフォルトのUSB電源供給だと処理負荷が増えた際に安定動作しません。

初期セットアップ

Wifiで接続し、リモートデスクトップでJetson nanoを操作する環境を作ります。

まず、OSイメージは、NVIDIAのサイトでJetson nano専用のもの (Ubuntu 18.04 LTS) が配布されているので、Jetson Nano Developer Kit SD Card Imageというファイルをダウンロードします。

SDカードへのイメージの書き込みはbalenaEtcherなどで行います。balenaEtcherの操作はイメージファイルを選択して”Flash”ボタンをクリックするのみです。
SDカードを挿入してJetson nanoを初回にブートした際は、通常のUbuntuインストール時と同様の設定を行います。

リモートデスクトップの設定に関してはここのサイト通りに進めました。

画像認識 (Yolo) の動作

Yoloの動作にOpenCVが必要なのでインストールします。
私は以下のJetson nano用スクリプトを使いました。

git clone https://github.com/mdegans/nano_build_opencv
cd nano_build_opencv
./build_opencv.sh $1

次にYoloをダウンロードします。

git clone https://github.com/pjreddie/darknet
cd darknet

Makefileを次のように変更します。

GPU=1
CUDNN=1
OPENCV=1

makeと実行をして、画像認識が動きます。1.5 fps程度です。

make
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights

長時間動かすとフリーズします。精度は落ちますが、以下の演算量の低い実行方法もあります。

./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights

Jetson nano用のサンプルでもUSBカメラを使った画像認識ができます。

cd jetson-inference/build/aarch64/bin/
./imagenet-camera googlenet --cmera /dev/video0