YOLOv8 on Jetson Nano

YOLOv8

この記事ではJetson NanoでYOLOv8を動かします。プレビルドされたPyTorch, TorchVisionパッケージを使用します。

事前にJetson NanoにJetpack 4.6(L4T 32.6.1)を導入します。

必要なパッケージをインストールします。

sudo apt update sudo apt install -y python3.8 python3.8-venv python3.8-dev python3-pip \ libopenmpi-dev libomp-dev libopenblas-dev libblas-dev libeigen3-dev libcublas-dev
Code language: Bash (bash)

YOLOv8レポジトリをクローンします。

git clone https://github.com/ultralytics/ultralytics cd ultralytics
Code language: Bash (bash)

venvを使用しPython3.8の仮想環境を作成します。

python3.8 -m venv venv source venv/bin/activate
Code language: Bash (bash)

YOLOv8で指定されていないPythonパッケージを更新します。

pip install -U pip wheel gdown
Code language: Bash (bash)

プレビルドされたPyTorch, TorchVisionパッケージをダウンロードし、インストールします。なおこのパッケージはこちらの記事の方法でビルドされたものです。こちらの記事でもプレビルドされたパッケージを使用しました。

# pytorch 1.11.0 gdown https://drive.google.com/uc?id=1hs9HM0XJ2LPFghcn7ZMOs5qu5HexPXwM # torchvision 0.12.0 gdown https://drive.google.com/uc?id=1m0d8ruUY8RvCP9eVjZw4Nc8LAwM8yuGV python3.8 -m pip install torch-*.whl torchvision-*.whl
Code language: Bash (bash)

YOLOv8のPythonパッケージをインストールします。

pip install .
Code language: Bash (bash)

物体検出を実行します。

yolo task=detect mode=predict model=yolov8n.pt source=0 show=True yolo task=segment mode=predict model=yolov8n-seg.pt source=0 show=True
Code language: Bash (bash)

なお、物体検出はtask=detectでバウンディングボックス、task=segmentでバウンディングボックスとセグメンテーションが表示されます。

YOLOv8はいくつかのモデル(yolov8n, yolov8s, yolov8m, yolov8l, yolov8x)が存在しますが、以下は実際にJetson Nanoで動作させた際のFPSとなります。

detectsegment
yolov8n6.14.2
yolov8s3.12.2
yolov8m1.30.96
yolov8l0.770.61
yolov8x0.480.38
YoloV8 FPS on Jetson Nano
YOLOv8 on Jetson Nano

以上です。