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