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-devCode language: Bash (bash)

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

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

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

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

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

pip install -U pip wheel gdownCode 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-*.whlCode 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=TrueCode 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

以上です。