AlexeyAB/DarknetをNvidia Jetson Nanoにインストール
前回のNvidia Jetson Nano A02に導入した際と同様の手順となります。
参考記事:AlexeyAB / darknet / YOLO3 インストール(Nvidia Jetson Nano)
導入されているCudaのバージョンが変わっており、利用するパスが異なるなど、細かな違いが生じております。(今回は、Jetpack4.3を利用)
簡単にDarknetのコンパイルが実現できるのは、NVIDIA Cudaを搭載したシングルコンピューターの最大の恩恵だと思います。
パッケージを最新の状態にアップデート
$ sudo apt update
$ sudo apt upgrade -y
Cuda関係のパスを環境変数に登録
Cudaka関連のパスは、バージョンにより異なります。
/usr/local/cuda-<version>/ となります。
$ export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
DarknetのダウンロードとYoloモデルのダウンロード
$ git clone https://github.com/AlexeyAB/darknet
$ cd darknet
$ wget https://pjreddie.com/media/files/yolov3.weights
$ wget https://pjreddie.com/media/files/yolov3-tiny.weights
MakeFileを変更しGPU、OPENCV対応へ
Makefileを変更し、GPU、CudaとOpencv対応となるようにコンパイルオプションを変更します。
変更前のMakeFile変更内容
GPU=0
CUDNN=0
CUDNN_HALF=0
OPENCV=0
AVX=0
OPENMP=0
LIBSO=0
通常は、以下の3つを「0」から「1」へ変更し、Cuda GPUありのDarknetがコンパイルできます。
GPU=1
CUDNN=1
OPENCV=1
今回は、Pythonからlibdarknet.soを利用する予定なので、LIBSOも「0」から「1」へ変更します。
GPU=1
CUDNN=1
CUDNN_HALF=0
OPENCV=1
AVX=0
OPENMP=0
LIBSO=1
以上でDarknetが利用可能となります。
Jetson Nano A02でコンパイル時も、Make時のエラーを対処する必要がありました。ページ下部に、実施した修正内容を記載しておきます。
darknetフォルダで、以下サンプルコマンドを実行し、動作を確認してください。
$ cd darknet
$ ./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights -ext_output dog.jpg
Make時エラーへの対処
nvcc -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] -gencode arch=compute_61,code=[sm_61,compute_61] -Iinclude/ -I3rdparty/stb/include -DOPENCV `pkg-config --cflags opencv4 2> /dev/null || pkg-config --cflags opencv` -DGPU -I/usr/local/cuda/include/ -DCUDNN --compiler-options "-Wall -Wfatal-errors -Wno-unused-result -Wno-unknown-pragmas -fPIC -Ofast -DOPENCV -DGPU -DCUDNN -I/usr/local/cudnn/include -fPIC" -c ./src/convolutional_kernels.cu -o obj/convolutional_kernels.o
/bin/sh: 1: nvcc: not found
Makefile:168: recipe for target 'obj/convolutional_kernels.o' failed
make: *** [obj/convolutional_kernels.o] Error 127
NVCC=nvcc 部分を
NVCC=/usr/local/cuda/bin/nvcc
に変更
参考にさせて頂いたサイト
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)