このまま実行すれば出来る。YOLO v11を使った物体認識の方法教えます。

YOLOとは、物体を検出するときに使用される代表的なアルゴリズムです。「You Only Look Once」という英文の頭文字をとって作られました。ここでは、YOLO v11を使って、物体検出を実行するまでの方法を、この手順のまま実行すればよいレベルまでかみ砕き、説明したいと思います。とりあえず動かしたい。という方にお勧めです。

スポンサーリンク

環境設定

Yolov11を動かすには、次の環境を作る必要があります。環境設定から動作確認まで、このサイトの手順に沿って実施すれば、動かせるように記載しようと思います。

・Python v3.8以上

・Pytorch v1.8以上

私はPythonのv3.10.6で実施しましたので、それで説明していきます。

仮想環境の準備

仮想環境をつくる事は必須ではありませんが、他インストールしているツールやライブラリと分離するために作ったほうが、問題が起きにくいです。

Pythonのインストールは?という方は下記参照お願いします。

まずはコマンドプロンプトを立ち上げ、環境を作りたいディレクトリに移動します。ここでは、「D:\Myprogram\Yolo」に作る事にします。

コマンドプロンプトに下記コマンドを入力

py -3.10 -m venv venv3.10.6-Yolov11

このコマンドの「venv3.10.6-Yolov11」の部分は仮想環境のフォルダ名ですので、好きな名前を付けてください。

実行すると、下記のフォルダが作成されます。

次に作成されたフォルダの中のSctiptフォルダへ移動。

cd D:\Myprogram\Yolo\venv3.10.6-Yolov11\Scripts

次のコマンドを実行。すると、作成した仮想環境の中に入ります。

パスの前に(venv3.10.6-Yolov11)となっている部分が仮想環境になっている証拠です。

activate

一度1つ前の階層に戻ります。

cd ..

PyTouchのインストール

次はPyTouchのインストールです。

ブラウザで次のパスを入力してください。

https://pytorch.org/get-started/previous-versions

お使いのCUDAtoolkitのバージョンの中で、PyTorchのバージョンが1.8以上のものを探します。

私の場合、CUDAToolkitが11.8でしたので、v2.0をインストールしました。PythonとPyTorchのバージョンの互換性もありますので、注意してください。

CUDAToolkitのインストールは下記を参照。

↓の□に囲ったコマンドをそのままコピーして、貼り付けます。

pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118

すると、こんな感じでダウンロードが始まります。結構時間かかりますので、しばらく待ちます。

完了すると、下のようになります。pip関連でWARNINGが出ると思いますが、無視してください。

スポンサーリンク

YOLO v11インストール

それでは、次はYOLOのインストールをしていきましょう。

下記のGitHubへアクセスします。

https://github.com/ultralytics/ultralytics

Code→Download ZIPから本体をダウンロード

解凍します。

解凍したら、前の手順で実行しているコマンドプロンプト(仮想環境内)から、ZIPを解凍して中身が置いてある場所に移動します。

私の環境では下記

インストールするため、下記のコマンドを実行

pip install ultralytics

終わると、こんな感じのメッセージが出てきます。これでインストールは終了。簡単です。

pip関連のワーニングが出ていますが、無視しても構いませんし、アップデートしても構いません。

アップデートしておきます。

python.exe -m pip install --upgrade pip

Visual Studio code インストール

YOLOのプログラムを作成するため、便利なエディタのVisualStudioCodeをインストールしておきます。

下記サイトからダウンロード

https://code.visualstudio.com/docs/?dv=win64user

ダウンロードしたセットアップexeをダブルクリック。

同意するで次へ。その後もずっと次へを押し、インストールしていきます。

完了

YOLOで物体検知のコードを書いてみよう

コードを書く前にまずモデルをダウンロードしておきます。下記サイトへ移動

https://docs.ultralytics.com/ja/models/yolo11/#performance-metrics

検出の中にある、YOLO11n~11xをすべてダウンロード

ダウンロードしたファイルを、YOLOのディレクトリへ移動。

次によく物体認識の例題で使われる画像をダウンロード。下記をクリックすると、bus.jpgがダウンロードできますので、上と同じフォルダへ移動。

https://ultralytics.com/images/bus.jpg

VisualStudioCodeやテキストで次のPythonコードを記入。test.pyという名前で↑と同じディレクトリに保存。

from ultralytics import YOLO

# Load a model
source = "bus.jpg"
model = YOLO("yolo11n.pt")  # load an official model

# Predict with the model
results = model.predict(source, save=True, imgsz=320, conf=0.5)

開いているコマンドプロンプトで、実行します。

python test.py

すると、次のような結果になると思いますので、上記パスのruns/detect/predictフォルダを見てみてください

下のような画像が保存されていれば正解です。

もし実行したときに、

RuntimeError: Numpy is not available

が出た方は、次のコマンドを打ってください。

pip install "numpy<2"

すると、

Successfully installed numpy-1.26.4

が表示されますので、

もう一度、

python test.py

を実行。

モデル毎に結果を比較

先ほどダウンロードしたモデル。下記の下から順に性能が高いモデルです。どのくらい違うのか試してみましょう。

プログラムのモデルの部分を、11nから11xまで順番に変更して結果画像を確認してみました。

from ultralytics import YOLO

# Load a model
source = "bus.jpg"
model = YOLO("yolo11n.pt")  # ← ★ここを11nから11xまで順番に変更して結果画像を確認

# Predict with the model
results = model.predict(source, save=True, imgsz=320, conf=0.5)

■yolo11n.ptの結果

■yolo11s.ptの結果

■yolo11m.ptの結果

■yolo11l.ptの結果

■yolo11x.ptの結果

この画像ではあまり差はありませんでしたが、nに比べてxのほうが認識結果の数値が高い事がわかります。

いろいろ遊べそうですね。

コメント

タイトルとURLをコピーしました