MLエンジニアへの道 #50 - YOLOv11

Last Edited: 4/1/2025

このブログ記事では、コンピュータビジョンにおけるYOLOv11(YOLOv8)について紹介します。

ML

前回の記事では、物体検出(および個別セグメンテーション)の問題定義、評価指標、そしていくつかの二段階物体検出器について議論し、 一段階検出器についても簡単に触れました。一段階検出器のアプローチはこれだけではありませんが、 YOLO(You Only Look Once)モデルのシリーズは様々な工夫により物体検出において最先端の性能を達成しています。 そこで本記事では、2024年9月に発表された最新のYOLOモデルの一つであるYOLOv11とそのアプローチについて解説します。

YOLOv8

YOLOv11のアーキテクチャとアプローチはYOLOv8と類似しているため、まずYOLOv8について理解することから始めることができます。 YOLOv8はアンカーフリーアプローチを採用しており、事前定義されたアンカーボックスを調整するのではなく、直接バウンディングボックスを推論します。 異なるサイズと比率のボックスを生成できるようにするため、異なるレベルの特徴から異なるスケールのボックスを予測するための複数のヘッドを設定しています(詳細は後述)。 このアプローチにより、極端なサイズやアスペクト比を持つ物体も予測できる、よりシンプルで堅牢なボックス予測が可能になりました。 以下はYOLOv8で使用される基本的な構成ブロックを示しています。

YOLOv8 Blocks

Convブロックは最も一般的なブロックで、畳み込み層、バッチ正規化層、そして SiLU(Sigmoid Linear Unit)活性化関数 を使用しています。 SiLUはx×sigmoid(x)x \times \text{sigmoid}(x)によって計算され、滑らかで連続的、微分可能な活性化を提供し、 "dying ReLU"問題(ニューロンが常にゼロを出力する状態に陥る)に悩まされるReLUと比較して、より表現力の高い勾配を持っています。 ゼロ付近での勾配が安定しており、バッチ正規化と相性が良いため、計算コストが高いにもかかわらず、物体検出のための活性化関数として高い人気を誇っています。 ボトルネックブロックはResNetブロックと同様に深いモデルのトレーニングに役立つスキップ接続を持ち、これらはオンまたはオフに切り替えることができます。

YOLOv8

これらの基本ブロックを使用して、YOLOv8はC2F(Cross Stage Partial Focus)ブロックを構築します。 ここでは、Convブロックからの出力が半分に分割され(チャンネルが分割される)、特徴マップの様々な特徴を分析するための一連のボトルネックブロックに送られ、 最終的に連結されて最後のConvブロックを通過します。また、SPPF(Spatial Pyramid Pooling - Fast)ブロックも利用しており、 異なるカーネルサイズの複数の最大プーリング層を使用し、それらの結果を連結して異なる解像度の特徴を組み合わせます。 これらのブロックを使用して構築されたアーキテクチャは、バックボーン、ネック、ヘッドで構成されています。

バックボーンは複数のスケールにわたって特徴を抽出し、効率的に3つの異なる解像度の特徴マップを生成しようとします。 これらの特徴マップはさらに処理され、ネックで連結されます。3つの異なるスケール(一般にP3、P4、P5と呼ばれる)の豊富な特徴は、 クラスとバウンディングボックスのサイズを直接予測する3つのヘッドに渡されます。アーキテクチャの工夫の他にもトレーニングをさらに強化するために、 モザイク拡張 のようなテクニックも採用されています。これは初めに複数の画像を1つの画像に組み合わせて、 より堅牢なトレーニング信号を作成し、初期学習を促進します。その後、時間の経過とともにこのモザイク拡張への依存を徐々に減らし、 より細かい調整と現実的な画像データとの整合性を向上させます。

YOLOv11

YOLOv11のアーキテクチャとアプローチはYOLOv8と非常に類似していますが、若干の修正があります。 まず、C2FブロックはC3K2ブロックに置き換えられており、これは2つ以上のC3Kブロックを含んでいます。 C3KブロックはC2Fブロックと非常に似ていますが、特徴を分割せず、効率性のために小さなカーネル(3x3)を使用します。 また、C2PSA(Cross Stage Partial with Spatial Attention)ブロックも導入されており、 SPPFブロック後の小さな特徴マップに対して空間的アテンションのためのkqvアテンションを適用します。 以下はYOLOv11のブロックとアーキテクチャの詳細です。

YOLOv11

注意機構を含む新しいブロックの導入により、YOLOv11は先行モデルの中で優れたモデルとなりました。 最大モデルではCOCOに対して約0.55 mAP@0.5:0.05:0.95を達成し、比較的低いレイテンシ(約12ms/img)を実現しています。 (より詳細な比較は、記事の最後に引用されているUltralyticsの公式ウェブサイトから確認できます。) 練習のために、Rao, N. S.(2024)が示すように、PyTorchを使用してブロックと全体のモデルを実装してみることをお勧めします。

非最大抑制

これまで説明してきた物体検出モデルは、さまざまな確信度を持つ多数の固定された境界ボックス予測を生成します。 これにより、同じ物体に対して品質の低い重複した予測が生じることがあります。これらの冗長なボックスを排除するために、 非最大抑制(NMS)を使用します。NMSは、任意のIoUしきい値(0.5など)を使用して、 同じオブジェクトクラスを予測するボックスのクラスターを特定し、各クラスター内で最も確信度の高いボックスのみを保持します。

したがって、YOLOモデルでさえも推論時には完全にエンドtoエンドではなく、特に複数のクラスを扱う場合にはNMSの影響を受けます。 クラスや位置に関係なく、確信度の低いボックスを事前に削除することで、NMSに必要な計算量をある程度削減することができますが、 重なっている同じカテゴリの物体を検出する際に、NMSはパフォーマンスに悪影響を与えてしまいます。 そこで、最近の研究では、物体検出モデルからNMSを完全に取り除く可能性が探求されており、これについては次の記事で説明します。

結論

本記事では、YOLOv8とYOLOv11を紹介しました。どちらも一段階検出器でアンカーフリーアプローチを採用しており、 事前定義されたアンカーボックスに依存する代わりに、異なるスケールに対して複数の検出ヘッドを使用しています。 しかし、膨大な研究努力と分野の非常に急速な進歩により、現時点ではすでに最先端モデルではなくなっています。 そこで、今後の記事ではより高度なモデルについて取り上げる予定です。

リソース