Jetson NanoでYOLOv5を使って物体検出する方法

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

今回はJetson NanoでYOLOv5とPyTorchを使って物体検出をする方法を解説したいと思います。Jetson Nanoに対応しているJetPackの最新バージョンで使用できるものとなっていますので、ぜひ参考にしてみてください。

また、Jetson Nanoに関する記事を以下のページでまとめていますので、あわせてご覧ください。

目次

環境

ハードウェア:Jetson Nano A02 4GB
JETPACK SDK:4.6.2
Python:3.6.9

Jetson Nanoの本体については、私が使用しているモデルは旧モデルのA02ですが、これから購入される方はインタフェースなどが増えているB01モデルがおすすめです。

NVIDIA
¥27,993 (2024/04/25 10:21時点 | Amazon調べ)
著:Jetson Japan User Group, 著:からあげ, 著:北崎 恵凡, 著:古瀬 勉, 著:鶴長 鎮一, 著:中畑 隆拓
¥2,997 (2024/04/21 10:28時点 | Amazon調べ)

インストール

Jetson NanoのJetPack上でYOLOv5をセットアップする手順を解説していきます。
手順はez_teraさんの以下の記事を参考にさせて頂きました。

エディタのインストール

設定ファイルを編集するためのnanoエディタをインストールします。(インストール済みの方は飛ばしてください)
以下のコマンドを実行してください。

sudo apt install nano

スワップ領域の設定変更

Jetson Nanoではメモリーが4GBしかないため、メモリーが不足した際にSDカードをスワップ領域としてしようできるようにします。スワップ領域を変更するためのツールを以下のコマンドでインストールします。

sudo apt install dphys-swapfile

インストールしたら以下のコマンドを実行して、エディタで設定ファイルを開きます。

sudo nano /etc/dphys-swapfile

「CONF_SWAPSIZE」と「CONF_MAXSWAP」の行を以下のように変更してください。(コメントアウトされている場合は#を削除してください)

CONF_SWAPSIZE=4096
CONF_MAXSWAP=4096

OpenCVのインストール

続いて画像処理ライブラリ、OpenCVをダウンロードしてビルドします。任意のフォルダに移動して以下のコマンドを実行してください。

sudo wget https://github.com/Qengineering/Install-OpenCV-Jetson-Nano/raw/main/OpenCV-4-5-0.sh

ダウンロードが完了したら、以下のコマンドを実行してパーミッションを変更します。

sudo chmod 755 ./OpenCV-4-5-0.sh

以下のファイルを実行してビルドします。(かなり時間がかかりますので気長に待ってください)

./OpenCV-4-5-0.sh

PyTorchのインストール

続いてYOLOv5での推論に使用する機械学習ライブラリをインストールします。META社が公開しているPyTorchをインストールします。
任意のディレクトリに移動し、以下のコマンドを実行して必要なファイルをダウンロードします。

sudo wget https://nvidia.box.com/shared/static/cs3xn3td6sfgtene6jdvsxlr366m2dhq.whl -O torch-1.7.0-cp36-cp36m-linux_aarch64.whl

以下のコマンドを実行し、必要なツールをインストールします。

sudo apt install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython
pip3 install numpy torch-1.7.0-cp36-cp36m-linux_aarch64.whl

torchvisionのインストール

PyTorchで使用するパッケージ、torchvisionをインストールします。以下のコマンドを実行してください。

sudo git clone --branch v0.8.1 https://github.com/pytorch/vision torchvision

ダウンロードしたディレクトリに移動し、セットアップスクリプトを実行します。

cd torchvision
export BUILD_VERSION=0.x.0
sudo python3 setup.py install
cd

YOLOv5のインストール

最後にYOLOv5をインストールします。任意のインストールディレクトリに移動し、以下のコマンドを実行してリポジトリをダウンロードしてください。

sudo git clone https://github.com/ultralytics/yolov5.git

インストールするパッケージのリストを編集します。以下のファイルをエディタで開いてください。

sudo nano requirements.txt

これまで個別にインストールした、以下のツールの行をコメントアウトしてください。

#opencv-python>=4.1.2
#torch>=1.7.0
#tensorboard>=2.2
#torchvision>=0.8.1

以下のコマンドを実行して、インストールを行います。

pip3 install -r requirements.txt

これでYOLOv5を使用する環境のセットアップは完了です。

推論を実行する(動作確認)

YOLOv5のディレクトリで「detect.py」を実行して、サンプルで用意されている画像を使って推論を行います。以下のコマンドを実行してください。

sudo python3 detect.py

発生したエラー

私の環境では「detect.py」を実行すると以下のようなエラーが発生しました。

Illegal instruction (コアダンプ)

調査したところCPU命令セットの違いによる可能性があるということで、以下の環境変数の設定を行えば解消されるという情報があったため試してみました。

export OPENBLAS_CORETYPE=ARMV8

私の環境ではこれでも解消されなかったため、さらに調査したところNumPyにバグがあるとの情報が見つかりました。(以下のサイトを参考)

NumPyを最新の1.19.5からバグのない=1.19.3のバージョンに変更します。以下のコマンドを実行してインストールします。

sudo pip3 install numpy==1.19.3

これで私の環境ではエラーが解消されました。
ちなみにNumPy 1.19.4はまた別のバグがあるようです。

NVIDIA
¥27,993 (2024/04/25 10:21時点 | Amazon調べ)

実行結果

再度「detect.py」を実行すると以下のように無事推論が終了しました。

Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients, 16.4 GFLOPs
image 1/2 /home/xxxx/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, 133.2ms
image 2/2 /home/xxxx/yolov5/data/images/zidane.jpg: 384x640 2 persons, 2 ties, 108.1ms
Speed: 33.7ms pre-process, 120.6ms inference, 196.2ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs/detect/exp

「runs/detect/exp」を確認すると以下のように推論結果が描画されたファイルが正しく出力されていました。

bus.jpg
zidane.jpg

プログラミングのスキルを活かすには

プログラミングのスキルを仕事に活かすには、フリーランスとして受けられる案件がおすすめです。

テックゲートフリーランスは、フリーランスエンジニアの案件紹介や契約交渉・債権管理などのサポートを行っているフリーランスエージェントです。

テックゲートフリーランスのココがおすすめ
  • リモートワーク可能な案件が50%以上
  • 週3〜4日の案件の豊富さ
  • 年収100万円アップのサポート

無料相談フォームからご登録いただくだけで、経験年数やスキルに合わせて案件をご紹介また、リモートワーク可能な案件や週3〜4日OKの案件も豊富に用意されています。

副業やフリーランスとして仕事を受けてみたいと考えている方には、テックゲートフリーランスが提供する多様なサポートが非常におすすめです。

無料で登録してみる!

まとめ

今回はJetson NanoでYOLOv5を使って物体検出を行う方法を解説しました。Jetson NanoでもYOLOv5が使えるようになったことによって、PCでの環境とソースを共有できそうです。JetsonでYOLOを使ってみたい方はぜひ参考にしてみてください。

機械学習を効率よく学びたい方には、自分のペースで動画で学べるUdemyの以下の講座がおすすめです。数学的な理論からPythonでの実装までを習得できます。(私自身もこの講座を受講しています)

icon icon 【徹底的に解説!】人工知能・機械学習エンジニア養成講座(初級編~統計学から数字認識まで~) icon


それでは、また次の記事でお会いしましょう。

\ 機械学習を学びたい人には自宅で学べるUdemyがおすすめ! /

講座単位で購入できます!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次