オープンイノベーション【オープンイノベーション】vol.42:YOLOv11, YOLOv12をGeForce RTX 4090で動かす

【オープンイノベーション】vol.42:YOLOv11, YOLOv12をGeForce RTX 4090で動かす

 

YOLOv5、YOLOv8の公開元であるUltralytics社から、2024年9月にYOLOv11が、2025年2月にYOLOv12公開されました。

公式によると、YOLOv11はv8と同様に構成され、最先端の精度、スピード、効率によって処理遅延を削減しつつ精度を向上させたモデルとなっています。
一方で、YOLOv12は今までのYOLOとは物体検出におけるメカニズムが変更されました。従来がCNNによる「入力画像を局所的に捉え特徴を抽出する」仕組みであったのに対し、YOLOv12では新たに"Attention機構"による「画像全体を捉え重要な部分に注目する」仕組みを導入したとのことです。

※YOLO=You Only Look Once(見るのは一度だけ)
※CNN=Convolutional Neural Network(畳み込みニューラルネットワーク)

 

vol42_yolo12.png

引用:https://github.com/sunsmarterjie/yolov12

 

ここでは、WindowsにYOLOv11及びYOLOv12の環境を構築し、動かしてみた内容をまとめました。
さらに今回は、GPUとしてGeForce RTX 4090を搭載したPCを使っているので、過去のGPUと比較してどの程度処理速度が変化したのかも比較してみました。

また、公式のドキュメントには環境構築方法や各モードについての詳細が記載されていますので、こちらもご参照ください。

Ultralytics YOLO Docs:https://docs.ultralytics.com/

 

YOLOv11,v12をWindowsで動かす

Ultralytics社が提供するYOLOはpip、conda、Dockerを含む様々なインストール方法を提供しています。
今回は、YOLOv8のときと同様に、Pythonのvenv仮想環境のもとpipによる環境構築を行いました。

 

・必要な環境
Windows or Linux or Docker
Python >= 3.8
PyTorch >= 1.8

・今回構築した環境

OS Windows11 Pro
GPU NVIDIA GeForce RTX 4090
CUDA 12.6
cuDNN 9.8.0 for CUDA 12.6
Python 3.12.9
PyTorch 2.7.0+cu126

 

YOLOv11のインストール

YOLOv12はUltralytics社のYOLOv11環境上で実行できるため、今回の環境構築はYOLOv11の分だけ行います。

YOLOv11のインストールはYOLOv8のときと変わっておらず、Python、PyTorchの環境が整っていれば、あとはultralyticsパッケージをインストールするだけで準備完了となります。
もちろんPython以外にも、前述の通りDocker、Anacondaで利用することもできます。

ultralytics パッケージ:https://pypi.org/project/ultralytics/

【コマンド】
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
pip install ultralytics

 

インストール完了後、動作確認のために元々用意されているMS COCOモデルで画像を検出してみました。
コマンドを実行すると、modelで指定している"yolo11n.pt"ファイルが自動でダウンロードされ、処理が開始されます。

【コマンド】
yolo predict model='model\yolo11n.pt' source='https://ultralytics.com/images/bus.jpg'

vol42_yolo11_01.png

 

独自データで学習をやってみる

YOLOv11、v12ではモデルサイズが異なるn, s, m, l, xの5パターンのモデルが用意されています。
パターンによって検出精度や処理速度が異なるので、目的に沿ったモデルを選択する必要があります。

今回は学習の処理時間比較ため、処理速度と精度がかけ離れたnモデル、xモデルの2種類に対し、独自データによるモデル作成を行いました。

 

学習データの準備

YOLOでは、学習用の画像と併せてアノテーション情報(YOLO形式テキストファイル)が必要となります。
また、これらデータセットの設定ファイルとしてyamlファイルを準備します。
yamlファイルにはクラス名、訓練セット、検証セットのパスなど、データセットの構造を記述しておきます。

・学習時パラメータ
画像数:(train)110枚+(test)55枚
クラス数:4
batch_size=16 ※32だと途中停止
image sizes=640
epoch=200   ※デフォルトは100

上記以外のパラメータ詳細はこちらで確認できます。
https://docs.ultralytics.com/ja/modes/train/#train-settings

 

学習の処理時間

同じ学習データ、パラメータを用いても、モデルのパターンによって学習時間は大きく変動します。
下記はYOLOv11とYOLOv12のn、xモデルに対し、同じ学習データ・パラメータのもと学習したときの処理時間です。

学習時間(epoch=200) 1epochの処理時間
YOLO11n 6分52秒 2.06秒
YOLO11x 18分5秒 5.43秒
YOLO12n 7分49秒 2.35秒
YOLO12x 53分31秒 16.06秒

vol42_yolo11_02.png

yolo11nとyolo12nはそれほど処理時間は変わりませんが、yolo11xとyolo12xとでは処理時間が約3倍と大きく差があります。
また、それぞれnモデルよりxモデルの方が学習にかかる時間は長くなります。

 

検出速度の比較

YOLOv11とYOLOv12の差

YOLOv11とYOLOv12とで、まったく同じ動画(4K動画、2K動画)をMS COCOモデルで検出したときの処理速度を比較してみました。

 

vol42_yolo11_03.png

2K動画、4K動画のどちらの場合も処理速度はほぼ同等となりました。
検出数にもよるので一概には言えませんが、4K動画を処理するのであれば、動画の長さの約4.5倍の時間で処理できます。

 

補足情報

Ultralytics社のYOLO環境では、画像1枚につき1つのYOLO形式のテキストファイルでアノテーション情報が出力されます。
ただし、テキストファイルでの出力はオプション"save_txt"、"save_conf"で設定する必要があるので、注意してください。

 

GPUによる比較

GPUの異なるPC上にUltralytics社のYOLO環境を構築したうえで、まったく同じ動画・画像をMS COCOモデルで検出したときの処理速度を比較してみました。
4K静止画、4K動画、2K動画に対しての処理時間は下記のグラフのようになりました。

 

vol42_yolo11_04.png

4K静止画、4K動画ではRTX3090の処理が最も速く、2K動画の処理はRTX2080が速いという結果になりました。
2K動画についてはRTX3090もほぼ同等の速さで処理できます。

また、GPUに関係なく、最も処理に時間がかかるのは4K静止画で、2K動画は4K動画の2~3倍の速度で処理できることがわかります。
リアルタイム検出を行うのであれば、2K動画で処理した方がいいと考えられます。

 

まとめ

結論:
・学習の処理時間はYOLO11の方が速い
・YOLO11、YOLO12の動画における検出速度はほぼ同等
  2K動画は4K動画の約2倍の速度で処理できる
・同じYOLOでもGPUによって処理速度が異なる
  今回の検証では4K静止画、4K動画においてRTX3090の処理が最も速い
  RTX4090は次点で処理が速いが、RTX3090と約1.5倍の差がある
  ※RTX4090がまだ本気を出していない(YOLOの方の対応?)

 

▼この記事を書いたひと

R&Dセンター 野原 佐知世

R&Dの画像処理、ディープラーニングを担当。360°パノラマ、機械学習などシステム、画像処理を中心に活動しています。

 

おすすめの関連記事


機械学習・AIの最新記事


お問い合わせ

ご意見・ご質問などお気軽にお問い合わせ下さい。
ナカシャクリエイテブ株式会社

●富士見事務所 TEL : 052-228-8744(交通部営業課) FAX : 052-323-3337(交通部共通)
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711  地図

PoCのお問い合わせ:交通部営業課
技術的なお問い合わせ:R&Dセンター

Email:メールでのお問い合わせ