スポンサーリンク

JetsonNanoにdarknet(AlexeyAB)を入れて物体検出する方法

今回はJetsonNanoにdarknet(AlexeyAB)を入れて物体検出する方法を紹介します。

参考記事

今回はこちらの記事の内容を参考にしています。
【物体検出】vol.2 :YOLOv3をNVIDIA Jetson Nanoで動かす

実行するときの各パラメータについてはこちらの記事が非常に参考になります。
Yolo-v4 and Yolo-v3/v2 for Windows and Linux

darknet(AlexeyAB)のインストール

今回はホームディレクトリの下にyoloABというフォルダを作成し、この中にdarknet(AlexeyAB)をクローンします。

~/darknetの下に必要なモデルをダウンロードしておきます。

Makefileを適当なエディタで開きます。

Makefileを以下のように編集して保存します。

.bashにnvccのPATHを設定する

ビルドを実行

makeでビルドを実行します。

ビルドが完了したら以下を入力して
usage: darknet
のように表示されることを確認します。

YOLOの物体検出を行う

今回インストールしたdarknetで物体検出を行う場合、それぞれ以下のようにして実行することができます。

静止画の物体検出を行う

カレントディレクトリを~/darknetに移動しておきます。

静止画の物体検出を行いたい場合はこちらを実行する。

物体検出の結果は「predictions.jpg」として保存されます。

~/darknetフォルダに格納されているdarknet_images.pyを利用する場合は以下のように入力して実行する。

こちらは処理の途中で画像をリサイズしているので縦横比が若干違ってると思います。

デフォルトではyolov4の設定が読み込まれますので、他のモデルで物体検出したい場合は以下のようにパラメータを設定します。

WEBカメラのリアルタイム物体検出を行う

WEBカメラを接続してリアルタイム物体検出を行いたい場合はこちらを実行する。WEBカメラがデバイス1で認識されている場合は「-c 1」に変更して実行する。

かなり重たくなりますが、yolov3を実行する場合はこちらを実行します。

さらに最新のyolov4を実行する場合はこちらを実行します。

darknet_video.pyを利用する場合

darknet_video.pyもそのまま利用したかったのですが、私の環境では動かすことができませんでしたので内容を以下のように編集しました。

~/darknetフォルダに格納されているdarknet_video.pyを利用する場合は以下のように入力して実行する。

こちらは処理の途中で画像をリサイズしているので縦横比が若干違って表示されます。

デバイス1番に接続しているカメラを利用する場合はパラメータで以下のように指定します。何も指定しない場合はデバイス0番のカメラ映像が読み込まれます。「q」ボタンを押すと処理を終了させることができます。

物体検出の結果を動画ファイルに保存したい場合は以下のように実行します。何も指定しない場合は動画ファイルが保存されません。

デフォルトではyolov4の設定が読み込まれて実行されます。他のモデルを利用するときは以下のように指定します。

以上、今回はJetsonNanoにdarknet(AlexeyAB)を入れて物体検出する方法を紹介について紹介させていただきました。