Confidence
信頼度スコアとは、予測が正しい確率をモデルが0から1で推定した値です。検出器による計算方法、しきい値の仕組み、キャリブレーションが重要な理由を解説します。
信頼度スコアとは、予測が正しい可能性を表すためにモデルが予測に付与する、0から1までの数値です。分類器は各クラスラベルに信頼度スコアを付け、物体検出モデルは各バウンディングボックスに付けます。後者が示すのは、「このボックスにこのクラスの物体が含まれている可能性はどの程度か」という、より限定された問いへの答えです。アプリケーションでは信頼度を使って、採用する予測、順位付けの順序、人による確認に回す予測を決定します。
モデルが信頼度を算出する方法#
信頼度はネットワークの最終層から得られます。単一ラベル分類器は、ロジットと呼ばれる生の出力をsoftmaxに通してクラススコアの合計を1にし、最も高い値を報告します。検出器は通常、各クラスに個別にシグモイドを適用するため、1つのボックスが関連する2つのクラスで高いスコアを取る場合があり、スコアの合計は1とは限りません。YOLOv5など、物体らしさの出力を別に持つ検出器では、その値にクラス確率を掛けていました。最近のYOLOモデルを含む多くのアンカーフリー検出器では、物体らしさの出力を省き、最も高いクラススコアをボックスの信頼度として使います。
信頼度しきい値#
信頼度しきい値はスコアを判定に変換します。しきい値を超える予測は残り、それ以外は破棄されます。しきい値を上げると誤検知が減り、適合率が向上します。しきい値を下げると、かすかな、小さな、または一部が隠れたオブジェクトを検出しやすくなり、誤報が増える代わりに再現率が向上します。F1スコア曲線が最大になるしきい値では、両者のバランスが取れます。YOLO26はデフォルトで、推論時にスコアが0.25を超えるボックスを保持します。検証ではしきい値を0.001に下げ、適合率-再現率曲線がほぼすべての動作点を網羅するようにします。
from ultralytics import YOLO
# Load a pretrained YOLO26 nano detector
model = YOLO("yolo26n.pt")
image = "https://ultralytics.com/images/bus.jpg"
# Run the same image at a low and a high confidence threshold
for threshold in (0.1, 0.6):
results = model(image, conf=threshold)
scores = results[0].boxes.conf.tolist()
print(f"conf={threshold}: {len(scores)} boxes, scores {[round(s, 2) for s in scores]}")しきい値0.1での実行結果には、しきい値0.6での実行結果に加えて、より確信度の低い候補もすべて含まれます。そのため、しきい値を上げると、確信度の低い検出から順に除外されます。
アプリケーションでの信頼度の利用#
多くのシステムでは、2つのしきい値を使います。低いしきい値を下回る予測は破棄し、高いしきい値を超える予測は自動処理を実行し、その間の範囲は担当者、2つ目のモデル、または別のセンサーに渡します。医療スクリーニングツールは、信頼度の高い所見にすぐにフラグを付け、不確実な所見を放射線科医の確認用にキューへ登録できます。また、アクティブラーニングのループでは、不確実な範囲をアノテーターに送ります。この手法は不確実性サンプリングと呼ばれます。
信頼度とキャリブレーション#
スコア0.9を確率として利用できるのは、モデルがキャリブレーション済みの場合に限られます。つまり、スコアが0.9の予測をすべて集めると、その約90%が正解であるということです。最新のディープネットワークは過信しやすく、実際の正解率より高いスコアを出す傾向があります。温度スケーリングでは、ホールドアウトデータを使って適合させた単一の定数でロジットを割ることで、この問題の多くを補正できます。また、scikit-learnのキャリブレーションツールは、Platt(シグモイド)またはアイソトニック回帰によるマッピングを適合させ、信頼度曲線をプロットします。リスクのしきい値など、スコアを確率として扱う場合にはキャリブレーションが重要です。平均適合率(mAP)などのランキング指標は、スコアの順序だけに依存します。










