YOLOv8って?
YOLOv8は、YOLOv5の公開元であるUltralytics社が公開しているモデルです。
Object Detection以外にもSegmentation, Classification等のタスクで利用可能。
YOLOv8の論文は未公開と思われる。(出ていないですよね?)
YOLOv8 Architecture
以下の記事を参考に記載する。
Anchor Free Detection
YOLOv8 はアンカーフリーモデルです。
すなわち、既知のアンカーボックスからのオフセットではなく、オブジェクトの中心を直接予測します。
↑YOLOのアンカーボックス
アンカー ボックスは、ターゲット ベンチマークのボックスの分布を表すことはあっても、カスタム データセットの分布を表すことはできないため、以前の YOLO モデルでは非常に扱いにくい部分でした。
↑YOLOv5の検出ヘッド
アンカーフリー検出によりボックス予測の数が削減され、推論後に候補検出をふるいにかける複雑な後処理ステップである非最大抑制(NMS) が高速化されます。
↑YOLOv8の検出ヘッド
New Convolutions
最初の6x6 conv は 3x3 に置き換えられ、メインの構成要素が変更され、C3がC2fに置き換えられました。モジュールは下の図にまとめられています。ここで、「f」は特徴の数、「e」は拡張率、 CBS はConv + BatchNorm + SiLUで構成されるブロックです。
C2f では、 Bottleneck(残差接続を持つ 2 つの 3x3 conv の別名)からのすべての出力が連結されます。
一方、C3 では最後の Bottleneck の出力のみが使用されました。
Bottleneck は YOLOv5と同じですが、最初のconvのカーネルサイズが 1x1 から 3x3 に変更されました。
この情報から、YOLOv8は2015年に定義されたResNet blockに戻り始めていることがわかります。
ネックでは、特徴が直接連結に同じチャネル次元を強制されません。
これにより、パラメータ数とテンソルの全体的なサイズが削減されます。
Closing the Mosaic Augmentation
YOLOv5からYOLOv8への変更点
大きな変更は以下の2つと思われる:
- C2f Layerの導入
- Decoupled head導入とobjectness branchの削除
Ultralytics YOLOv8 Tasks
- Classification
- Object Detection
- Segmentation
- Tracking
- Pose Estimation
Object Detection以外のタスクも行えるが、いったいどんな構成にして可能にしているのか?
※調べる気力がなかったので今回はここで終わり
参考