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のほうが認識結果の数値が高い事がわかります。
いろいろ遊べそうですね。
コメント