Darknet YOLOv3 on Jetson Nano

Jetson NanoにニューラルネットワークのフレームワークであるDarknetをインストールして、物体検出モデルのYOLOv3が動作する環境を構築しました。

YOLOv3とTiny YOLOv3による物体検出結果

下の画像は、構築した環境のYOLOv3とTiny YOLOv3を用いて、GitHub – udacity/CarND-Vehicle-Detection: Vehicle Detection Projectのテスト画像を物体検出した結果です。

環境構築

Darknet

Darknetは、ニューラルネットワークのフレームワークです。詳細は、Darknet: Open Source Neural Networks in Cをご覧ください。ソースが、GitHub – pjreddie/darknet: Convolutional Neural Networksで公開されています。

今回は、フォーク版のGitHub – AlexeyAB/darknet: Windows and Linux version of Darknet Yolo v3 & v2 Neural Networks for object detection (Tensor Cores are used)をcloneします。

予め~/githubディレクトリを作成しておき、以下のコマンドを実行します。

$ cd ~/github
$ git clone https://github.com/AlexeyAB/darknet
$ cd darknet
$ git checkout darknet_yolo_v3 -b jetson_nano

~/github/darknetディレクトリのMakefileを以下のように変更します。

GPU=1
CUDNN=1
OPENCV=1
ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]

最後に、makeを実行します。

$ PATH=/usr/local/cuda/bin:$PATH make -j$(nproc)

YOLOv3 & Tiny YOLOv3

YOLO: Real-Time Object Detectionから、YOLOv3とTiny YOLOv3のpre-trained weight fileを~/github/darknetディレクトリにダウンロードします。

$ cd ~/github/darknet
$ wget https://pjreddie.com/media/files/yolov3.weights
$ wget https://pjreddie.com/media/files/yolov3-tiny.weights

YOLOv3の動作確認のために、以下のコマンドを実行します。

$ cd ~/github/darknet
$ ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

Tiny YOLOv3の動作確認のために、以下のコマンドを実行します。

$ cd ~/github/darknet
$ ./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg

まとめ

Jetson NanoにニューラルネットワークのフレームワークであるDarknetをインストールして、物体検出モデルのYOLOv3が動作する環境を構築しました。