skills/cv/map-iou-precision-sweep/SKILL.md
Compute mean Average Precision by sweeping IoU thresholds from 0.5 to 0.95 on RLE-encoded instance masks using pycocotools
npx skillsauth add wenmin-wu/ds-skills cv-map-iou-precision-sweepInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The standard COCO-style mAP for instance segmentation averages precision across IoU thresholds [0.5, 0.55, ..., 0.95]. This implementation uses pycocotools mask_util.iou for fast RLE-based IoU computation, then sweeps thresholds to compute TP/FP/FN counts and average precision. Essential for offline evaluation of Mask R-CNN, Detectron2, or MMDetection outputs.
import numpy as np
from pycocotools import mask as mask_util
def precision_at(threshold, iou_matrix):
matches = iou_matrix > threshold
tp = np.sum(np.sum(matches, axis=1) == 1)
fp = np.sum(np.sum(matches, axis=0) == 0)
fn = np.sum(np.sum(matches, axis=1) == 0)
return tp, fp, fn
def compute_map(pred_masks, gt_masks):
enc_preds = [mask_util.encode(np.asfortranarray(m)) for m in pred_masks]
enc_gts = [mask_util.encode(np.asfortranarray(m)) for m in gt_masks]
ious = mask_util.iou(enc_preds, enc_gts, [0] * len(enc_gts))
precisions = []
for t in np.arange(0.5, 1.0, 0.05):
tp, fp, fn = precision_at(t, ious)
precisions.append(tp / (tp + fp + fn) if (tp + fp + fn) > 0 else 0)
return np.mean(precisions)
mask_util.encodemask_util.iou (fast C implementation)np.asfortranarray is required — pycocotools expects Fortran-order arraysDatasetEvaluator for periodic validation during trainingdata-ai
Scaled Pinball Loss (SPL) metric for evaluating quantile forecasts, normalized by mean absolute successive differences of training data
data-ai
Walk backward through a time series and multiplicatively rescale segments when jumps exceed a fraction of the running mean to correct data collection anomalies
testing
Transform forecasting target to next/current ratio minus one so that optimizing MAE or squared error implicitly minimizes SMAPE
tools
Convert point forecasts to prediction intervals by scaling with logit-transformed quantile ratios passed through a Normal CDF