✅
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の設計が必要) |
Discussion