Tao Mine Od Images
NVIDIAOfficialCreated by NVIDIA Corporation
- Skill
- Tool integration
- Data and AI
- Apache-2.0
- Medium risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The tao-mine-od-images skill provides a structured interface for running the TAO Data Services TMM unique-neighbor matching process. It enables users to mine a bijectively-assigned set of unique source images that are most similar to a target set of samples, based on pre-computed embeddings. The skill supports both global allocation and class-stratified mining, allowing for targeted data selection in object detection workflows. It requires input parquets containing filepaths and embeddings, and produces a final list of unique filepaths along with summary statistics.
What it does
- Performs unique-neighbor matching to select source images based on embedding similarity.
- Supports global allocation for general mining tasks.
- Enables class-stratified mining to address rare classes in object detection datasets.
- Generates a final parquet file containing the selected unique source filepaths.
- Provides summary statistics including coverage percentage and per-class breakdowns.
- Offers optional visualization of per-class grids to inspect mining results.
When to use it
- When you need to select a specific number of unique source images that closely match target samples.
- When preparing training data for object detection and needing to balance class representation.
- When you have pre-computed embedding parquets and need to perform similarity-based data mining.
- When you need to exclude specific images from the source pool during the mining process.
Advantages
- Automates the selection of representative data for object detection models.
- Provides flexible allocation policies to handle both general and rare-class scenarios.
- Integrates directly with TAO Data Services for efficient GPU-accelerated processing.
- Includes validation scripts to ensure configuration integrity before execution.
Usage examples
- “Mine 500 unique images from my source pool that are most similar to my target dataset using global allocation.”
- The skill will use the provided source and target embedding parquets to identify the 500 closest unique neighbors and output them to the specified directory.
- “Perform class-stratified mining to improve representation of rare classes like person and bicycle.”
- By setting the allocation_policy to class_stratified and providing the rare_class_list and detection files, the miner will prioritize these classes during the selection process.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/tao-mine-od-images/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip tao-mine-od-images.zip -d .agents/skills
Documentation by NVIDIA Corporation
TAO Mine OD Images (Unique Neighbor Matching)
Use this skill to run TAO Data Services TMM unique-neighbor matching mining for object detection. The skill consumes pre-embedded source and target parquets and writes a directory of outputs including final_unique_files.parquet and summary.json. It does not compute embeddings; upstream steps must produce the source and target embedding parquets first.
The container entrypoint is:
tmm unique_neighbor_matching -e /absolute/path/to/unique_neighbor_matching.yamlInputs
The user can provide either an existing spec or the fields needed to generate one.
Required spec fields:
| Field | Meaning |
|---|---|
source_path | Absolute path to the source embeddings parquet or directory of parquets. |
target_path | Absolute path to the target embeddings parquet or directory of parquets. |
output_dir | Absolute path to the output directory. Writes final_unique_files.parquet, summary.json, and per-iteration parquets. |
desired_unique_count | Total number of unique source files to retrieve. |
Common optional fields:
| Field | Default | Meaning |
|---|---|---|
allocation_policy | global | global or class_stratified. |
distance_metric | euclidean | One of euclidean, cosine, or manhattan. Embeddings are L2-normalized before search. |
candidate_expansion_factor | 5 | Candidate-pool multiplier per iteration. Increase if desired count is not reached. |
source_embedding_column | embedding | Embedding column in source_path. |
target_embedding_column | embedding | Embedding column in target_path. |
source_filepath_column | filepath | Filepath column in source_path; also the column of final_unique_files.parquet. |
target_filepath_column | filepath | Filepath column in target_path. |
exclude_path | null | Parquet with a filepath column; those images are removed from the source pool. |
source_detection_file | null | COCO .json or KITTI label directory for the source. Required for class_stratified. |
target_detection_file | null | COCO .json or KITTI label directory for the target. Required for class_stratified. |
detection_format | null | coco or kitti. Required whenever a detection file is set; never inferred from the path. |
rare_class_list | "" | Comma-separated rare class names, e.g. "person,bicycle". Required for class_stratified. |
save_embeddings | false | Include embeddings in per-iteration parquet outputs. |
visualize | false | Save per-class visualization grids (requires Pillow and matplotlib). |
Both input parquets must contain the filepath and embedding columns. Source and target embeddings must have been produced by the same encoder; mismatched encoders produce garbage output.
The default template is assets/default_unique_neighbor_matching.yaml.
Quick Start
Run from the tao-skill-bank repo root. Resolve the pinned TAO Data Services image from versions.yaml, verify the spec, mount the run root with identical host/container paths, and stream the Docker logs.
Write the spec into the output directory. The run does not retain it, so a mined set otherwise carries no record of the budget, allocation policy or rare-class list that produced it — and those decide which images were selected. Keeping them together makes the selection recoverable from the run alone.
OUTPUT_DIR=/absolute/path/for/this/run # output_dir in the spec
SPEC="$OUTPUT_DIR/unique_neighbor_matching.yaml" # spec lives beside its outputs
RUN_ROOT=/absolute/path/that/contains/specs/data/and/results
GPU_COUNT=1
python3 skills/data/tao-mine-od-images/scripts/verify_unique_neighbor_matching_spec.py \
--spec "$SPEC"
DS_IMAGE="$(scripts/resolve_versions_key.py images.tao_toolkit.data_services)"
docker run --rm --gpus "$GPU_COUNT" --shm-size=8g --network=host \
-v "$RUN_ROOT:$RUN_ROOT" \
-w "$RUN_ROOT" \
"$DS_IMAGE" \
tmm unique_neighbor_matching -e "$SPEC"Do not pass --user $(id -u):$(id -g) to the TAO data-services container; some TAO DS images call getpass.getuser() at startup and fail when the UID is not in /etc/passwd.
Generate A Spec
If the user provides source/target paths and an output directory instead of a
ready spec, copy the template and fill in the nulls. Every tuning value it
already carries is the one this stage wants — change one only deliberately.
cp skills/data/tao-mine-od-images/assets/default_unique_neighbor_matching.yaml "$SPEC"Fill source_path, target_path, output_dir and desired_unique_count, all
as absolute paths, then validate:
python3 skills/data/tao-mine-od-images/scripts/verify_unique_neighbor_matching_spec.py --spec "$SPEC"source_path: /absolute/path/source_embeddings.parquet
target_path: /absolute/path/target_embeddings.parquet
output_dir: /absolute/path/results/mining_output
desired_unique_count: 500
allocation_policy: global # or class_stratified — see below
distance_metric: euclideanFor class-stratified mode set allocation_policy: class_stratified and supply
rare_class_list, source_detection_file, target_detection_file and
detection_format. verify rejects the policy without them: absent those
fields the miner falls back to a global match, which mines the wrong images
rather than failing.
The template is the only place a default value lives, so nothing can disagree
with it. verify reports the budget, policy and metric, since the mined parquet
is a list of filepaths and records nothing about why those files were chosen.
Keep the spec, input parquets, and output directory under RUN_ROOT so the same
paths resolve inside the container.
Preflight
Before launching Docker:
Verify Docker and GPU access:
docker info > /dev/null
nvidia-smi -LResolve and pull the data-services image if needed:
DS_IMAGE="$(scripts/resolve_versions_key.py images.tao_toolkit.data_services)"
docker image inspect "$DS_IMAGE" > /dev/null || docker pull "$DS_IMAGE"Validate the spec:
python3 skills/data/tao-mine-od-images/scripts/verify_unique_neighbor_matching_spec.py \
--spec "$SPEC"Confirm
RUN_ROOTcontains the spec, both input parquets (or directories), and the output directory. MountRUN_ROOTto the same absolute path inside Docker.
Outputs
| Artifact | Location |
|---|---|
| Mined source filepaths | output_dir/final_unique_files.parquet |
| Coverage and allocation stats | output_dir/summary.json |
| Per-iteration intermediates | output_dir/<subset>_iteration_<N>_topn_<K>.parquet |
| Per-class viz grids | output_dir/*.png (only if visualize: true) |
final_unique_files.parquet contains one filepath column. summary.json includes retrieved_unique_count, coverage_pct, and (when detection files are provided) per-class breakdowns for the target and selected source sets.
Troubleshooting
The subtask unique_neighbor_matching requires -e/--experiment_spec_file: rerun with tmm unique_neighbor_matching -e "$SPEC".
Input path not found inside Docker: use a RUN_ROOT mount where host and container paths are identical.
ValueError: detection_format is required: set detection_format: coco or detection_format: kitti whenever source_detection_file or target_detection_file is set.
ValueError: rare_class_list is required when allocation_policy is class_stratified: set rare_class_list and both detection files when using class_stratified.
Low coverage_pct in summary.json: the source pool is smaller than desired_unique_count. Expand the pool or increase candidate_expansion_factor.
No GPU or cuDF/cuML errors: mining requires at least one CUDA GPU. Check nvidia-smi -L, the Docker --gpus flag, and the NVIDIA container toolkit installation.
Files
- ATTRIBUTION.mdAdded by AutoGineer924 B
- BENCHMARK.md6.9 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md8.5 KiB
- assets/default_unique_neighbor_matching.yaml457 B
- config/skillspector-baseline.yaml1.3 KiB
- evals/evals.json893 B
- references/skill_info.yaml897 B
- scripts/verify_unique_neighbor_matching_spec.pyScript7.1 KiB
- skill-card.md4.8 KiB
- skill.oms.sig5.5 KiB
skill-card.md
Description: <br>
Run TAO Data Services TMM unique-neighbor matching mining from embedding parquet files for object detection workflows. <br>
This skill is ready for commercial/non-commercial use. <br>
Owner
NVIDIA <br>
License/Terms of Use: <br>
Apache 2.0 <br>
Use Case: <br>
Developers and engineers building object detection data pipelines who need to mine a bijectively-assigned set of unique source images closest to target samples, using global allocation or class-stratified allocation for specified rare classes. <br>
Deployment Geography for Use: <br>
Global <br>
Requirements / Dependencies: <br>
Requires API Key or External Credential: [Not Specified] <br> Credential Type(s): [None identified] <br>
Do not include secrets in prompts/logs/output; use least-privilege credentials; rotate keys as appropriate. <br>
Known Risks and Mitigations: <br>
Risk: Review before execution as proposals could introduce incorrect or misleading guidance into skills. <br> Mitigation: Review and scan skill before deployment. <br>
Reference(s): <br>
skill_info.yaml <br>
Skill Output: <br>
Output Type(s): [Shell commands, Configuration instructions, Files] <br> Output Format: [Markdown with inline bash code blocks and YAML spec files] <br> Output Parameters: [1D] <br> Other Properties Related to Output: [Runs produce final_unique_files.parquet, summary.json, and per-iteration parquets in the configured output directory.] <br>
Evaluation Agents Used: <br>
Claude Code (
aws/anthropic/bedrock-claude-opus-4-8) <br>Codex (
openai/openai/gpt-5.5) <br>
Evaluation Tasks: <br>
1 evaluation task (1 positive) with 1 attempt per task, each attempt run in an isolated k8s-sandbox pod. <br>
Evaluation Metrics Used: <br>
Reported benchmark dimensions: <br>
Security: Checks whether the skill is safe to use: unsafe operations, secret leakage, and unauthorized access. <br>
Correctness: Checks whether the final answer is correct against the reference answer. <br>
Discoverability: Checks whether the right skill was loaded when needed. <br>
Effectiveness: Checks whether the skill helped complete the user's goal and expected workflow (equal-weight goal accuracy and behavior check). <br>
Efficiency: Checks whether the skill avoided wasted tool calls and token usage (equal-weight tool productivity and token efficiency). <br>
Underlying evaluation signals used in this run: <br>
security: Unsafe operations, secret leakage, and unauthorized access. <br>skill_execution: Whether the expected skill was selected, decoys were avoided, and the workflow executed. <br>skill_efficiency: Tool-call productivity (routing is scored under Discoverability). <br>accuracy: Final-answer correctness against the reference answer. <br>goal_accuracy: Whether the user's goal was achieved. <br>behavior_check: Whether the expected workflow behavior was followed. <br>token_efficiency: Actual uncached prompt plus completion usage (50% of Efficiency). <br>
Evaluation Results: <br>
| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) |
|---|---|---|
| Overall | 99.7% — baseline ran, but no comparable score was available; uplift unavailable | 96.2% — baseline ran, but no comparable score was available; uplift unavailable |
| Security | 100.0% → 100.0% (±0.0 points) | 100.0% → 100.0% (±0.0 points) |
| Correctness | 0.0% → 100.0% (+100.0 points) | 20.0% → 100.0% (+80.0 points) |
| Discoverability | 100.0% — baseline ran, but no comparable score was available; uplift unavailable | 95.0% — baseline ran, but no comparable score was available; uplift unavailable |
| Effectiveness | 27.5% → 100.0% (+72.5 points) | 40.0% → 87.5% (+47.5 points) |
| Efficiency | 98.5% — baseline ran, but no comparable score was available; uplift unavailable | 98.5% — baseline ran, but no comparable score was available; uplift unavailable |
Skill Version(s): <br>
0.1.0 (source: frontmatter) <br>
Ethical Considerations: <br>
NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our terms of service, developers should work with their internal team to ensure this skill meets requirements for the relevant industry and use case and addresses unforeseen product misuse. <br>
(For Release on NVIDIA Platforms Only) <br> Please report quality, risk, security vulnerabilities or NVIDIA AI Concerns here. <br>
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 a command-line tool, Needs Python
The author says: Requires docker, nvidia-container-toolkit, one or more CUDA GPUs, and the TAO data-services container pinned in versions.yaml.
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- References to credential files
- 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-mine-od-images · 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-mine-od-images.zip