feat: scope detection QA to inference coverage
This commit is contained in:
@@ -933,6 +933,33 @@ export function DetectionLab({
|
||||
<p>Mean IoU: {detectionQaResult.mean_iou?.toFixed(3) ?? 'n/a'}</p>
|
||||
<p>False positives: {detectionQaResult.false_positives}</p>
|
||||
<p>False negatives: {detectionQaResult.false_negatives}</p>
|
||||
{detectionQaResult.coverage ? (
|
||||
<div className="detection-qa-diagnostic">
|
||||
<span>Inference coverage</span>
|
||||
<strong>
|
||||
{detectionQaResult.coverage.applied
|
||||
? `${detectionQaResult.coverage.reference_evaluated_count} of ${detectionQaResult.coverage.reference_raw_count} reference features evaluated`
|
||||
: 'No tile manifest coverage applied'}
|
||||
</strong>
|
||||
<p>
|
||||
{detectionQaResult.coverage.applied
|
||||
? `${detectionQaResult.coverage.reference_excluded_outside_count} outside coverage, ${detectionQaResult.coverage.reference_clipped_boundary_count} clipped at the boundary, ${detectionQaResult.coverage.tile_count} tiles.`
|
||||
: 'This run uses the complete selected reference population.'}
|
||||
</p>
|
||||
</div>
|
||||
) : null}
|
||||
{detectionQaResult.box_to_footprint_diagnostics ? (
|
||||
<div className="detection-qa-diagnostic detection-qa-diagnostic-caution">
|
||||
<span>Box-to-footprint diagnostic only</span>
|
||||
<strong>
|
||||
{detectionQaResult.box_to_footprint_diagnostics.envelope_matches} envelope matches versus{' '}
|
||||
{detectionQaResult.box_to_footprint_diagnostics.strict_matches} canonical matches
|
||||
</strong>
|
||||
<p>
|
||||
{detectionQaResult.box_to_footprint_diagnostics.possible_box_to_footprint_mismatch_count} possible matching artifacts. Canonical precision, recall and F1 above remain footprint-IoU based.
|
||||
</p>
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
|
||||
@@ -983,6 +983,38 @@ details.ai-lab-model-surface > summary strong {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.detection-qa-diagnostic {
|
||||
grid-column: 1 / -1;
|
||||
display: grid;
|
||||
gap: 0.2rem;
|
||||
margin-top: 0.35rem;
|
||||
border-left: 3px solid var(--accent);
|
||||
padding: 0.55rem 0.65rem;
|
||||
background: var(--accent-soft);
|
||||
}
|
||||
|
||||
.detection-qa-diagnostic span {
|
||||
color: var(--muted);
|
||||
font-size: 0.68rem;
|
||||
font-weight: 800;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.detection-qa-diagnostic strong {
|
||||
font-size: 0.82rem;
|
||||
}
|
||||
|
||||
.detection-qa-diagnostic p {
|
||||
margin: 0;
|
||||
color: var(--muted);
|
||||
font-size: 0.74rem;
|
||||
}
|
||||
|
||||
.detection-qa-diagnostic-caution {
|
||||
border-left-color: var(--warning);
|
||||
background: #fff8eb;
|
||||
}
|
||||
|
||||
.basemap-policy-notice {
|
||||
margin-bottom: 0.65rem;
|
||||
border: 0;
|
||||
|
||||
@@ -559,6 +559,8 @@ export interface DetectionQaResult {
|
||||
reference_dataset_id: string
|
||||
candidate_feature_count: number
|
||||
reference_feature_count: number
|
||||
candidate_feature_count_raw?: number
|
||||
reference_feature_count_raw?: number
|
||||
matches: number
|
||||
false_positives: number
|
||||
false_negatives: number
|
||||
@@ -568,6 +570,36 @@ export interface DetectionQaResult {
|
||||
mean_iou?: number | null
|
||||
iou_threshold: number
|
||||
warnings: string[]
|
||||
coverage?: {
|
||||
applied: boolean
|
||||
mode: string
|
||||
manifest_path?: string | null
|
||||
tile_count: number
|
||||
source_crs_values: string[]
|
||||
candidate_raw_count: number
|
||||
candidate_evaluated_count: number
|
||||
candidate_excluded_outside_count: number
|
||||
candidate_clipped_boundary_count: number
|
||||
reference_raw_count: number
|
||||
reference_evaluated_count: number
|
||||
reference_excluded_outside_count: number
|
||||
reference_clipped_boundary_count: number
|
||||
}
|
||||
box_to_footprint_diagnostics?: {
|
||||
diagnostic_only: boolean
|
||||
canonical_method: string
|
||||
diagnostic_method: string
|
||||
iou_threshold: number
|
||||
strict_matches: number
|
||||
envelope_matches: number
|
||||
possible_box_to_footprint_mismatch_count: number
|
||||
envelope_false_positives: number
|
||||
envelope_false_negatives: number
|
||||
envelope_precision?: number | null
|
||||
envelope_recall?: number | null
|
||||
envelope_f1_score?: number | null
|
||||
envelope_mean_iou?: number | null
|
||||
}
|
||||
}
|
||||
|
||||
export type SegmentationModelCapability = DetectionModelCapability
|
||||
|
||||
Reference in New Issue
Block a user