FCOS

に公開

はじめに

概要

  • シラバス:E資格2024#2
  • FCOSモデルを勉強する

キーワード

FCOS, アンビギュアスサンプル, センターネス, FPN

学習内容

FCOS(Fully Convolutional One-Stage)

  • アンカーもバウンディングボックスの事前設定も使わない「アンカーフリー」な1ステージ物体検出モデル

アンカーの問題点

  • アンカー設計が面倒
  • チューニングが必要
  • アンカーが多いと非効率

FCOSのやり方

  • 画像を特徴マップに変換し、各ピクセルが「物体の一部かどうか」を直接学習して、該当ピクセルから バウンディングボックス(上下左右の距離)を予測
  • 複数のアンカーボックスを使用しないため、より多くのポジティブサンプルを得て不均衡の発生を低減した
  • アンカーボックスのアスペクト比の調整は不要

処理の流れ

入力画像
   ↓
CNN(ResNetなどのバックボーン)
   ↓
特徴マップ(FPN)
   ↓
各ピクセルごとに:
  ・クラス分類
  ・左上右下の距離予測(ボックス回帰)
  ・センターネススコア
   ↓
Non-Maximum Suppression(NMS)
   ↓
検出結果(クラス+バウンディングボックス)

アンビギュアスサンプル(Ambiguous Sample)

  • ラベル付けや分類が曖昧で、人間やモデルにとって判断が難しいデータのこと
  • 明確に「これはAだ」と言い切れないような、あいまいなデータ
  • 例:
    • イヌとオオカミの境界が曖昧な画像(影が強くて判断困難)
    • 猫とタヌキのように外見が似ている動物の画像
    • スパムか正常か判定しづらいメール
    • 感情分類で、「嬉しい」か「悲しい」か両方が含まれるような文

FCOSとアンビギュアスサンプル

FCOSは、画像の各ピクセルに対して:

  • 「これは物体か?」(分類)
  • 「この位置から上下左右にどのくらい距離があるか?」(回帰)
  • 「物体の中心に近いか?」(centerness)
    という情報を予測する

ただ、物体の端に近いピクセルでは:

  • 背景に近い → モデルが「これは物体?それとも背景?」と迷う
  • 複数物体の境界 → 「このピクセルはどの物体に属するのか」が不明確

FCOSでは、物体の「中心に近いほど信頼度が高い」と仮定して、曖昧なピクセル(=アンビギュアスなサンプル)を抑えるための仕組み(centerness)を用意した

センターネス(centerness)

  • 物体の中心に近いピクセルほど高いスコア
  • 背景や物体の端での誤検出を減らす工夫
課題 アンビギュアス性の影響
小さい物体の検出 解像度不足+境界不明確で、分類があいまいに
重なり合った物体の検出(密集) どのピクセルがどの物体に属するか不明確
ラベルノイズ 教師データでの誤ラベルがあいまいさを増す

Feature Pyramid Network(FPN)

  • 画像の「大きい物体」も「小さい物体」も同時に検出できるように、複数の解像度の特徴をうまく統合するネットワーク構造
  • 画像は大きな物体(例:人全体)と小さな物体(例:顔)が混在している
    • 通常のCNNでは、深い層に行くほど、特徴は抽象的になるが、解像度は小さくなり、小さな物体が失われる
    • FPNはこの問題を解決する

FPNの構造

主に2つの流れで構成されている
1. Bottom-up(通常のCNN)

  • 入力画像を下に向かって処理(ResNetなど)
  • 各レイヤーで解像度が小さくなっていく
  • 各段階の特徴(C2, C3, C4, C5)を記録

2. Top-down(逆方向の流れ)

  • 一番深い層(C5)からスタート
  • 上の層に向かってアップサンプリング(例:2倍に拡大)
  • 一つ上の「浅い層の特徴(解像度が高い)」と足し合わせ(融合)する→ 各スケールで「高レベル+高解像度の特徴」を得られる
  • 結果的に得られる「ピラミッド構造」
レイヤー 解像度 対応する特徴マップ(例)
P2 1/4サイズ 小さい物体
P3 1/8サイズ 中くらいの物体
P4 1/16サイズ 大きい物体
P5 1/32サイズ より大きい物体


出典:
Sik-Ho Tsang, Review: FPN — Feature Pyramid Network (Object Detection)(2019), https://sh-tsang.medium.com/review-fpn-feature-pyramid-network-object-detection-262fc7482610

FCOSとYOLO/SSDの比較

比較項目 FCOS YOLO/SSD
アンカー 不要(アンカーフリー) 必要(事前に定義が必要)
センターネス 導入(精度改善) 無し
実装の簡単さ シンプル 複雑(anchor boxの設計が必要)
GitHubで編集を提案

Discussion