実機の画像認識不具合はスクリーンショット切り出し+本番同一の入力条件+摺動スイープでオフライン再現する
テスト設計
画像処理
デバッグ
運用
実機カメラでだけ発生する画像認識の不具合(検出漏れ・誤検出)は、ユーザーが撮ったスクリーンショットからカメラプレビュー領域を切り出すだけで、実際に失敗する入力に近いテスト画像が得られ、オフラインでの再現・反復デバッグが可能になる。
手順
- スクリーンショットから UI を除いたカメラ映像領域を切り出す(描画オーバーレイはノイズとして混入する点は認識して扱う)。
- 本番パイプラインと同一の入力条件(解像度・縮小方式・前処理)に揃える。ここが最重要で、切り出したままの解像度では検出成功し、本番相当(例: 幅720px)に縮小すると失敗が再現する、という形で結果が反転しうる。スケール依存の固定パラメータ(ブロックサイズ・モルフォロジーカーネル等)がある限り、解像度違いの検証は検証にならない。
- 静止画1枚ではライブ映像のフレーム変動を代表できないため、摺動スイープ(軽いブラー段階・数pxの平行移動・スケール変化)をかけた複数バリアントで検出を回し、「どの条件で何が検出されるか」の分布を見る。安定化層(トラッキング)が拾うのは「安定して出続ける候補」なので、真の対象が間欠的・偽候補が安定という分布が見えれば実機現象を説明できる。
- 再現フレームはそのまま回帰テスト化する(PII を含む場合はコミットせずローカル専用にし、同条件の合成画像をコミット側に置く)。
なぜ
実機デバッグは往復が遅く試行回数が稼げない。スクリーンショットはユーザーが不具合報告に添えることが多く、追加の採取依頼なしに失敗入力を得られる。切り出し画像は圧縮・モアレ・再撮影ノイズを含むが、それらこそが実機での入力品質に近い。
検証方法
再現フレームで実機と同じ失敗(同じ偽検出矩形・同じ検出漏れ)が出ることを確認してから修正に入る。再現できない場合は入力条件(解像度・前処理)の差分を疑う。