この記事では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となります。
detect | segment | |
yolov8n | 6.1 | 4.2 |
yolov8s | 3.1 | 2.2 |
yolov8m | 1.3 | 0.96 |
yolov8l | 0.77 | 0.61 |
yolov8x | 0.48 | 0.38 |
以上です。