Hard Negative Mining
hard negative miningが紛らわしい負例を特定し、YOLOモデルのトレーニングを改善することで、コンピュータービジョンにおける偽陽性を削減する仕組みを学びます。
ハードネガティブマイニングは、モデルが通常よりも確信を持ってしまうネガティブ例を特定し、学習中にそれらへより大きな注意を向ける学習データ戦略です。ネガティブ例は対象クラスに属しませんが、ハードネガティブはポジティブ例に非常によく似ているため、高いスコアや誤検出、または近接した埋め込みを生成します。簡単な背景例をモデルに繰り返し提示する代わりに、こうした混同しやすいケースに集中することで、ハードネガティブマイニングは決定境界を明確にし、誤検出を減らせます。
ハードネガティブマイニングの仕組み#
このプロセスは通常、代表的な学習データでベースラインモデルを学習することから始まります。次にモデルは、ラベルなしの本番画像、ネガティブ例のみのシーン、各学習バッチ内の例など、より大規模な候補プールを評価します。ネガティブであるにもかかわらず高いポジティブスコアを受け取った候補は、レビューと今後の学習のために選択されます。
何を「ハード」とみなすかは、タスクによって異なります。
- 物体検出では、検出器が背景領域を対象物体と誤認した場合、その領域はハードです。
- 分類では、対象クラスに対して高い信頼度が割り当てられた誤クラスの例です。
- 検索またはメトリック学習では、埋め込み空間でクエリの近くにランク付けされた無関係なアイテムです。Googleの推薦モデル向けネガティブサンプリングに関するガイダンスでは、勾配に大きな影響を与える高スコアのネガティブアイテムとしてハードネガティブを説明しています。
- トリプレット学習では、ネガティブが対応するポジティブと比べてアンカーに近すぎる位置に現れます。PyTorch TripletMarginLossのドキュメントでは、相対的な類似度の学習に使用されるアンカー・ポジティブ・ネガティブの構造を説明しています。
マイニングは、モデルを大規模なデータセット全体に定期的に実行するオフライン方式でも、現在のミニバッチから難しいネガティブを選択するオンライン方式でも実行できます。Kerasのハードネガティブマイニングレイヤーは、候補ロジットに基づくクエリごとの選択例を提供します。
ハードネガティブが重要な理由#
ほとんどのネガティブ例は簡単です。たとえば、何もない空がフォークリフト検出器を混乱させる可能性は低いでしょう。モデルがこのような例を正しく分類できるようになると、そこから得られる有用な学習シグナルはほとんどありません。ハードネガティブは、モデルが誤って解釈した視覚的特徴や意味的特徴を正確に明らかにします。
誤警報によって適合率が低下する場合、特に価値があります。適合率・再現率分析は、scikit-learnの適合率・再現率ガイドで示されているように、再学習によって許容できない再現率の低下を引き起こさずに誤検出を実際に減らせるかどうかを判断するのに役立ちます。
ハードネガティブマイニングは、関連する手法とは異なります。
- ネガティブサンプリングはすべてのネガティブ例から扱いやすいサブセットを選択します。一方、ハードネガティブマイニングは最も混同しやすい例を優先します。
- **アクティブラーニング**は通常、ポジティブの可能性がある例も含め、人手によるラベリングのために不確実な例を選択します。ハードネガティブマイニングは、モデルにとって難しいことが確認されたネガティブ例を対象とします。
- **Focal loss**は損失関数内で例に付ける重みを変更しますが、マイニングはどの例を選択または重視するかを変更します。
- クラスの再均衡化は、クラス頻度の不均衡に対処します。Googleのクラス不均衡データセットに関するガイダンスでは、ダウンサンプリングと重み付けを扱っていますが、頻度の高いネガティブが必ずしも難しいネガティブとは限りません。
- **データ拡張**は既存サンプルのバリエーションを作成しますが、未知の本番障害モードを確実に導入できるわけではありません。
実世界での利用例#
倉庫の安全検知: フォークリフト検出器が、パレットジャッキ、棚の反射、シザーリフトをフォークリフトとして繰り返し検出するとします。こうした誤検出は不要なアラートを発生させ、オペレーターの信頼を低下させる可能性があります。エンジニアは、フォークリフトのアノテーションなしでこれらのシーンをネガティブ画像として収集し、データセットに追加して検出器を再学習することで、対象物と類似した機器を区別できるようにします。
ビジュアル商品検索: 顧客が特定の黒いランニングシューズを検索したところ、検索システムが別の商品ラインの視覚的に類似したシューズを過度に高くランク付けしたとします。これらの一致しない商品がハードネガティブになります。これらを使って学習することで、埋め込みモデルは、ソールの形状、ロゴの配置、素材などの微妙な違いを保持できるようになります。KerasのSiameseネットワークの例では、アンカー画像、ポジティブ画像、ネガティブ画像が類似度学習をどのように支えるかを示しています。
実践的なマイニングワークフロー#
信頼性の高いワークフローは反復的です。
- 代表的な検証データと本番データで予測を実行します。
- Ultralyticsの検証モードと混同行列を使用して、高信頼度の誤検出とクラス混同行列のパターンをレビューします。
- すべての候補が本当にネガティブであることを確認します。誤ったラベルは、モデルに実際の物体を抑制するよう学習させる可能性があります。
- 関連するサンプルを見つけ、重複を削除し、多様な背景、視点、条件を維持します。
- 再学習した後、コンピュータービジョンモデルのテストワークフローを使用して、完全なテストセットと専用のハードネガティブサブセットの両方で性能を比較します。
Ultralytics Explorerの類似度検索を使用すると、既知の誤検出に類似した画像を見つけやすくなります。
from ultralytics import Explorer
# Build an embedding index for the example dataset
explorer = Explorer(data="coco128.yaml", model="yolo26n.pt")
explorer.create_embeddings_table()
# Retrieve visually similar candidates for human review
candidates = explorer.get_similar(
img="https://ultralytics.com/images/bus.jpg",
limit=12,
)
print(candidates.head())類似しているだけでは、候補がハードネガティブであることの証明にはなりません。レビュー担当者が正解ラベルを確認する必要があります。チームはUltralytics Platformを使用して候補画像を整理し、アノテーションまたは修正を行い、更新したモデルを学習し、デプロイメントを監視できます。
最も難しい例だけを選択することは避けてください。誤ラベル、曖昧な例、または学習を不安定にする極端な外れ値が含まれている可能性があります。簡単なネガティブ、中程度に難しいネガティブ、ハードネガティブをバランスよく混ぜることで、通常は広いカバレッジを維持しながら、現在の境界がどこで機能しないかをモデルに学習させられます。









