Tao Generate Image Grounding
NVIDIAOfficialCreated by NVIDIA Corporation
- Skill
- Workflow
- Data and AI
- Apache-2.0
- Medium risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The tao-generate-image-grounding skill provides a structured workflow for generating phrase-grounded training data. It utilizes a vision-language model (VLM) to perform a two-step process: first, it cleans captions and extracts referring expressions with character spans; second, it predicts pixel-space bounding boxes for those expressions. The pipeline supports various VLM backends, including Gemini and OpenAI-compatible endpoints like NIM or vLLM, and includes built-in checkpointing to allow for efficient, resumable processing of large image datasets.
What it does
- Extracts referring expressions and character spans from image captions.
- Generates pixel-space bounding boxes for identified expressions.
- Supports multiple VLM backends including Gemini and OpenAI-compatible services.
- Provides per-sample checkpointing for resumable, fault-tolerant processing.
- Allows for flexible pipeline execution, enabling step-by-step or full-run processing.
- Outputs structured JSONL annotations suitable for training grounding models.
When to use it
- When you need to create phrase-grounded training datasets from existing image-caption pairs.
- When you want to auto-label images with bounding boxes for object detection or grounding tasks.
- When you need to validate or refine caption-to-image alignment using a VLM.
- When you have a large dataset and require a resumable, automated annotation workflow.
Advantages
- Automates labor-intensive manual annotation tasks using powerful VLM teacher models.
- Highly configurable with support for various self-hosted or cloud-based VLM endpoints.
- Resilient workflow design with built-in checkpointing to prevent data loss during long runs.
- Flexible execution allows for inspecting intermediate results before full-scale processing.
Usage examples
- “Run the image grounding pipeline on my dataset of images and captions.”
- The agent will guide you through setting up the input JSONL, selecting your VLM backend (e.g., Gemini or a local vLLM server), and executing the two-step extraction and grounding process.
- “I need to extract referring expressions from my captions but not ground them yet.”
- The agent will configure the workflow to run only step 0, producing a JSONL file containing cleaned captions and identified expressions with character spans.
- “How do I re-run the grounding step after fixing my configuration?”
- The agent will instruct you to set workflow.force_reprocess to true to ignore existing checkpoints and re-run the pipeline from scratch.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/tao-generate-image-grounding/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip tao-generate-image-grounding.zip -d .agents/skills
Documentation by NVIDIA Corporation
Image Grounding Pipeline
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).
Turn (image, caption) pairs into per-image grounded annotations: cleaned captions, referring expressions with character spans, and pixel-space bounding boxes for each expression. A single VLM (Gemini or any OpenAI-compatible endpoint) handles both steps.
Purpose
Generate phrase-grounded training data for referring-expression and grounding models. The VLM acts as a "teacher" annotator: Step 0 extracts referring expressions from the caption while looking at the image; Step 1 returns one bbox set per expression for each image.
Pipeline Architecture
Step 0: Expression extraction → VLM cleans caption, extracts referring expressions + char spans
Step 1: Phrase grounding → VLM returns pixel bboxes + scores per expressionSteps are individually selectable via workflow.steps. Each step writes a per-sample checkpoint to step_<N>_*/.ckpt/<sample_id>.json and skips already-processed records on re-run. Set workflow.force_reprocess: true to ignore checkpoints and reprocess from scratch.
Instructions
Initial setup
When a user wants to run this pipeline, walk through these steps:
Input JSONL: Ask for the JSONL path. Each line must be one object like
{"image_path": "...", "caption": "..."}.image_pathcan be absolute or relative.Image root: If any
image_pathvalues are relative, setdata.image_rootto the directory they should resolve from.API access: Ask the user which VLM endpoint they want to use. Present these five options and act on the choice:
Gemini — set
vlm.backend: "gemini"; requireGOOGLE_API_KEY(env var orvlm.gemini.api_key).NIM (e.g.
https://inference-api.nvidia.com/v1) — setvlm.backend: "openai"; collectbase_url,model_name, andapi_key.TAO inference microservice (self-hosted, OpenAI-compatible). Confirm whether the server is already running:
Running — collect
base_url,model_name, and (optionally)api_key; setvlm.backend: "openai".Not running — guide the user through the
skills/applications/tao-run-inference-serviceskill, which stands up a local TAO inference microservice with an OpenAI-compatible API. Before promising a specific model, checkskills/applications/tao-run-inference-service/references/service.yamlforvalid_network_arch_config_basenames. Once the server is up, collectbase_url,model_name, and (optionally)api_key; setvlm.backend: "openai".
vLLM (self-hosted, OpenAI-compatible). Confirm whether the server is already running:
Running — collect
base_url,model_name, and (optionally)api_key; setvlm.backend: "openai".Not running — follow references/vllm_server.md to install and launch a vLLM server, then collect
base_url,model_name, and (optionally)api_key; setvlm.backend: "openai".
Custom (any other OpenAI-compatible endpoint) — set
vlm.backend: "openai"; collectbase_url,model_name, and (optionally)api_key.
If the user has no endpoint and does not want to set one up, stop and help resolve API access first.
Workflow steps: Choose one of:
Full pipeline:
["0", "1"]Expression extraction only:
["0"]Grounding only:
["1"], which requires existing step-0 output atresults_dir/step_0_expression_extraction/annotations.jsonl
Resume vs fresh run: By default, the workflow reuses checkpoints and skips completed records. To reprocess everything, set
image_grounding.workflow.force_reprocess=true.
Running the pipeline
The pipeline runs inside the TAO Toolkit container via the auto_label CLI:
auto_label generate -e /path/to/spec.yaml \
results_dir=/results \
image_grounding.data.input_jsonl=/data/captions.jsonl \
image_grounding.data.image_root=/data/images \
image_grounding.vlm.gemini.api_key=$GOOGLE_API_KEYGenerate a default spec: auto_label default_specs results_dir=/results module_name=auto_label, then set autolabel_type: "image_grounding". All fields support Hydra dot-notation overrides on the command line.
See references/configuration.md for the full YAML structure, all parameters, model/endpoint setup, and error patterns.
Recommended pilot workflow
Run on 5-10 images with both steps
Inspect
step_0_expression_extraction/annotations.jsonl— arecleaned_captionandexpressions[]accurate? Are the right noun phrases captured?Inspect
step_1_grounding/annotations.jsonl— do the bboxes inexpressions[].instances[]look right? Are confidence scores reasonable?If quality is insufficient, switch the VLM to a stronger model (e.g.
gemini-2.5-pro) or raisemedia_resolution/max_output_tokens, then re-run withforce_reprocess=true.Scale to the full dataset once satisfied.
Configuration
Key configuration fields (full reference in references/configuration.md):
| Field | Default | Description |
|---|---|---|
workflow.steps | ["0","1"] | Which pipeline steps to execute ("0" = expressions, "1" = grounding) |
workflow.max_workers | 4 | Parallel threads per step (watch API rate limits) |
workflow.force_reprocess | false | Ignore per-sample checkpoints and reprocess from scratch |
vlm.backend | "gemini" | "gemini" or "openai" (OpenAI-compatible endpoint) |
data.input_jsonl | required | Path to input JSONL with image_path + caption per line |
data.image_root | "" | Optional prefix for resolving relative image_path entries |
Inputs
A single JSONL file at data.input_jsonl. One JSON object per line:
| Field | Required | Description |
|---|---|---|
image_path | yes | Absolute path, or relative path resolved against data.image_root |
caption | yes | Free-text caption for the image |
image_id | no | Stable identifier; auto-derived from the filename if missing |
width, height | no | Image dimensions in pixels; default to 1920×1080 for bbox clamping if missing |
Outputs
All outputs go to results_dir/:
step_0_expression_extraction/annotations.jsonl— per-record output enriched withcleaned_captionandexpressions[](each withtext,expression_id,char_span,noun_chunk, emptyinstances[]).step_1_grounding/annotations.jsonl— same records withexpressions[].instances[]filled in (each instance hasbbox: [x1,y1,x2,y2]in pixel space,scorein[0.0, 1.0], andbbox_id).results_dir/annotations.jsonl— copy of the last step's output for convenience.step_<N>_*/.ckpt/<sample_id>.json— per-sample checkpoints used for resume.
Prerequisites
Container:
nvcr.io/nvidia/tao/tao-toolkit:7.3.0-pyt<!-- versions-key: images.tao_toolkit.pyt -->API access: At least one VLM endpoint (Gemini API key or OpenAI-compatible endpoint capable of image input)
Files
- ATTRIBUTION.mdAdded by AutoGineer954 B
- BENCHMARK.md7.1 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md7.9 KiB
- config/skillspector-baseline.yaml834 B
- evals/evals.json819 B
- references/configuration.md9.3 KiB
- references/skill_info.yaml1.1 KiB
- references/vllm_server.md6.8 KiB
- skill-card.md4.5 KiB
- skill.oms.sig5.4 KiB
skill-card.md
Description: <br>
Two-step image grounding pipeline: extracts referring expressions from (image, caption) pairs and grounds them to pixel-space bounding boxes via a VLM. <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 who need to generate phrase-grounded training data for referring-expression and grounding models by using a VLM (Gemini or an OpenAI-compatible endpoint) to extract referring expressions from image-caption pairs and ground them to pixel-space bounding boxes inside the TAO Toolkit container. <br>
Deployment Geography for Use: <br>
Global <br>
Requirements / Dependencies: <br>
Requires API Key or External Credential: [Optional] <br> Credential Type(s): [API key] <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>
vLLM Server Setup <br>
Skill Info <br>
vLLM Project <br>
TAO Skill Bank <br>
Skill Output: <br>
Output Type(s): [Files, Shell commands, Configuration instructions] <br> Output Format: [JSONL annotation files with per-sample checkpoint JSON] <br> Output Parameters: [1D] <br> Other Properties Related to Output: [Outputs include cleaned captions, referring expressions with character spans, and pixel-space bounding boxes with confidence scores; per-sample checkpoints enable resume] <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), 1 attempt per task, each run in an isolated k8s-sandbox pod. <br>
Evaluation Metrics Used: <br>
Reported benchmark dimensions: <br>
Security: Is it safe to use? Scored from the security signal. <br>
Correctness: Is the answer correct? Scored from the accuracy signal. <br>
Discoverability: Was the right skill loaded when needed? Scored from the skill_execution signal. <br>
Effectiveness: Did the skill help complete the task? Equal-weight mean of goal_accuracy and behavior_check. <br>
Efficiency: Did it avoid wasted tool calls and token usage? 50% skill_efficiency (tool-call productivity) and 50% 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 (legacy wire id; 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. <br>
Evaluation Results: <br>
| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) |
|---|---|---|
| Overall | 94.5% | 77.7% |
| 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% | 0.0% |
| Effectiveness | 31.7% → 100.0% (+68.3 points) | 43.3% → 90.0% (+46.7 points) |
| Efficiency | 72.7% | 99.7% → 98.6% (-1.1 points) |
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 an API key
The author says: Requires docker + nvidia-container-toolkit + at least one VLM endpoint (Gemini API key or OpenAI-compatible).
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- Instructions that use the network
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-generate-image-grounding · 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-generate-image-grounding.zip