Tao Run Deft Od Aoi
NVIDIAOfficialCreated by NVIDIA Corporation
- Skill
- Workflow
- Software development
- Apache-2.0
- Medium risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured, disk-backed loop for training and refining a binary object detection model specifically for industrial inspection (AOI). It automates the process of measuring model performance on frozen KPI datasets, identifying gaps (false positives and false negatives) using SigLIP-based image mining, and iteratively retraining the model with newly admitted data. It supports optional synthetic data generation via AnomalyGenNext to address specific defect types, ensuring a controlled, data-driven improvement cycle for defect detection.
What it does
- Performs iterative training loops for binary defect detection using TAO RT-DETR.
- Mines real and clean images to address model gaps identified by loose and strict confidence thresholds.
- Manages cumulative COCO dataset assembly with deduplication and admission gates.
- Selects the best model checkpoint based on KPI AP50 metrics.
- Integrates optional synthetic defect generation for specific, hard-to-detect defect types.
- Validates data contracts and role-specific requirements for KPI, test, real, and clean datasets.
When to use it
- When you need to improve a binary defect detection model for industrial inspection.
- When you have a set of KPI and test images and want to iteratively mine for more training data.
- When you need to integrate synthetic data generation to supplement real-world defect samples.
- When you require a rigorous, reproducible workflow for model training and checkpoint selection.
Advantages
- Automates the complex loop of gap analysis, data mining, and retraining.
- Ensures model performance is tracked against frozen KPI and test roles.
- Provides flexible data admission strategies including round-robin and max-similarity.
- Supports both real-data mining and synthetic data generation for robust training.
Usage examples
- “Initialize a new DEFT AOI workflow with my policy file.”
- The skill validates the policy and initializes the project structure, ensuring all required roles (KPI, test, real, clean) meet the data contract.
- “Run the next iteration of the DEFT loop.”
- The agent performs gap analysis, mines new images based on the current model's performance, admits them to the training set, and triggers a new training run.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/nvidia/tao-run-deft-od-aoi/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip tao-run-deft-od-aoi.zip -d .agents/skills
Documentation by NVIDIA Corporation
TAO DEFT OD AOI
Standalone install? If this session was not initialized by the TAO skill bank plugin, run the
tao-setupskill first (host preflight, credentials, cross-skill discovery).
This application is a disk-backed RT-DETR loop for one foreground class,
defect. Its core is real-data-only; AnomalyGenNext synthesis is an optional
route with separate preparation, generation, and admission gates.
References
Read only the references needed for the current stage:
intake and launch:
references/defaults.md,references/data-contract.md,references/source-manifest.md, andreferences/preflight.md;orchestration:
references/pipeline.mdandreferences/scripts-and-agents.md;gaps and retrieval:
references/gap-routing.mdandreferences/tao-analyze-gaps-od-map.md;training and selection:
references/training-policy.md;optional synthesis:
references/anomalygen-pool.md.
Start
Select an installed platform, read its skill, then invoke
tao-launch-workflow. The single launch review must include the four normalized
COCO roles, trainable RT-DETR base checkpoint, maximum iterations, image and
Data Services containers, GPU shape, and expected runtime. After approval,
prepare source COCO files when needed:
scripts/prepare_deft_od_aoi_sources.py \
--manifest /data/dataset_sources.json --check-only
scripts/prepare_deft_od_aoi_sources.py \
--manifest /data/dataset_sources.json \
--output-dir /new/results/normalized--check-only runs without a container. Materialization must run in the pinned
TAO Data Services image because it delegates each role's canonical COCO merge
to the existing annotations merge action. The application then validates the
merged role contracts before emitting sources.json. Include --gpus when
launching the materialization container, as documented in
references/source-manifest.md.
The user-facing manifest calls the held-out input benchmark. The second
command maps it to the existing internal kpi role and emits sources.json
with the canonical kpi, test, real, and clean mapping. Copy
assets/default_policy.yaml, use that mapping for sources, fill the other
required values, and initialize once:
Source COCOs must already satisfy the canonical KPI metadata contract in
references/data-contract.md. The generic source preparer preserves those
fields; it does not infer dataset-specific identity or mask paths.
scripts/init_deft_od_aoi.py \
--config /workspace/deft_policy.yaml \
--output-dir /new/results/deft_contractNever reinitialize an existing result. The validator requires disjoint KPI,
test, defective-real, and verified-clean roles; every COCO must declare only
defect. KPI and test may mix boxed and boxless images because they never enter
training. The defective-real role must be nonempty and needs at least one box
on every image. Clean images remain explicit zero-annotation COCO entries; an
empty clean role is accepted as an unavailable retrieval capability with a
startup warning.
Loop boundary
The loop composes existing bank actions:
Baseline gap initialization in explicit
cold_startorcheckpointmode; later measurements usetao-train-rtdetrinference on KPI and test.Two
tao-analyze-gaps-od-mapactions: loose confidence for FP routing and strict confidence for FN routing.tao-generate-image-embeddingswith one frozen SigLIP encoder, followed bytao-mine-od-imagesunique-neighbor matching against the real or clean role.Application-owned admission and cumulative binary COCO assembly.
Direct
tao-train-rtdetrtraining from the same frozen base checkpoint, then KPI-only checkpoint selection. Test remains report-only.
All specs are nested YAML dictionaries. Every GPU/Data Services action uses the
selected platform's submit/status/logs/cancel contract and a job record.
Stop on missing or invalid artifacts, role overlap, class drift, or
failed training. Never infer live state from the JSON record alone.
Retrieval preparation
Build the reusable candidate cache once, then prepare queries after each pair of loose/strict gap jobs:
scripts/prepare_deft_od_aoi_retrieval.py candidates \
--policy "$RESULTS/deft_od_aoi_policy.yaml" \
--output-dir "$RESULTS/candidates"
scripts/prepare_deft_od_aoi_retrieval.py queries \
--policy "$RESULTS/deft_od_aoi_policy.yaml" \
--strict-gaps "$ITER/strict/box_gaps.parquet" \
--loose-gaps "$ITER/loose/box_gaps.parquet" \
--previous-coco "$PREVIOUS/train.json" \
--iteration 1 --candidate-root "$RESULTS/candidates" \
--output-dir "$ITER/retrieval"The candidate manifest records a zero count and emits no candidate parquet or embedding spec for an empty clean source role.
Run every emitted embedding spec through tao-generate-image-embeddings.
For max_similarity, run each emitted mining spec through
tao-mine-od-images. For round_robin_similarity, materialize the selected
artifacts after query embedding instead:
scripts/deft_od_aoi_round_robin_selection.py \
--policy "$RESULTS/deft_od_aoi_policy.yaml" \
--candidate-root "$RESULTS/candidates" \
--retrieval-root "$ITER/retrieval" \
--previous-coco "$PREVIOUS/train.json"Omit --previous-coco for iteration 1. Later iterations exclude candidate
crops whose source image is already in the cumulative training COCO, while
admission remains the authoritative source-level deduplication gate. Both
strategies must produce an
enabled role's mine_<role>/final_unique_files.parquet before committing
iteration_retrieval; round-robin also commits
round_robin_selection_report.json as selection_report and
round_robin_admission_index.npy as admission_index. Defective candidates
and gap queries use the independently selected
retrieval.preprocessing.profile:
the default square_context mean-pads and resizes to 224×224, while
tight_context preserves an aspect-ratio-aware native-size crop. Clean
candidates use the same profile over the frozen grid.
Strict FNs and loose near-miss FPs route to real data. Background-like loose
FPs route only to the verified-clean role. Pass the prior cumulative COCO as
--previous-coco; optional role-specific exclusion parquets use
--real-exclusions and --clean-exclusions. Empty or fully excluded roles
emit audited exhaustion evidence and no mining action. If every producer is
exhausted and synthesis is not pending, the stage records convergence.
The independent retrieval.selection.strategy defaults to
round_robin_similarity, which balances candidates across stable per-query
rank rounds and pocket-scoped quotas. max_similarity retains the global
maximum-similarity path.
Admission and cumulative COCO
After each enabled role has a committed selection artifact, admit its selected candidate crops back to unique source images and publish the next cumulative dataset:
scripts/admit_deft_od_aoi_coco.py \
--policy "$RESULTS/deft_od_aoi_policy.yaml" \
--candidate-root "$RESULTS/candidates" \
--retrieval-root "$ITER/retrieval" \
--previous-coco "$PREVIOUS/train.json" \
--output-dir "$ITER/training_data"Omit --previous-coco only for iteration 1. For max_similarity, the helper
recomputes maximum cosine similarity from the frozen candidate/query
embeddings. For round_robin_similarity, it consumes the committed per-query
selection, screened boxes, audit report, and admission index without rerunning
selection, then publishes admission_index.npy for the next iteration. Both paths apply the
minimum similarity upstream, deduplicate crop hits to source images, exclude
prior sources, and cap cumulative clean negatives against cumulative real defects.
It retains every prior image and box and emits one binary COCO with explicit
zero-annotation clean images. Use --link-mode hardlink only when source and
output share a filesystem; portable staging should keep the copy default.
Measurement specs
For the baseline, pass --baseline. The default cold_start mode creates an
empty prediction file for every KPI image, making all KPI ground-truth boxes
initial false negatives without loading an incompatible multiclass checkpoint
into the binary inference head. It also emits cardinality-matched empty test
prediction evidence so the measurement manifest retains the same KPI/test
completion contract without running inference. Explicit checkpoint mode
emits normal baseline KPI/test inference specs and therefore requires a
binary-compatible checkpoint. Neither mode changes training initialization.
scripts/prepare_deft_od_aoi_measurement.py \
--policy "$RESULTS/deft_od_aoi_policy.yaml" \
--checkpoint "$CHECKPOINT" \
--kpi-predictions "$MEASURE/kpi/inference/labels" \
--results-root "$MEASURE" --output-dir "$MEASURE/specs" \
--baselineSubmit only the inference specs listed in measurement_manifest.json; a
cold-start baseline lists no inference specs. Then submit gap_loose.yaml and
gap_strict.yaml through
tao-analyze-gaps-od-map. The helper projects the frozen KPI COCO to KITTI,
keeps the two-line inference class map durable, and emits only nested specs.
Test inference is report-only and its output cannot influence routing or
checkpoint selection.
After training, omit --baseline; every iteration measurement uses the
selected binary checkpoint and emits KPI/test inference regardless of the
baseline mode.
RT-DETR training specs
Build nested specs from the current cumulative COCO:
scripts/prepare_deft_od_aoi_training.py \
--policy "$RESULTS/deft_od_aoi_policy.yaml" --iteration 1 \
--train-coco "$ITER/training_data/train.json" \
--train-images "$ITER/training_data/images" \
--results-root "$ITER/training" --output-dir "$ITER/train_specs"Invoke the RT-DETR leaf as direct training with automl_policy: off; the AOI
application already owns its frozen probe policy. Iterations 1–2 use 36 epochs.
Later iterations use the clipped size-adaptive budget. When probes are enabled
and the iteration reaches the frozen training.probes_start_iteration,
the helper emits independent incumbent, data-growth-scaled, and deterministic
jitter specs, all initialized from the same frozen base checkpoint. Run all
three before selecting and materializing train.yaml; never initialize the
next iteration from a previous iteration checkpoint.
Select all three probes before main training:
scripts/select_deft_od_aoi_training.py probes \
--manifest "$SPECS/training_manifest.json" \
--main-template "$SPECS/main_template.yaml" \
--status "$P0/status.json" --status "$P1/status.json" --status "$P2/status.json" \
--output-dir "$SPECS/selected"After main training, select the KPI-best checkpoint from structured status
rows. Repeat --status for resumed phases. If the best epoch is within the
frozen late window, the first call emits one same-iteration extension.yaml
from the terminal checkpoint; submit it, then reselect with
--extension-applied. The checkpoint carried to measurement is always the
maximum KPI val_mAP50, never the latest checkpoint or test result.
After each stage succeeds, commit at least one completion artifact with
commit_deft_od_aoi_stage.py. It accepts only the next frozen stage, verifies
and hashes every named file, atomically updates deft_state.json, and appends
loop_log.jsonl. The final iteration becomes COMPLETE only after its gap
artifacts are committed. Poll native backends for live state; this record is
durable workflow history, not a scheduler substitute.
Optional synthesis with existing task weights
Enable synthesis only when every KPI sample retains its real, nonempty
dataset_id; a missing ID is malformed KPI metadata and is never an opt-out.
synthesis.routes is the synthesis allowlist. Dataset IDs absent from it skip
synthesis but remain in the separate normal real-data DEFT path. Every FN in a
configured route must also carry texture_id, defect_class, and a pixel
fn_mask_source, and the route must provide an existing AnomalyGenNext
checkpoint and matching recipe. After strict gap analysis, normalize exact
FN/annotation matches:
scripts/prepare_deft_od_aoi_synthesis.py \
--policy "$RESULTS/deft_od_aoi_policy.yaml" \
--strict-gaps "$MEASURE/gap_strict/box_gaps.parquet" \
--iteration 1 \
--real-coco "$ITER/admission/train.json" \
--output-dir "$ITER/synthesis_request"The default synthesis.fn_selection.mode: generated_per_type_plan bounds work
from the current admitted real COCO. It derives a deterministic per-type plan
from cumulative_fraction_of_total_defects, writes and hashes the plan, and
records the full allocation calculation. A fraction of 0.25 means synthetic
images are 25% of the combined real-plus-synthetic defect pool. Set the mode to
all_eligible explicitly to preserve every routed FN without pre-generation
budgeting.
The planner derives the finalized yield as 2 * max_neighbors_per_fn: the
finalizer emits two fixed mask branches and requests one image from each branch
for every retained neighbor. candidate_topn only supplies fallback neighbor
candidates and does not enter this calculation. It is synthesis-only and is
independent of both max-similarity overfetch and round-robin refill. The derived
value is recorded as images_per_fn in the frozen plan evidence; it is not a
policy input. candidate_topn is the AMP compute knob: preparation emits two
AMP requests per eligible candidate, so one FN costs up to
2 * candidate_topn placement attempts to retain
2 * max_neighbors_per_fn finalized images. For backward compatibility,
initialization copies an explicitly
supplied legacy retrieval.candidate_overfetch into synthesis when
candidate_topn is omitted, and already-frozen policies without the new field
retain that fallback.
Set both fields explicitly to configure them independently.
Pass the emitted filtering YAML through tao-prepare-anomalygennext-inputs,
mounting the complete checkpoint root for its run_amp action, then pass its
finalized generation plan through tao-generate-od-defects with the same
checkpoint root mounted at the same canonical path. Commit
iteration_synthesis before training. Read the selected
tao-generate-od-defects action contract and resolve
actions.generate.outputs.binary_coco.relative_path against that action's
results directory. Re-run admission with the resolved file passed through
--synthetic-coco and the generation results directory passed through
--synthetic-images; admission never locates a companion skill itself. Synthetic
categories are folded to defect, and
the frozen cumulative fraction cap is applied against admitted real defects.
Commit initial admission before requesting synthesis. The stage controller
uses its calculated synthetic capacity: zero room records a
no_synthetic_budget skip and bypasses iteration synthesis. Train only when
this iteration admitted new images; otherwise converge. Positive capacity
can remain from prior real admissions even without new real matches.
The post-generation cap and quality checks still apply when synthesis runs;
provide the same-iteration real admission as --previous-coco and set
--synthetic-only so synthetic inputs do not implicitly rerun mining admission.
SYNTHETIC_ADMISSION_CAPPED reports eligible generated images excluded by the
cap. See references/pipeline.md for budget-skip evidence. A zero cumulative
real count permits zero synthetic admissions.
Boxes never substitute for the required pixel mask. If the request has no
routed FNs, or preparation reports no mask-eligible FNs, commit that typed skip
contract as iteration_synthesis and continue to training without running AMP
or fabricating generation/admission success. Missing or empty AnomalyGen clean
reference pools likewise skip only affected FN/types with
no_clean_reference_images; eligible types and real/clean retrieval continue.
Initialization rejects synthesis when the entire configured reference pool has
no supported image under any TEXTURE/clean_image directory.
If no FN remains eligible, the preparation-level reason is
no_eligible_false_negatives while per-FN evidence retains the specific cause.
If every producer is unavailable, the typed skip commits convergence instead of
training on an unchanged iteration.
Missing AnomalyGenNext task weights
A synthesis route may replace checkpoint and recipe with a finetune block
containing dataset_root, frozen validation_testcase, Cosmos3-Nano
base_checkpoint, vae_path, checkpoint_root, future result_handoff, and
optional user recipe_template/defect_spec. These are AnomalyGenNext inputs;
the application policy is not an upstream training recipe.
Run resolve_deft_od_aoi_synthesis.py before the candidate cache. If a handoff
is absent, it emits finetune_requests.json; execute each request through
tao-finetune-anomalygennext once. Resolve again into a new directory, verify
the hash-bound handoff, commit synthesis_bootstrap, and use the emitted
resolved_synthesis_policy.yaml for all later synthesis preparation. Never
start or resume AnomalyGenNext training inside a DEFT iteration.
Files
- ATTRIBUTION.mdAdded by AutoGineer927 B
- BENCHMARK.md6.9 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md17.5 KiB
- assets/default_policy.yaml2.4 KiB
- config/skillspector-baseline.yaml1.7 KiB
- evals/evals.json691 B
- references/anomalygen-pool.md6.9 KiB
- references/data-contract.md6.7 KiB
- references/defaults.md2.9 KiB
- references/gap-routing.md7.1 KiB
- references/pipeline.md8.9 KiB
- references/preflight.md2.5 KiB
- references/scripts-and-agents.md2.3 KiB
- references/source-manifest.md5.0 KiB
- references/tao-analyze-gaps-od-map.md1.2 KiB
- references/training-policy.md2.8 KiB
- scripts/admit_deft_od_aoi_coco.pyScript26.9 KiB
- scripts/commit_deft_od_aoi_stage.pyScript28.6 KiB
- scripts/deft_od_aoi_round_robin_admission.pyScript9.2 KiB
- scripts/deft_od_aoi_round_robin_contract.pyScript656 B
- scripts/deft_od_aoi_round_robin_selection.pyScript18.0 KiB
- scripts/deft_od_aoi_synthesis_contract.pyScript2.7 KiB
- scripts/init_deft_od_aoi.pyScript18.1 KiB
- scripts/prepare_deft_od_aoi_measurement.pyScript8.5 KiB
- scripts/prepare_deft_od_aoi_retrieval.pyScript32.0 KiB
- scripts/prepare_deft_od_aoi_sources.pyScript15.5 KiB
- scripts/prepare_deft_od_aoi_synthesis.pyScript17.0 KiB
- scripts/prepare_deft_od_aoi_training.pyScript7.1 KiB
- scripts/resolve_deft_od_aoi_synthesis.pyScript4.6 KiB
- scripts/select_deft_od_aoi_training.pyScript9.1 KiB
- scripts/tests/fixtures/round_robin_similarity_reference.json1.1 KiB
- scripts/tests/test_admit_deft_od_aoi_coco.pyScript37.6 KiB
- scripts/tests/test_combined_synthesis_capacity.pyScript4.8 KiB
- scripts/tests/test_commit_deft_od_aoi_stage.pyScript27.6 KiB
- scripts/tests/test_deft_od_aoi_round_robin_admission.pyScript5.1 KiB
- scripts/tests/test_deft_od_aoi_round_robin_selection.pyScript23.4 KiB
- scripts/tests/test_init_deft_od_aoi.pyScript29.1 KiB
- scripts/tests/test_prepare_deft_od_aoi_measurement.pyScript6.1 KiB
- scripts/tests/test_prepare_deft_od_aoi_retrieval.pyScript45.1 KiB
- scripts/tests/test_prepare_deft_od_aoi_sources.pyScript13.2 KiB
- scripts/tests/test_prepare_deft_od_aoi_synthesis.pyScript21.7 KiB
- scripts/tests/test_prepare_deft_od_aoi_training.pyScript3.2 KiB
- scripts/tests/test_resolve_deft_od_aoi_synthesis.pyScript2.7 KiB
- scripts/tests/test_select_deft_od_aoi_training.pyScript5.5 KiB
- scripts/tests/test_synthetic_capacity_gate.pyScript7.4 KiB
- skill-card.md5.6 KiB
- skill.oms.sig14.8 KiB
references/anomalygen-pool.md
AnomalyGenNext synthesis contract
Read this only when synthesis is enabled.
Reference pool
synthesis.pool_dataset_root points to the normalized pool consumed by
tao-prepare-anomalygennext-inputs:
POOL/
TEXTURE/
clean_image/*
mask/DEFECT/*An enabled synthesis policy must start with at least one supported image under
some TEXTURE/clean_image directory; initialization rejects a globally empty
reference pool. Individual texture pools may still be absent or empty because
their routed FNs are handled independently during iteration preparation.
The frozen defect_spec.jsonl must define every selected
TEXTURE+DEFECT. Text-routed definitions require
roi_prompt_defect_location. Every KPI FN provides dataset_id so the
application can decide whether it is routed for synthesis. FNs whose dataset
ID is not in synthesis.routes remain in the normal real-data path and are
counted in the synthesis request report. A missing or empty dataset_id is
malformed metadata, not an opt-out mechanism. Routed FNs must also provide
explicit texture_id, defect_class, and fn_mask_source. A box is not a
mask, and this application never invents masks or prompts.
Existing task weights
Each key in synthesis.routes matches a KPI dataset_id and provides:
routes:
line_a:
checkpoint: /models/line_a/adapter.pt
recipe: /models/line_a/canonical_recipe.yamlBoth files must exist before iteration preparation. The recipe must declare the types requested from that route.
Missing task weights
A route may instead carry a one-time fine-tuning plan:
routes:
line_a:
finetune:
dataset_root: /data/line_a/anomalygen
validation_testcase: /data/line_a/validation.jsonl
base_checkpoint: /models/Cosmos3-Nano
vae_path: /models/Wan2.2_VAE.pth
checkpoint_root: /models/anomalygen-checkpoints
result_handoff: /results/line_a/training_handoff.json
recipe_template: /data/line_a/recipe.yaml # optional
defect_spec: /data/line_a/defect_spec.jsonl # optional overridecheckpoint_root must contain the required Qwen tokenizer model assets under
hf/ and facebook/dinov2-large/ with its Transformers config and weights.
The training action mounts this entire directory over the image's
/workspace/paidf-anomalygen/checkpoints; mounting only DINOv2 is insufficient.
Reuse that same complete root for tao-prepare-anomalygennext-inputs.run_amp
and tao-generate-od-defects.generate. Both actions require the canonical
mount rather than independent SAM2 or Hugging Face cache inputs, and each
validates its action-specific assets before GPU work.
Run resolve_deft_od_aoi_synthesis.py before the candidate cache. A missing
handoff produces finetune_requests.json. Execute each request through
tao-finetune-anomalygennext once, then resolve again into a new directory.
Accept a completed handoff only when dataset identity matches, anomaly types
are nonempty, and recipe/checkpoint hashes verify. Freeze the emitted
resolved_synthesis_policy.yaml for the run. Never start or resume
AnomalyGenNext training inside an iteration.
Iteration handoff
prepare_deft_od_aoi_synthesis.py converts exact strict FN/annotation matches
to a filtering YAML for tao-prepare-anomalygennext-inputs. The resulting
generation plan is passed to tao-generate-od-defects. Only its validated
logical binary_coco output enters admission, under the cumulative synthetic
fraction cap. Its exact relative path comes from the authoritative action
contract; the native fine-grained COCO remains separately available as
native_coco. Resolve that relative path against the generation action's
results directory before admission, then pass the concrete file through
--synthetic-coco and the results directory through --synthetic-images.
Admission removes undersized, extreme-aspect, and full-frame boxes, then
allocates available capacity proportionally across source dataset_id values
with deterministic selection.
If there are no routed FNs, synthesis_request.json is a typed SKIPPED
contract whose evidence lists the observed dataset IDs, configured route keys,
total skipped count, per-dataset skipped counts, and a human-readable summary.
If every routed FN fails mask eligibility, the preparation leaf emits a typed
SKIPPED input_contract.json with per-FN reasons. Either contract completes
the optional synthesis stage without AMP, generation, or synthetic re-admission.
Clean reference images are a synthesis-only input, distinct from the DEFT clean
retrieval role. A missing or empty reference directory marks only its routed FNs
with no_clean_reference_images; other eligible types and real-data mining
continue. When all routed FNs have that reason, the input contract is typed
SKIPPED with preparation-level reason no_eligible_false_negatives, carries
the specific per-FN reason and warning evidence, and emits no embedding or AMP
work.
Runtime-generated FN selection
The default generates a bounded plan deterministically after real admission:
synthesis:
cumulative_fraction_of_total_defects: 0.25
fn_selection:
mode: generated_per_type_plan
candidate_topn: 3
max_neighbors_per_fn: 1Pass the admitted real COCO with --real-coco. The planner solves
synthetic / (real + synthetic) = fraction, subtracts previously admitted
synthetic images, and distributes the remaining whole-FN budget across anomaly
types in proportion to eligible FN counts with deterministic remainder ties.
The planner derives the expected finalized generation yield for one selected
FN as:
retained neighbors per FN × mask branches per neighbor × images per branchThe accepted configuration uses one retained neighbor, two mask branches, and
one generated image per branch, so the value is 1 × 2 × 1 = 2. This derived
value is recorded as images_per_fn in the frozen plan evidence. The
synthesis-only candidate_topn defaults to three because it supplies fallback
neighbors before AMP finalization; it is independent of both max-similarity
candidate overfetch and round-robin refill. It does not increase the expected
yield once max_neighbors_per_fn retains only one neighbor. It is the AMP
compute knob: each eligible candidate produces two AMP requests, so one FN
costs up to 2 * candidate_topn placement attempts to retain
2 * max_neighbors_per_fn finalized images. Increasing
max_neighbors_per_fn automatically increases the bounded-plan yield by two
images per added neighbor.
Set synthesis.fn_selection.mode: all_eligible explicitly only when every
routed FN should proceed without pre-generation budgeting. That compatibility
mode does not require --real-coco, but the cumulative admission cap still
applies after generation.
It writes synthetic_plan.json, binds its SHA-256 into the request, and records
the complete budget calculation. If no budget remains, preparation emits a
typed SKIPPED/no_synthetic_budget result.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools, Needs Python
The author says: Requires TAO RT-DETR and Data Services images, CUDA GPUs, and normalized COCO roles.
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- NVIDIA Corporation
- Publisher
- NVIDIA (Official)
- Source
- NVIDIA/skills · skills/tao-run-deft-od-aoi · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by NVIDIA Corporation or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download tao-run-deft-od-aoi.zip