本記事では、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を実行するための手順となります。