DarknetをVirtualBox + ubuntu 16.04 LTSで使ってみる
Darknet のYOLOv3をJetson Nano (Jetpack 4.4、ubuntu 18.04 LTS) で使ってみます。
インストール
$git clone https://github.com/AlexeyAB/darknet.git
$cd darknet
$sudo nano Makefile
#GPU Speed up
GPU=1
CUDNN=1
#CPU Speed up
OPENMP=1
#
OPENCV=1
ARCH= -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] # 修正
コメントアウトを解除
ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]
nvcc not found のエラーが出た場合
パスを通す
$export PATH=${PATH}:/usr/local/cuda/bin
$make -j4
weightsファイルをダウンロードしておきます。
静止画像から物体検出してみます。
YOLOv3_Tinyモデルの場合
darknetのディレクトリで
./darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg /<モデルの絶対パス>/yolov3-tiny.weights
例(ユーザー名がjetsonの場合)
./darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg /home/jetson/darknet/yolov3-tiny.weights
静止画像のパスを聞いてくるので入力
例:相対パスで data/person.jpg
結果
馬を羊だと勘違いしてますね。犬も2匹いると思ってるみたいですし。
YOLOでは、1つの物体が複数のcellから抽出されてしまうことがあるようです。Tinyモデルではnon-maximal suppressionが効いていない?のかな。
YOLOv3モデルの場合
結果
正解です
カメラ
USBカメラを接続
電源はDCジャック(4A/20Wモード)を使用
以下のコマンドでMAXモードにセット
$sudo nvpmodel -m 0
$sudo jetson_clocks
YOLOv3_Tinyモデルを使います。
YOLOv3_sppは途中で強制終了され、YOLOv3は途中で内部エラーを起こして落ちました(Xavier NXなら何とか動きます、多少カクつきますが…..)。
カメラを確認
$ls /dev/video*
以下のようになるはず
/dev/video0
実行
$cd darknet
$./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg /<モデルの絶対パス>/yolov3-tiny.weights -c 0
例(ユーザー名がjetsonの場合)
$./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg /home/jetson/darknet/yolov3-tiny.weights -c 0
cupは認識してますが、マウスは迷ってます(ドーナッツだと思うんだけどマウスかな?)
右上の指だけでpersonだとしてますが、本当かな?
Leave a Reply