本記事は公開情報と個人的な技術検討をもとに構成しています。特定の実運用環境に基づく数値・成果物は含みません。
この記事の位置づけ
前回の記事では、YOLOv7転移学習における精度劣化の三つの原因と対処を整理した。その中でハードネガティブマイニングに触れたが、「何をやったか」の説明にとどまった。
本記事では「なぜその判断をしたか」を掘り下げる。具体的には以下の三点だ。
- ハードネガティブ投入が必要と判断するタイミングの見極め方
- 収集対象の特定プロセス——何を、どう探すか
- イージーネガティブとの役割分担の設計
誤検知への対処法として「データを追加する」という答えはすぐ出る。問題は「何を」「どれだけ」追加するかの判断基準だ。ここに設計者の判断が集中する。
ネガティブサンプルの基本整理
議論の前提として用語を整理する。
イージーネガティブはクラスなし背景画像(空のラベルファイル)だ。「明らかに検出対象ではない領域」をモデルに明示的に教える。背景への誤反応(無地の壁、床、机など)を抑制する基本施策で、データセット設計の初期段階で組み込む。
ハードネガティブはモデルが「検出対象に似ている」と誤判断しやすいサンプルだ。外見的な類似性があるが正解ラベルがない——これをネガティブとして明示することで、特定の誤検知パターンを抑制する。
二つの違いを一言で言うと、イージーネガティブが「明らかに違うものを除外する」のに対し、ハードネガティブは「似ているが違うものを区別させる」。前者はデータセット設計の問題、後者はモデルの認識限界への介入だ。
ハードネガティブ投入が必要なサイン
ハードネガティブの投入を検討するのは、以下の条件が揃ったときだ。
① 評価指標は許容範囲内だが、特定のシナリオで誤検知が集中する
mAPやPrecisionが全体として良好なのに、特定の姿勢・角度・環境条件で誤検知が頻発する場合、モデルは「一般的なケース」を学習できているが「特定の難しいケース」に対応できていない状態にある。これはデータ不足ではなく、学習データのシナリオカバレッジの問題だ。
② 誤検知が再現性を持っている
「たまに誤検知する」ではなく「○○という条件下では必ず誤検知する」という再現性があるとき、ハードネガティブの収集対象が明確になる。ランダムな誤検知はノイズ処理の問題だが、再現性のある誤検知はモデルが特定の特徴に引っ張られているサインだ。
③ イージーネガティブの追加で改善しなかった
イージーネガティブを追加しても特定の誤検知が解消しない場合、問題は「背景への過反応」ではなく「対象に似た物体との混同」にある。この段階でハードネガティブへ切り替える。
注意:先にアーキテクチャや推論時パラメータを疑う
ハードネガティブ投入の前に、信頼度閾値やNMS閾値などの推論時パラメータの調整で解決できないかを確認する。YOLOv7を含むYOLO系は推論後にNMS(Non-Maximum Suppression)で重複ボックスを除去しており、この閾値の調整で誤検知を抑制できるケースがある。データ追加はコストが高い。推論時パラメータで対処できる誤検知をデータで潰そうとすると、収集・アノテーションの工数を無駄にする。
収集対象の特定プロセス
「ハードネガティブ投入が必要」と判断したあと、何を集めるかを決める手順を整理する。
ステップ1:誤検知のパターン分類
まず誤検知を発生条件で分類する。姿勢(正面・側面・斜め)、距離(近距離・遠距離)、照明条件(逆光・影)、背景(単色・複雑)など、どの軸で誤検知が集中しているかを把握する。
この分類なしにデータを追加しても、問題のある条件のサンプルが増えるとは限らない。「全体的にデータを増やす」は非効率で、「問題のある条件を狙って増やす」が正しい。
ステップ2:誤検知の原因仮説を立てる
分類した誤検知パターンから、モデルが何の特徴に反応しているかを推定する。
たとえば「正面向きで誤検知が集中する」という事実から「前頭部の形状・光の反射がヘルメットの特徴と類似している」という仮説が導かれる。(なお余談だが、今回の誤検知の遠因は筆者の額の広さにある。前頭部の面積と光沢がヘルメットとの類似度を高めたという、個人的な事情が絡んでいた。)この仮説がハードネガティブの収集対象を決める。仮説なしに収集を始めると、対象外のサンプルを大量に集めることになる。
ステップ3:仮説に対応したサンプルを収集する
仮説が「前頭部の形状との混同」なら、ヘルメットを着用していない状態の正面向き頭部画像を、問題が発生した条件(距離・照明・背景)に近い形で収集する。
収集時の原則
問題のある条件を「再現」して収集する。「代表的な条件で撮れる量を増やす」はこの段階では意味がない。誤検知が発生した姿勢・距離・照明を意図的に再現することが、ハードネガティブとしての有効性を決める。
ステップ4:アノテーションなしで追加する
ハードネガティブは空のラベルファイル(クラスなし画像)として学習データに追加する。YOLO系のフォーマット仕様上、空のラベルファイルは「検出対象が存在しない画像」を意味する。これが重要な点で、「この領域はネガティブである」とモデルに教えるための画像であり、正解ラベルを与えてしまうと意味が変わる。
クラス間混同の場合は明示ラベルが適切
「検出すべきでないものを検出する」誤検知には空のラベルファイルが有効だ。一方、「正しいクラスで検出すべきものを別クラスで誤検知する」場合は、正しいクラスで明示的にラベルを付けたサンプルを追加する方が論理的に整合する。前者が純粋なハードネガティブ、後者は「難しい正例の追加」という位置づけになる。今回の前頭部の誤検知は後者に該当し、head_uncoveredとして明示ラベルを付けたサンプルを追加した。
イージーネガティブとの役割分担
二種類のネガティブサンプルは補完関係にあり、それぞれが異なる誤検知を担当する。
| 種別 | 対処する問題 | 投入タイミング |
|---|---|---|
| イージーネガティブ | 背景への過反応(明らかに検出対象ではない領域) | データセット構築の初期段階 |
| ハードネガティブ | 視覚的に類似する物体との混同 | 特定の誤検知パターンが確認された後 |
設計上の判断として、イージーネガティブは先手、ハードネガティブは後手という位置づけになる。初期設計でイージーネガティブを組み込み、検証後に浮かび上がった特定の誤検知パターンをハードネガティブで潰す、という順序が合理的だ。
逆順——つまりハードネガティブから始める——は誤検知パターンが確認される前にターゲットを決めることになり、収集の方向性が定まらない。
イージーネガティブが機能すると撮影環境の制約が緩和される
「背景をできるだけ単純にする(無地の壁・ボードなど)」という撮影設計は、背景への誤反応を事前に抑制する方法として有効だ。ただしイージーネガティブによる明示的な学習が機能している場合、こうした撮影環境の制約を設計段階から外せる可能性がある。カメラ設置場所の制約が厳しい環境では、「背景を整える」ではなく「背景のバリエーションをデータ側で学習させる」という方針が現実的な選択肢になる。
投入量の判断
「どれだけ追加すれば十分か」は明確な正解がない問いだが、判断基準は持てる。
まず少量から始めてファインチューニングし、問題のあったシナリオで誤検知が減少しているかを確認する。一度に大量追加すると、もし改善しなかったときにどのサンプルが効いていないかの特定が難しくなる。
また、追加後に別の誤検知が増えていないかを確認する。特定の難しい負例を大量に学習させると、モデルの感度バランスが変わり、以前は正しく検出できていたサンプルの未検知が増えるケースがある。ハードネガティブ追加後は、改善したシナリオと並行してその他のシナリオでの性能劣化がないかをセットで確認する。
設計上の教訓
ハードネガティブは「問題を狙い撃ちするデータ」だ。広く集めるのではなく、問題のある条件を再現して絞って集める。量より狙いの精度がハードネガティブの効果を決める。
検出対象ごとのハードネガティブ候補の考え方
ヘルメット検知以外のユースケースでも、同じ判断フレームが使える。収集対象を特定するための問いは共通している。
検出対象と形状・色・質感が類似するものは何か?
この問いに答えることがハードネガティブ収集の起点だ。ヘルメットであれば「丸みのある硬質物体」「光沢のある表面」が特徴として挙がる。これらの特徴を持つが検出対象ではないものが候補になる。
どの姿勢・角度・距離で誤検知が発生しやすいか?
特定の観察角度でのみ誤検知が集中する場合、その角度からの撮影を優先する。
撮影環境(照明・背景)の影響は?
照明による反射や影が誤検知の引き金になっている場合、その照明条件を再現することが有効なサンプルの条件になる。
まとめ
ハードネガティブマイニングは「データを増やす」ではなく「問題のある認識パターンを狙い撃ちする」手法だ。設計上の判断は三段階に集約される。
判断①:いつ投入するか——特定条件での再現性ある誤検知が確認され、イージーネガティブや推論時パラメータの調整では解消しない段階。
判断②:何を集めるか——誤検知パターンの分類→原因仮説の構築→仮説に対応した条件の再現、という順序で収集対象を絞る。
判断③:どれだけ投入するか——少量から始めて効果を確認し、他のシナリオへの影響を並行して監視する。
データで誤検知を潰す判断は、モデルアーキテクチャへの介入と違って根拠を言語化しやすい。「なぜこのサンプルを追加したか」が明確であるほど、再発時の対処も速くなる。