物体検出
物体検出は各予測インスタンスにクラス、スコア、境界ボックスを出します。同じクラスでも場所は異なります。スコアのフィルタは弱い候補を除き、非最大値抑制は重複らしい枠を除きます。スコア閾値を上げると候補を多く拒否しますが、重なり閾値を上げると重複を多く許容します。
枠は「ここに猫がいそうだ」という付箋です。二枚が同じ猫を指すなら一枚を除けますが、別の猫の唯一の付箋を除くと見逃しです。枠を消しても写真の猫は消えません。
出力と後処理
分類器は一画像や切り出しにクラスのスコアを出し、検出器は各個体の位置も出して、レコード数は可変です。二つの cat が二匹を正しく指す場合もあり、クラス名だけでは重複と判断できません。
本課は Torchvision の SSDLite320、MobileNetV3 バックボーン、COCO 重みの一回の予測記録です。320×320 RGB を受け、特徴、クラススコア、枠のオフセットを求め、矩形へ復号します。学習が特徴・種類・位置の関係を作り、その後の閾値変更は再学習ではありません。モデル説明を参照してください。
枠は対角 (x1,y1)、(x2,y2) で、1280×853 元画像の画素座標へ戻しています。x は右、y は下へ増えます。矩形は動物の輪郭ではなく、輪郭の予測は領域分割です。
スコアのフィルタ
候補は閾値より厳密に大きいスコアで通過します。0.50 なら 0.33 は拒否、0.98 は通過です。元スコアや座標は変えず、資格だけを変えます。似た複数枠が高分になるため、スコアは正しさ、一意性、位置精度を保証しません。
IoU
IoU = 共通面積 / (A の面積 + B の面積 − 共通面積)
共通分を引いて二重計上を防ぎます。離れた枠は 0、同一枠は 1。別の物体でも枠は重なり、IoU は矩形の重なりであって個体識別ではありません。
貪欲な非最大値抑制
NMS は保留中の最高スコアを残し、それと同クラスで IoU が閾値を超える低スコア候補を抑制し、残る最高候補で繰り返します。保留は未決定、抑制は出力から除外です。ハード NMS は既存枠を選び、座標平均や形の融合をしません。Torchvision NMSと同じ比較規則です。
スコア閾値を上げると高スコアを要求し、IoU 閾値を上げると抑制により大きな重なりを要求します。方向を取り違えないでください。
ステップ実行
写真には並ぶ二匹の猫がいます。NMS 前の スコア 0.20 超の全 31 前景候補を記録しています。0.20 は記録範囲の下限で、検出一般の限界ではありません。既定はスコア 0.50、IoU 0.50。別名は同じ元予測を指し続けます。
| 候補 | クラス | スコア | 場所 |
|---|---|---|---|
| A | cat | 99.3% | 右の猫 |
| B | cat | 98.6% | 左の猫 |
| C | cat | 97.8% | A とほぼ同じ右猫の枠 |
| U | bench | 33.1% | 弱いモデル予測 |
- A の記録:元座標は約
(639.2,161.4)から(1200.8,731.5)。99.3% は別の項目で、猫の 99.3% を覆うという測定ではありません。 - スコア選別:31 中 17 が通過。U は拒否されても A、B、C は通り、重複は残ります。
- A を残して C と比較:共通面積約 317,207 px²、和集合約 325,699 px²、
IoU ≈ 0.9739 > 0.50。同じ cat なので C を抑制し、A の座標は変えません。 - A と B:
IoU ≈ 0.0402は 0.50 を超えず、B は保留です。まだ次の保持候補に選ばれたわけではありません。 - A の残る比較:さらに八候補を抑制します。次に B が保留中の最高となり、保持して周囲の六候補を抑制します。反復場面はまとめても、各除外は計算され理由を持ちます。
- 結果:異なる位置の同クラス A、B の二件です。NMS の 15 除外と、先のスコアによる 14 拒否は別に数えます。
- スコアだけ 0.99 へ:B の 98.6% は通らず一枠になりますが、猫は二匹のままです。
- スコアを 0.50 へ戻し、IoU だけ 0.90:A、B、P の三枠です。P は右猫の重複です。最後は既定の二枠に戻し、両比較も保持します。モデルは変わっていません。
閾値と診断
| スコア閾値 | IoU 閾値 | 出力 | 意味 |
|---|---|---|---|
| 0.50 | 0.50 | A、B | 各猫に一枠 |
| 0.99 | 0.50 | A | B がスコア不足で一匹を見逃す |
| 0.50 | 0.90 | A、B、P | 重なり許容を緩めて重複が残る |
| 0.50 | 0.00 | A | 少しでも同クラスで重なると抑制し B を失う |
| 0.30 | 0.50 | A、B、U | 弱い bench 予測も残る |
| 1.00 | 0.50 | なし | 1 を厳密に超えるスコアはない |
一画像での測定で、配備推奨値ではありません。代表的なラベル付き画像で見逃しと誤検出の費用を比べ、一項目ずつ変えます。近い別物体の枠も重なるため強い抑制は誤除外し、重複でも IoU が低ければ残ります。
欠けた枠はまず選別前の候補を見ます。低スコアならスコア閾値、通過後に高スコア同クラスへ抑制されたなら NMS です。スコアを下げても、既に通過して NMS で消えた枠は救えません。どちらもモデルが出さなかった枠を作れません。
重複なら対の IoU を調べます。IoU 閾値を下げるとその対を抑制しやすくなっても、隣の物体も失いえます。「Too much suppression」の 0.00 は A/B の小さな重なりで B を除きます。
後処理の費用
n 候補のスコア選別は O(n)、ソートは O(n log n)、素朴な貪欲 NMS は最悪 O(n²)、作業リストは O(n) 空間です。ネットワーク推論は別費用です。本プレイヤーは最大 31 候補で、実際はさらに多くなりえます。
境界ケース
- 空出力:物体がない証拠ではありません。閾値変更は既存記録の生存だけを変えます。
- 閾値と同じ:同じスコアは拒否し、同じ IoU は抑制しません。両方とも厳密比較です。
- 異なるクラス:クラス別 NMS は跨クラス重複を抑制せず、同じ領域に矛盾するラベルを残す場合があります。
- 同一枠:同クラスで IoU 閾値が 1 未満なら低スコアを除きます。閾値 1 では完全同一も残ります。
- 同点:本課は元 ID で順序を決めます。他の実装や装置では違う選択になりえます。
- 最大密度:スコア 0.20、IoU 1.00 では全 31 を残します。表は活動候補付近の最大六行、または最終先頭六行と範囲・総数を示しますが、計算は全候補を使います。
よくある間違い
- 枠数を物体数と数える。一匹に複数枠、別の一匹にゼロもあり、ラベルと照合します。
- クラスのスコアを位置精度と読む。高分でも位置は不完全になりえます。
- 同じクラスだから全部まとめて除く。二匹には二レコードが必要で、同類は比較条件にすぎません。
- NMS が角を修正したり A と C を平均すると期待する。ハード NMS は既存予測を選びます。
- 全検出器が同じ重複除去処理を使うと思う。ここでは SSDLite とクラス別貪欲 NMS です。
モデルの範囲と出典
一写真、一学習済み検出器、スコア 0.20 超の記録を使います。学習、特徴の詳細、アンカー回帰、校正、追跡、領域分割、データ集合全体の評価は省略します。モデルはオフラインで実行し、ブラウザは変更していない予測へ二閾値を再計算します。反復比較は表示上まとめます。
脚を交差して座る二匹の猫は Irshath 25 作、CC0 です。生成器とメタデータは画像・モデルのハッシュと実行環境版を保ちます。画像分類と混同行列で、入力仕様、予測、正解の区別も確認できます。
続けて学ぶ
同じ手法につながるレッスンや、次の概念への入口です。
鍵マークのあるレッスンの操作には有料アクセスが必要です。解説はすべて無料で読めます。
誤りや気になる点を見つけましたか? フィードバックを送る。