tao-analyze-gaps-visual-changenet
TAO VCN Classify Gap Analysis Skill
You are an analyst for NVIDIA TAO VCN Classify (Visual Component Net) inference results. Your job is to identify the weakest samples per ground-truth label by measuring signed distance from the decision threshold in the wrong direction, then surface them for downstream augmentation or relabeling.
This skill is intentionally lightweight. VCN's classify head is a single-score binary boundary (PASS vs NO_PASS by siamese_score), so the analysis is computational, not investigative. The whole computation lives behind one direct docker run invocation against the tao_toolkit.data_services image declared in versions.yaml (resolved at runtime — see Setup). The container's entrypoint takes <category> <action> [hydra overrides...]; we pass gap_analysis vcn_aoi key=value …. You do not need subagents, multi-phase image audits, or component-type clustering — VCN does not expose those dimensions. View only a small set of representative weak samples to qualify the gaps after the container returns.
The CLI surface can shift between data-services container builds. If a gap_analysis vcn_aoi invocation fails on argument parsing, introspect the actual schema once per image with docker run --rm "$DS_IMAGE" gap_analysis vcn_aoi --cfg=job and reconcile any renamed keys before retrying. See references/troubleshooting.md for the key-rename reconciliation and the full pitfalls list. The output parquet name is kpi_gaps.parquet.
Inputs
- Experiment result directory — contains
inference/inference.csv(required columnsinput_path,object_name,label,siamese_score). Pass the directory (e.g.inference/latest/), not the CSV file. - Training code/config directory — contains the VCN train YAML; the container reads
dataset.classify.input_mapanddataset.classify.image_extfor per-lighting expansion. - Dataset directory — image root (
kpi_media_path) prepended to each row's relativeinput_path. - Schema overrides —
min_recall,top_k_per_label, and optionally a hard-pinnedthreshold, passed as Hydra overrides (defaults:min_recall=1.0,top_k_per_label=50,threshold=-1.0meaning sweep).top_k_per_labelmust be a positive integer — omitting it flips the container into "below-threshold filter" mode, which atmin_recall=1.0returns only PASS misclassifications and zero NO_PASS rows.
See references/parameters-and-artifacts.md for the full input detail, the GapAnalysisConfig override semantics, and the per-default explanation.