本記事では、Ubuntu 22.04でYOLOv8を使用した画像認識の手順について解説します。
使用した環境
OS: Ubuntu 22.04
言語: Python 3
YOLOの種類: YOLOv8
必要なパッケージのインストール
以下の手順で必要なパッケージをインストールします。
インストールされているパッケージを最新の状態に更新します。
sudo apt update
sudo apt upgrade
Python 3とpipをインストールします。
sudo apt install -y python3 python3-pip
YOLOv8とOpenCV(Python)をインストールします。
pip3 install ultralytics opencv-python
サンプルプログラム
以下のサンプルコードは、YOLOv8を用いて画像内の物体を検出するプログラムです。指定した画像を読み込み、YOLOv8によって検出された物体を矩形(四角)で囲み、結果の画像を表示します。
from ultralytics import YOLO
import cv2
import pathlib
# モデルのロード(モデルがない場合は、初回実行時に自動的にダウンロードされます)
model = YOLO('yolov8n.pt')
# 画像の読み込み
image_path = pathlib.Path("~/test.png").expanduser() # 画像のパスを指定
image = cv2.imread(image_path)
# 物体検出の実行
results = model(image)
# 検出結果の描画
annotated_image = results[0].plot()
# 結果の表示
cv2.imshow('Detected Image', annotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

図 1 テスト画像
サンプルプログラムの実行
サンプルプログラムをyolov8test.pyのファイル名で、画像をtest.pngのファイル名でホームディレクトリに保存します。
ホームディレクトリで以下のコマンドで実行し、画像認識を行います。初回実行時は、モデルの読み込みに時間がかかります。指定したモデル(ここではyolov8n.pt)がプログラムと同ディレクトリにない場合は、自動的にダウンロードされます。
python3 yolov8test.py
python3 yolov8test.py
0: 448x640 2 persons, 203.4ms
Speed: 6.2ms preprocess, 203.4ms inference, 1.4ms postprocess per image at shape (1, 3, 448, 640)

図 2 テスト画像の結果表示
画像から人を検知し、検知した人を四角で囲み、結果を表示します。[person]が認識した物体の種類を表し、数字は認識の信頼度を表しています。結果の画像はESCキーで閉じることができます。
以下はプログラムを実行したときに発生したエラーとその対処法となります。この手順を試すときにエラーが発生したら以下を参考にしてください。
【エラー内容】
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
上記エラーは、OpenCVが必要とするライブラリが不足している場合に発生します。以下のコマンドで必要なライブラリをインストールします。
sudo apt install -y libgl1-mesa-glx
【エラー内容】
AttributeError: module 'numpy' has no attribute 'core'
インストールされているnumpyのバージョンがYOLOv8と互換性がない場合に発生します。以下のコマンドでnumpyのバージョンアップをします。
pip3 install --upgrade numpy
【エラー内容】
ModuleNotFoundError: No module named 'psutil'
ultralyticsは内部で psutil を使用しており、これがインストールされていない場合に発生します。以下のコマンドでpsutilをインストールします。
pip3 install psutil
いかがだったでしょうか。
以上が、Ubuntu 22.04環境でYOLOv8を実行するための手順となります。