
Tao Train Ocdnet
- 1.4k installs
- 2.8k repo stars
- Updated August 4, 2026
- nvidia/skills
tao-train-ocdnet is an NVIDIA TAO agent skill that builds OCDNet scene text detection training, evaluation, export, prune, quantize, and inference commands for developers detecting oriented text regions.
About
tao-train-ocdnet is an NVIDIA/skills agent skill at version 0.1.0 for OCDNet scene text detection—detecting arbitrary-oriented text regions in natural images using a differentiable binarization approach. The skill_info.yaml defines 7 TAO actions: train, quantize, evaluate, export, prune, retrain, and inference, each with YAML spec templates and Docker-backed ocdnet CLI commands. AutoML is enabled and NVSkills-Eval reports up to 97% Codex correctness and 100% effectiveness with Claude Code across 1 evaluation task. Reach for tao-train-ocdnet when fine-tuning oriented text detectors, exporting ONNX checkpoints, or running prune-and-retrain compression in TAO. Skip it for unrelated vision tasks like 3D perception or panoptic segmentation that need different TAO model skills.
- TAO OCDNet object change detection training
- Paired-image dataset handling
- Change-detection metrics and validation
- Config templates for TAO experiments
- Export paths for inference services
Tao Train Ocdnet by the numbers
- 1,442 all-time installs (skills.sh)
- +28 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #197 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/nvidia/skills --skill tao-train-ocdnetAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.4k |
|---|---|
| repo stars | ★ 2.8k |
| Last updated | August 4, 2026 |
| Repository | nvidia/skills ↗ |
How do you train OCDNet text detection in TAO?
Train NVIDIA TAO OCDNet change-detection models on paired imagery with configs, metrics, and export for monitoring or geospatial apps.
Who is it for?
Computer vision engineers training NVIDIA TAO OCDNet oriented text detectors with prune, quantize, and ONNX export pipelines.
Skip if: Developers training unrelated TAO architectures like Sparse4D 3D perception or OneFormer segmentation instead of scene text detection.
When should I use this skill?
User asks to train, evaluate, export, prune, or run inference on NVIDIA TAO OCDNet scene text detection models.
What you get
TAO OCDNet training checkpoints, evaluation metrics, pruned graphs, quantized models, and exported ONNX files.
- Trained OCDNet checkpoints
- ONNX export files
- Evaluation metric reports
By the numbers
- Defines 7 TAO pipeline actions for OCDNet
- Skill version 0.1.0 with AutoML enabled in skill_info.yaml
- Codex correctness benchmark: 97% on 1 NVSkills-Eval task
Files
OCDNet
OCDNet for scene text detection. Detects arbitrary-oriented text regions in natural images using a differentiable binarization approach.
Set model.pretrained_model_path for pretrained weights.
For TAO Deploy TensorRT actions (gen_trt_engine, TensorRT evaluate, and TensorRT inference), read references/tao-deploy-ocdnet.md first. Deploy spec templates live in this skill's references/ folder with the spec_template_deploy_*.yaml prefix.
The PyT OCDNet CLI supports train, evaluate, export, inference, prune, quantize, and default_specs. It does not expose PyT-side retrain or gen_trt_engine subcommands. The model skill exposes retrain by running ocdnet train with model.load_pruned_graph: true and model.pruned_graph_path. Resume from an epoch checkpoint uses ocdnet train plus train.resume_training_checkpoint_path. TensorRT engine generation is owned by the deploy workflow.
Dataclass Schemas
Generated TAO Core schemas are packaged in schemas/<action>.schema.json, with schemas/manifest.json listing available actions. Each generated schema also emits references/spec_template_<action>.yaml from the schema top-level default field. AutoML enablement is declared at the model layer in references/skill_info.yaml via automl_enabled. Runnable AutoML still requires schemas/train.schema.json and references/spec_template_train.yaml to exist and parse. Use the packaged train schema for automl_default_parameters, automl_disabled_parameters, defaults, min/max bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect ~/tao-core at runtime; maintainers regenerate schemas/templates before packaging the skill bank.
Train Action Policy
This model is AutoML-enabled at the model layer. Before handling any train-stage request, read references/skill_info.yaml and resolve the run override from either an explicit automl_policy value or the user's workflow request. Use automl_policy: on by default and only expose on / off in new launch prompts. Treat phrases like "turn off AutoML", "disable AutoML", "no HPO", or "plain training" as automl_policy: off for this run only. When automl_policy: on, automl_enabled: true, and both schemas/train.schema.json and references/spec_template_train.yaml are packaged, route the train action through tao-skill-bank:tao-run-automl by default with this model's skill_dir. Preserve workflow/application overrides for datasets, specs, output directories, GPU/platform settings, parent checkpoints, and automl_policy. Use direct model training only when automl_policy: off or the packaged train schema/template is missing; in the missing-schema case, report that AutoML is enabled but not runnable for this model until schemas are generated.
For AutoML train, use train_loss_epoch or train_loss as the optimization metric with direction=minimize. The Lightning progress log emits train_loss_epoch, and TAO status.json records the same final value under train_loss. For one-epoch local AutoML smoke runs, set train.lr_scheduler.args.warmup_epoch: 0; leaving warmup equal to the epoch budget causes the trainer to fail before a recommendation can report a metric. Non-train actions such as evaluate, inference, export, and deploy flows stay in this model skill. The per-run automl_policy override does not change model metadata.
Training Requirements
- Dataset type: ocdnet
- Formats: default
- Monitoring metric: hmean
Per-Action Dataset Requirements
| Action | Spec Key | Source | Runtime value | List? |
|---|---|---|---|---|
| evaluate | dataset.validate_dataset.data_path | eval_dataset | extracted validation split folder with img/ and gt/ | Yes |
| inference | inference.input_folder | inference_dataset or eval_dataset | extracted image folder | No |
| prune | dataset.validate_dataset.data_path | eval_dataset | extracted validation split folder with img/ and gt/ | Yes |
| quantize | dataset.train_dataset.data_path | train_datasets | extracted train split folder with img/ and gt/ | Yes |
| quantize | dataset.validate_dataset.data_path | eval_dataset | extracted validation split folder with img/ and gt/ | Yes |
| quantize | dataset.quant_calibration_dataset.images_dir | train_datasets or calibration_dataset | extracted calibration image folder | No |
| train | dataset.train_dataset.data_path | train_datasets | extracted train split folder with img/ and gt/ | Yes |
| train | dataset.validate_dataset.data_path | eval_dataset | extracted validation split folder with img/ and gt/ | Yes |
| retrain | dataset.train_dataset.data_path | train_datasets | extracted train split folder with img/ and gt/ | Yes |
| retrain | dataset.validate_dataset.data_path | eval_dataset | extracted validation split folder with img/ and gt/ | Yes |
Typical Spec Overrides
Data source overrides are mandatory for every action — the agent MUST construct data source paths from the Per-Action Dataset Requirements table above and include them in spec_overrides. OCDNet does not unpack dataset archives at runtime. If the source is train.tar.gz, test.tar.gz, or img.tar.gz, extract it first and pass the split folder or image folder into the spec. The split folder must contain img/ and gt/; alternatively, pass a UTF-8 datalist text file whose lines map image paths to label paths.
TRAIN_ROOT = "/path/to/extracted/train"
EVAL_ROOT = "/path/to/extracted/test"
INFER_IMG_DIR = "/path/to/extracted/test/img"
CALIB_IMG_DIR = "/path/to/extracted/train/img"train (mandatory data sources):
{
"train.num_epochs": 30,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
"dataset.train_dataset.loader.batch_size": 16,
"dataset.train_dataset.data_path": [TRAIN_ROOT],
"dataset.validate_dataset.data_path": [EVAL_ROOT],
}evaluate (mandatory data sources):
{
"evaluate.checkpoint": "<selected train/AutoML checkpoint>",
"dataset.validate_dataset.data_path": [EVAL_ROOT],
}inference (mandatory data sources):
{
"inference.checkpoint": "<selected train/AutoML checkpoint>",
"inference.input_folder": INFER_IMG_DIR,
}prune (mandatory data sources):
{
"prune.checkpoint": "<selected train/AutoML checkpoint>",
"dataset.validate_dataset.data_path": [EVAL_ROOT],
}quantize (mandatory data sources):
{
"quantize.model_path": "<selected train checkpoint or exported ONNX>",
"dataset.train_dataset.data_path": [TRAIN_ROOT],
"dataset.validate_dataset.data_path": [EVAL_ROOT],
"dataset.quant_calibration_dataset.images_dir": CALIB_IMG_DIR,
}resume training (mandatory data sources):
{
"train.resume_training_checkpoint_path": "<exact model_epoch checkpoint>",
"dataset.train_dataset.data_path": [TRAIN_ROOT],
"dataset.validate_dataset.data_path": [EVAL_ROOT],
}retrain from prune output (mandatory data sources):
{
"model.load_pruned_graph": True,
"model.pruned_graph_path": "<selected prune output>",
"dataset.train_dataset.data_path": [TRAIN_ROOT],
"dataset.validate_dataset.data_path": [EVAL_ROOT],
}default_specs:
{
"results_dir": "<writable output directory>",
}Eval Dataset
Optional. Test dataset provided as separate tarball.
Important Parameters
- model.backbone: Default deformable_resnet18. Deformable convolutions improve text region detection for irregular text.
- train.optimizer.args.lr: Learning rate. Default 0.001 (Adam).
- postprocess.thresh: Binarization threshold for text region extraction.
- postprocess.box_thresh: Box confidence threshold for filtering detections.
Multi-GPU / Multi-Node
Launch method: Lightning-managed (single python process, Lightning spawns workers).
| Spec Key | Description | Default |
|---|---|---|
train.num_gpus | Number of GPUs | 1 |
train.gpu_ids | GPU device indices | [0] |
train.distributed_strategy | ddp, fsdp, or deepspeed_stage_3_offload | ddp |
ddpwith activation checkpointing:find_unused_parameters=Falseddpwithout:find_unused_parameters=Truefsdpforces FP16- `deepspeed_stage_3_offload` is uniquely supported for OCDNet (forces FP16)
- FAN backbones auto-enable
sync_batchnorm
Hardware
Minimum 1 GPU(s), recommended 1 GPU(s). 8GB+ VRAM per GPU. OCDNet is lightweight. Single GPU is sufficient for most datasets.
Error Patterns
Low detection rate: Tune postprocess.thresh and box_thresh. Default thresholds may be too aggressive for some datasets.
One-epoch smoke train with default scheduler: train.num_epochs must not equal train.lr_scheduler.args.warmup_epoch. For one-epoch validation, set warmup_epoch: 0; for normal starter runs, keep num_epochs > warmup_epoch.
Archive passed as dataset path: dataset.*.data_path is not an archive path for OCDNet. Passing train.tar.gz or test.tar.gz directly causes the dataloader to open the gzip as a UTF-8 datalist. Extract the archive and pass the split folder containing img/ and gt/, or pass a real UTF-8 datalist file.
Quantize checkpoint type: Do not pass model_best.pth to the PyTorch quantize path. Some older PyT runtimes wrote model_best.pth without full Lightning checkpoint metadata. The default torchao quantize path should use the intended full model_epoch_<epoch>_step_<step>.pth checkpoint and write quantized_model_torchao.pth.
Default specs output directory: ocdnet default_specs requires a writable results_dir override, for example results_dir=/workspace/run/results/default_specs.
Checkpoint Handoff
OCDNet train writes model_best.pth plus full Lightning epoch checkpoints such as model_epoch_001_step_00046.pth; it may also write ocd_model_latest.pth as a latest symlink. Use model_best.pth for evaluate.checkpoint, inference.checkpoint, export.checkpoint, and prune.checkpoint when the user asks for the best checkpoint. Use a specific model_epoch_<epoch>_step_<step>.pth for train.resume_training_checkpoint_path and for any action that explicitly needs a full Lightning checkpoint. Prune writes artifacts such as pruned_<ch_sparsity>.pth; use the exact pruned .pth artifact for model.pruned_graph_path when retraining from a pruned graph. Use a latest checkpoint only when the user explicitly asks for latest.
If quantize is retried with a PyTorch backend, resolve the full model_epoch_<epoch>_step_<step>.pth that corresponds to the intended best epoch or requested epoch; do not pass model_best.pth to the PyTorch quantize path. If quantize is retried with modelopt.onnx, pass the exported ONNX as quantize.model_path and verify that the runtime image actually contains modelopt.onnx.quantization.
Spec Param / Parent Model Inference
Model-specific inference mappings belong in this MD file, not in config.json. Generated runners should read this section and apply the mappings with SDK helpers before create_job(). This mirrors the old microservices infer_params.py flow.
Model handoff mappings:
| Action | Spec Field | Inference Function | Meaning |
|---|---|---|---|
| evaluate | evaluate.checkpoint | parent_model | model file inferred from the parent job results folder |
| evaluate | results_dir | output_dir | current job results directory |
| export | export.checkpoint | parent_model | model file inferred from the parent job results folder |
| export | export.onnx_file | create_onnx_file | output ONNX path |
| export | results_dir | output_dir | current job results directory |
| inference | inference.checkpoint | parent_model | model file inferred from the parent job results folder |
| inference | results_dir | output_dir | current job results directory |
| prune | prune.checkpoint | parent_model | model file inferred from the parent job results folder |
| prune | results_dir | output_dir | current job results directory |
| quantize | quantize.model_path | parent_model | model file inferred from the parent job results folder |
| quantize | results_dir | output_dir | current job results directory |
| retrain from prune | model.pruned_graph_path | parent_model | exact pruned model file inferred from the parent prune results folder |
| retrain from prune | results_dir | output_dir | current job results directory |
| train | model.pretrained_model_path | ptm_if_no_resume_model | PTM when no resume checkpoint exists |
| train | results_dir | output_dir | current job results directory |
| train | train.resume_training_checkpoint_path | resume_model | model file inferred from the current job results folder |
For parent_model or parent_model_folder, pass the upstream train/export/AutoML child job id as parent_job_id. The SDK lists the parent result folder, filters checkpoint artifacts, and returns the selected model file or folder. Do not add these mappings back to config.json and do not patch generated runner scripts to guess checkpoint paths.
Deployment
- tao-deploy-ocdnet
Evaluation Report
Evaluation of the tao-train-ocdnet skill before publication through NVSkills-Eval.
This benchmark summarizes 3-Tier Evaluation from NVSkills-Eval results for the skill. The goal is to document whether the skill is safe, discoverable, effective, and useful for agents before it is published for broader workflow use.
Evaluation Summary
- Skill:
tao-train-ocdnet - Evaluation date: 2026-06-22
- NVSkills-Eval profile:
external - Environment:
astra-sandbox - Dataset: 1 evaluation tasks
- Attempts per task: 1
- Pass threshold: 50%
- Overall verdict: PASS
Agents Used
claude-codecodex
Metrics Used
Reported benchmark dimensions:
- Security: checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access.
- Correctness: checks whether the agent follows the expected workflow and produces the correct final output.
- Discoverability: checks whether the agent loads the skill when relevant and avoids using it when irrelevant.
- Effectiveness: checks whether the agent performs measurably better with the skill than without it.
- Efficiency: checks whether the agent uses fewer tokens and avoids redundant work.
Underlying evaluation signals used in this run:
security(Security): checks for unsafe operations, secret leakage, and unauthorized access.skill_execution(Skill Execution): verifies that the agent loaded the expected skill and workflow.skill_efficiency(Efficiency): checks routing quality, decoy avoidance, and redundant tool usage.accuracy(Accuracy): grades final-answer correctness against the reference answer.goal_accuracy(Goal Accuracy): checks whether the overall user task completed successfully.behavior_check(Behavior Check): verifies expected behavior steps, including safety expectations.token_efficiency(Token Efficiency): compares token usage with and without the skill.
Test Tasks
The benchmark dataset contained 1 evaluation tasks:
- Positive tasks: 1 tasks where the skill was expected to activate.
- Negative tasks: 0 tasks where no skill was expected.
- Unlabeled tasks: 0 tasks where positive/negative intent could not be inferred.
Task composition is derived from the evaluation dataset when possible. Entries with expected_skill set are treated as positive skill-activation cases, while entries with expected_skill: null are treated as negative activation cases.
Results
| Dimension | Num | claude-code | codex |
|---|---|---|---|
| Security | 1 | 100% (+0%) | 100% (+0%) |
| Correctness | 1 | 84% (+84%) | 97% (+77%) |
| Discoverability | 1 | 34% (+34%) | 97% (+97%) |
| Effectiveness | 1 | 100% (+90%) | 90% (+46%) |
| Efficiency | 1 | 24% (-3%) | 96% (+68%) |
Score values show skill-assisted performance. Values in parentheses show uplift versus the no-skill baseline when baseline data is available.
Tier 1: Static Validation Summary
Tier 1 validation passed with observations. NVSkills-Eval ran 1 checks and found 5 total findings.
Top findings:
- MEDIUM SCHEMA/folder_hierarchy: Unexpected nesting depth for general skill (
skills/models/tao-train-ocdnet) - MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (
skills/models/tao-train-ocdnet/SKILL.md) - MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (
skills/models/tao-train-ocdnet/SKILL.md) - LOW SCHEMA/unexpected_file: Unexpected 'schemas' in skill root (
skills/models/tao-train-ocdnet/schemas) - LOW SCHEMA/author_format: Author must be of the form 'Name <email@host>' (
skills/models/tao-train-ocdnet/SKILL.md)
Tier 2: Deduplication Summary
This tier was not run or did not produce findings in this report.
Publication Recommendation
The skill is suitable to proceed toward NVSkills-Eval publication based on this benchmark. Skill owners should keep this file with the skill and refresh it when the evaluation dataset, skill behavior, or target agents materially change.
[
{
"id": "tao-train-ocdnet-basic",
"question": "A user request: \"OCDNet for scene text detection.\" Identify which TAO skill applies and, reading only that skill's documentation, outline the steps it prescribes. Do NOT run any commands, scripts, web searches, or other tools \u2014 describe the plan only.",
"expected_skill": "tao-train-ocdnet",
"expected_script": null,
"ground_truth": "Identify tao-train-ocdnet as the applicable skill and summarize its documented workflow from SKILL.md without executing anything.",
"expected_behavior": [
"Identifies tao-train-ocdnet as the relevant skill",
"Outlines the documented workflow steps from SKILL.md",
"Does not run commands, scripts, or web searches"
]
}
]
name: tao-train-ocdnet
network_arch: ocdnet
automl_enabled: true
container_image: tao_toolkit.pyt
data_format: default
gpu_spec_key: train.num_gpus
actions:
train:
command: ocdnet train -e {config_path}
config_format: yaml
mode: config
inputs:
dataset.train_dataset.data_path:
type: folder
dataset.validate_dataset.data_path:
type: folder
model.pretrained_model_path:
type: file
optional: true
train.resume_training_checkpoint_path:
type: file
optional: true
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
quantize:
command: ocdnet quantize -e {config_path}
config_format: yaml
mode: config
inputs:
dataset.train_dataset.data_path:
type: folder
dataset.validate_dataset.data_path:
type: folder
dataset.quant_calibration_dataset.images_dir:
type: folder
quantize.model_path:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
evaluate:
command: ocdnet evaluate -e {config_path}
config_format: yaml
mode: config
inputs:
dataset.validate_dataset.data_path:
type: folder
evaluate.checkpoint:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
export:
command: ocdnet export -e {config_path}
config_format: yaml
mode: config
inputs:
export.checkpoint:
type: file
outputs:
results_dir:
type: folder
export.onnx_file:
type: file
upload_excludes:
- inputs/
prune:
command: ocdnet prune -e {config_path}
config_format: yaml
mode: config
inputs:
dataset.validate_dataset.data_path:
type: folder
prune.checkpoint:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
retrain:
command: ocdnet train -e {config_path}
config_format: yaml
mode: config
inputs:
dataset.train_dataset.data_path:
type: folder
dataset.validate_dataset.data_path:
type: folder
model.pruned_graph_path:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
inference:
command: ocdnet inference -e {config_path}
config_format: yaml
mode: config
inputs:
inference.input_folder:
type: folder
inference.checkpoint:
type: file
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
data_sources:
train:
dataset.train_dataset.data_path:
source: train_datasets
path: train.tar.gz
runtime: extracted_folder
list: true
dataset.validate_dataset.data_path:
source: eval_dataset
path: test.tar.gz
runtime: extracted_folder
list: true
quantize:
dataset.train_dataset.data_path:
source: train_datasets
path: train.tar.gz
runtime: extracted_folder
list: true
dataset.validate_dataset.data_path:
source: eval_dataset
path: test.tar.gz
runtime: extracted_folder
list: true
dataset.quant_calibration_dataset.images_dir:
source: train_datasets
path: train/img.tar.gz
runtime: extracted_folder
evaluate:
dataset.validate_dataset.data_path:
source: eval_dataset
path: test.tar.gz
runtime: extracted_folder
list: true
inference:
inference.input_folder:
source: inference_dataset
path: test/img.tar.gz
runtime: extracted_folder
prune:
dataset.validate_dataset.data_path:
source: eval_dataset
path: test.tar.gz
runtime: extracted_folder
list: true
retrain:
dataset.train_dataset.data_path:
source: train_datasets
path: train.tar.gz
runtime: extracted_folder
list: true
dataset.validate_dataset.data_path:
source: eval_dataset
path: test.tar.gz
runtime: extracted_folder
list: true
spec_params:
train:
encryption_key: key
results_dir: output_dir
model.pretrained_model_path: ptm_if_no_resume_model
train.resume_training_checkpoint_path: resume_model
evaluate:
encryption_key: key
results_dir: output_dir
evaluate.checkpoint: parent_model
export:
encryption_key: key
results_dir: output_dir
export.checkpoint: parent_model
export.onnx_file: create_onnx_file
inference:
encryption_key: key
results_dir: output_dir
inference.checkpoint: parent_model
prune:
encryption_key: key
results_dir: output_dir
prune.checkpoint: parent_model
quantize:
encryption_key: key
results_dir: output_dir
quantize.model_path: parent_model
retrain:
encryption_key: key
results_dir: output_dir
model.pruned_graph_path: parent_model
key_defaults: {}
spec_shorthand_keys:
num_epochs: train.num_epochs
batch_size: dataset.train_dataset.loader.batch_size
val_batch_size: dataset.validate_dataset.loader.batch_size
learning_rate: train.optimizer.args.lr
warmup_epoch: train.lr_scheduler.args.warmup_epoch
resume_checkpoint: train.resume_training_checkpoint_path
pretrained_model: model.pretrained_model_path
load_pruned_graph: model.load_pruned_graph
pruned_graph_path: model.pruned_graph_path
inference_width: inference.width
inference_height: inference.height
export_width: export.width
export_height: export.height
quant_backend: quantize.backend
quant_model_path: quantize.model_path
spec_templates:
train: ../references/spec_template_train.yaml
evaluate: ../references/spec_template_evaluate.yaml
inference: ../references/spec_template_inference.yaml
export: ../references/spec_template_export.yaml
prune: ../references/spec_template_prune.yaml
quantize: ../references/spec_template_quantize.yaml
retrain: ../references/spec_template_retrain.yaml
description: OCDNet for scene text detection. Detects arbitrary-oriented text regions in natural images using a differentiable
binarization approach.
model:
load_pruned_graph: false
pruned_graph_path: ''
evaluate:
results_dir: /results
checkpoint: /results/train/model_best.pth
gpu_ids:
- 0
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trt_engine: /results/ocdnet.engine
dataset:
validate_dataset:
data_path:
- /data
args:
pre_processes:
- type: Resize2D
args:
short_size:
- 1280
- 736
resize_text_polys: true
img_mode: BGR
filter_keys: []
ignore_tags:
- '*'
- '###'
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 4
gen_trt_engine:
results_dir: /results
width: 1280
height: 736
img_mode: BGR
onnx_file: /models/model.onnx
trt_engine: /results/ocdnet.engine
tensorrt:
data_type: INT8
min_batch_size: 1
opt_batch_size: 1
max_batch_size: 1
calibration:
cal_image_dir:
- /data/calibration/images
cal_cache_file: /results/ocdnet_calibration.cache
cal_batch_size: 8
cal_batches: 2
results_dir: /results
model:
load_pruned_graph: false
pruned_graph_path: ''
inference:
checkpoint: <required>
input_folder: /data/images
width: 1280
height: 736
img_mode: BGR
polygon: false
show: false
results_dir: /results
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
trt_engine: /results/ocdnet.engine
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
backbone: deformable_resnet18
pretrained: false
in_channels: 3
neck: FPN
inner_channels: 256
head: DBHead
out_channels: 2
k: 50
load_pruned_graph: false
pruned_graph_path: ''
pretrained_model_path: ''
enlarge_feature_map_size: false
activation_checkpoint: false
quant: false
fuse_qkv_proj: true
dataset:
train_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- img_path
- img_name
- text_polys
- texts
- ignore_tags
- shape
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
keep_ratio: true
max_tries: 50
size:
- 640
- 640
type: EastRandomCropData
- args:
shrink_ratio: 0.4
thresh_max: 0.7
thresh_min: 0.3
type: MakeBorderMap
- args:
shrink_ratio: 0.4
min_text_size: 8
type: MakeShrinkMap
loader:
batch_size: 16
shuffle: true
pin_memory: false
num_workers: 0
collate_fn: ''
validate_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- ''
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
resize_text_polys: true
short_size:
- 1280
- 736
type: Resize2D
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 0
collate_fn: ICDARCollateFN
quant_calibration_dataset:
images_dir: ''
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trainer:
clip_grad_norm: 5.0
loss:
type: DBLoss
alpha: 5
beta: 10
ohem_ratio: 3
eps: 1.0e-06
optimizer:
type: Adam
args:
lr: 0.001
weight_decay: 0.0
amsgrad: true
momentum: 0.0
eps: 1.0e-08
lr_scheduler:
type: WarmupPolyLR
args:
warmup_epoch: 3
precision: fp32
distributed_strategy: ddp
is_dry_run: false
use_distributed_sampler: false
model_ema: false
model_ema_decay: 0.9999
evaluate:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
checkpoint: ???
trt_engine: ''
results_dir: ''
batch_size: 1
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
backbone: deformable_resnet18
pretrained: false
in_channels: 3
neck: FPN
inner_channels: 256
head: DBHead
out_channels: 2
k: 50
load_pruned_graph: false
pruned_graph_path: ''
pretrained_model_path: ''
enlarge_feature_map_size: false
activation_checkpoint: false
quant: false
fuse_qkv_proj: true
dataset:
train_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- img_path
- img_name
- text_polys
- texts
- ignore_tags
- shape
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
keep_ratio: true
max_tries: 50
size:
- 640
- 640
type: EastRandomCropData
- args:
shrink_ratio: 0.4
thresh_max: 0.7
thresh_min: 0.3
type: MakeBorderMap
- args:
shrink_ratio: 0.4
min_text_size: 8
type: MakeShrinkMap
loader:
batch_size: 16
shuffle: true
pin_memory: false
num_workers: 0
collate_fn: ''
validate_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- ''
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
resize_text_polys: true
short_size:
- 1280
- 736
type: Resize2D
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 0
collate_fn: ICDARCollateFN
quant_calibration_dataset:
images_dir: ''
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trainer:
clip_grad_norm: 5.0
loss:
type: DBLoss
alpha: 5
beta: 10
ohem_ratio: 3
eps: 1.0e-06
optimizer:
type: Adam
args:
lr: 0.001
weight_decay: 0.0
amsgrad: true
momentum: 0.0
eps: 1.0e-08
lr_scheduler:
type: WarmupPolyLR
args:
warmup_epoch: 3
precision: fp32
distributed_strategy: ddp
is_dry_run: false
use_distributed_sampler: false
model_ema: false
model_ema_decay: 0.9999
export:
results_dir: ''
checkpoint: ???
onnx_file: ''
gpu_id: 0
width: 1280
height: 736
opset_version: 11
verbose: false
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
backbone: deformable_resnet18
pretrained: false
in_channels: 3
neck: FPN
inner_channels: 256
head: DBHead
out_channels: 2
k: 50
load_pruned_graph: false
pruned_graph_path: ''
pretrained_model_path: ''
enlarge_feature_map_size: false
activation_checkpoint: false
quant: false
fuse_qkv_proj: true
dataset:
train_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- img_path
- img_name
- text_polys
- texts
- ignore_tags
- shape
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
keep_ratio: true
max_tries: 50
size:
- 640
- 640
type: EastRandomCropData
- args:
shrink_ratio: 0.4
thresh_max: 0.7
thresh_min: 0.3
type: MakeBorderMap
- args:
shrink_ratio: 0.4
min_text_size: 8
type: MakeShrinkMap
loader:
batch_size: 16
shuffle: true
pin_memory: false
num_workers: 0
collate_fn: ''
validate_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- ''
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
resize_text_polys: true
short_size:
- 1280
- 736
type: Resize2D
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 0
collate_fn: ICDARCollateFN
quant_calibration_dataset:
images_dir: ''
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trainer:
clip_grad_norm: 5.0
loss:
type: DBLoss
alpha: 5
beta: 10
ohem_ratio: 3
eps: 1.0e-06
optimizer:
type: Adam
args:
lr: 0.001
weight_decay: 0.0
amsgrad: true
momentum: 0.0
eps: 1.0e-08
lr_scheduler:
type: WarmupPolyLR
args:
warmup_epoch: 3
precision: fp32
distributed_strategy: ddp
is_dry_run: false
use_distributed_sampler: false
model_ema: false
model_ema_decay: 0.9999
gen_trt_engine:
results_dir: ''
gpu_id: 0
onnx_file: ???
trt_engine: ???
timing_cache: ''
batch_size: -1
verbose: false
width: 1280
height: 736
img_mode: BGR
tensorrt:
workspace_size: 1024
min_batch_size: 1
opt_batch_size: 1
max_batch_size: 1
layers_precision: []
data_type: FP32
calibration:
cal_image_dir: ???
cal_cache_file: ???
cal_batch_size: 1
cal_batches: 1
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
backbone: deformable_resnet18
pretrained: false
in_channels: 3
neck: FPN
inner_channels: 256
head: DBHead
out_channels: 2
k: 50
load_pruned_graph: false
pruned_graph_path: ''
pretrained_model_path: ''
enlarge_feature_map_size: false
activation_checkpoint: false
quant: false
fuse_qkv_proj: true
dataset:
train_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- img_path
- img_name
- text_polys
- texts
- ignore_tags
- shape
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
keep_ratio: true
max_tries: 50
size:
- 640
- 640
type: EastRandomCropData
- args:
shrink_ratio: 0.4
thresh_max: 0.7
thresh_min: 0.3
type: MakeBorderMap
- args:
shrink_ratio: 0.4
min_text_size: 8
type: MakeShrinkMap
loader:
batch_size: 16
shuffle: true
pin_memory: false
num_workers: 0
collate_fn: ''
validate_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- ''
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
resize_text_polys: true
short_size:
- 1280
- 736
type: Resize2D
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 0
collate_fn: ICDARCollateFN
quant_calibration_dataset:
images_dir: ''
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trainer:
clip_grad_norm: 5.0
loss:
type: DBLoss
alpha: 5
beta: 10
ohem_ratio: 3
eps: 1.0e-06
optimizer:
type: Adam
args:
lr: 0.001
weight_decay: 0.0
amsgrad: true
momentum: 0.0
eps: 1.0e-08
lr_scheduler:
type: WarmupPolyLR
args:
warmup_epoch: 3
precision: fp32
distributed_strategy: ddp
is_dry_run: false
use_distributed_sampler: false
model_ema: false
model_ema_decay: 0.9999
inference:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
checkpoint: ???
trt_engine: ''
results_dir: ''
batch_size: -1
input_folder: ???
width: 1280
height: 736
img_mode: BGR
polygon: false
show: false
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
backbone: deformable_resnet18
pretrained: false
in_channels: 3
neck: FPN
inner_channels: 256
head: DBHead
out_channels: 2
k: 50
load_pruned_graph: false
pruned_graph_path: ''
pretrained_model_path: ''
enlarge_feature_map_size: false
activation_checkpoint: false
quant: false
fuse_qkv_proj: true
dataset:
train_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- img_path
- img_name
- text_polys
- texts
- ignore_tags
- shape
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
keep_ratio: true
max_tries: 50
size:
- 640
- 640
type: EastRandomCropData
- args:
shrink_ratio: 0.4
thresh_max: 0.7
thresh_min: 0.3
type: MakeBorderMap
- args:
shrink_ratio: 0.4
min_text_size: 8
type: MakeShrinkMap
loader:
batch_size: 16
shuffle: true
pin_memory: false
num_workers: 0
collate_fn: ''
validate_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- ''
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
resize_text_polys: true
short_size:
- 1280
- 736
type: Resize2D
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 0
collate_fn: ICDARCollateFN
quant_calibration_dataset:
images_dir: ''
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trainer:
clip_grad_norm: 5.0
loss:
type: DBLoss
alpha: 5
beta: 10
ohem_ratio: 3
eps: 1.0e-06
optimizer:
type: Adam
args:
lr: 0.001
weight_decay: 0.0
amsgrad: true
momentum: 0.0
eps: 1.0e-08
lr_scheduler:
type: WarmupPolyLR
args:
warmup_epoch: 3
precision: fp32
distributed_strategy: ddp
is_dry_run: false
use_distributed_sampler: false
model_ema: false
model_ema_decay: 0.9999
prune:
results_dir: ''
checkpoint: ???
gpu_id: 0
ch_sparsity: 0.1
round_to: 32
p: 2
verbose: false
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
backbone: deformable_resnet18
pretrained: false
in_channels: 3
neck: FPN
inner_channels: 256
head: DBHead
out_channels: 2
k: 50
load_pruned_graph: false
pruned_graph_path: ''
pretrained_model_path: ''
enlarge_feature_map_size: false
activation_checkpoint: false
quant: false
fuse_qkv_proj: true
dataset:
train_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- img_path
- img_name
- text_polys
- texts
- ignore_tags
- shape
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
keep_ratio: true
max_tries: 50
size:
- 640
- 640
type: EastRandomCropData
- args:
shrink_ratio: 0.4
thresh_max: 0.7
thresh_min: 0.3
type: MakeBorderMap
- args:
shrink_ratio: 0.4
min_text_size: 8
type: MakeShrinkMap
loader:
batch_size: 16
shuffle: true
pin_memory: false
num_workers: 0
collate_fn: ''
validate_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- ''
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
resize_text_polys: true
short_size:
- 1280
- 736
type: Resize2D
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 0
collate_fn: ICDARCollateFN
quant_calibration_dataset:
images_dir: ''
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trainer:
clip_grad_norm: 5.0
loss:
type: DBLoss
alpha: 5
beta: 10
ohem_ratio: 3
eps: 1.0e-06
optimizer:
type: Adam
args:
lr: 0.001
weight_decay: 0.0
amsgrad: true
momentum: 0.0
eps: 1.0e-08
lr_scheduler:
type: WarmupPolyLR
args:
warmup_epoch: 3
precision: fp32
distributed_strategy: ddp
is_dry_run: false
use_distributed_sampler: false
model_ema: false
model_ema_decay: 0.9999
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
backbone: deformable_resnet18
pretrained: false
in_channels: 3
neck: FPN
inner_channels: 256
head: DBHead
out_channels: 2
k: 50
load_pruned_graph: false
pruned_graph_path: ''
pretrained_model_path: ''
enlarge_feature_map_size: false
activation_checkpoint: false
quant: false
fuse_qkv_proj: true
dataset:
train_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- img_path
- img_name
- text_polys
- texts
- ignore_tags
- shape
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
keep_ratio: true
max_tries: 50
size:
- 640
- 640
type: EastRandomCropData
- args:
shrink_ratio: 0.4
thresh_max: 0.7
thresh_min: 0.3
type: MakeBorderMap
- args:
shrink_ratio: 0.4
min_text_size: 8
type: MakeShrinkMap
loader:
batch_size: 16
shuffle: true
pin_memory: false
num_workers: 0
collate_fn: ''
validate_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- ''
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
resize_text_polys: true
short_size:
- 1280
- 736
type: Resize2D
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 0
collate_fn: ICDARCollateFN
quant_calibration_dataset:
images_dir: ''
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trainer:
clip_grad_norm: 5.0
loss:
type: DBLoss
alpha: 5
beta: 10
ohem_ratio: 3
eps: 1.0e-06
optimizer:
type: Adam
args:
lr: 0.001
weight_decay: 0.0
amsgrad: true
momentum: 0.0
eps: 1.0e-08
lr_scheduler:
type: WarmupPolyLR
args:
warmup_epoch: 3
precision: fp32
distributed_strategy: ddp
is_dry_run: false
use_distributed_sampler: false
model_ema: false
model_ema_decay: 0.9999
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
model_name: ''
encryption_key: ''
results_dir: ''
wandb:
enable: true
project: TAO Toolkit
entity: ''
group: ''
tags:
- tao-toolkit
reinit: false
sync_tensorboard: false
save_code: false
name: TAO Toolkit Training
run_id: ''
model:
backbone: deformable_resnet18
pretrained: false
in_channels: 3
neck: FPN
inner_channels: 256
head: DBHead
out_channels: 2
k: 50
load_pruned_graph: false
pruned_graph_path: ''
pretrained_model_path: ''
enlarge_feature_map_size: false
activation_checkpoint: false
quant: false
fuse_qkv_proj: true
dataset:
train_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- img_path
- img_name
- text_polys
- texts
- ignore_tags
- shape
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
keep_ratio: true
max_tries: 50
size:
- 640
- 640
type: EastRandomCropData
- args:
shrink_ratio: 0.4
thresh_max: 0.7
thresh_min: 0.3
type: MakeBorderMap
- args:
shrink_ratio: 0.4
min_text_size: 8
type: MakeShrinkMap
loader:
batch_size: 16
shuffle: true
pin_memory: false
num_workers: 0
collate_fn: ''
validate_dataset:
data_name: ICDAR2015Dataset
data_path: []
args:
img_mode: BGR
filter_keys:
- ''
ignore_tags:
- '*'
- '###'
pre_processes:
- args:
resize_text_polys: true
short_size:
- 1280
- 736
type: Resize2D
loader:
batch_size: 1
shuffle: false
pin_memory: false
num_workers: 0
collate_fn: ICDARCollateFN
quant_calibration_dataset:
images_dir: ''
train:
num_gpus: 1
gpu_ids:
- 0
num_nodes: 1
seed: 1234
cudnn:
benchmark: false
deterministic: true
num_epochs: 10
checkpoint_interval: 1
checkpoint_interval_unit: epoch
validation_interval: 1
resume_training_checkpoint_path: ''
results_dir: ''
post_processing:
type: SegDetectorRepresenter
args:
thresh: 0.3
box_thresh: 0.55
max_candidates: 1000
unclip_ratio: 1.5
metric:
type: QuadMetric
args:
is_output_polygon: false
trainer:
clip_grad_norm: 5.0
loss:
type: DBLoss
alpha: 5
beta: 10
ohem_ratio: 3
eps: 1.0e-06
optimizer:
type: Adam
args:
lr: 0.001
weight_decay: 0.0
amsgrad: true
momentum: 0.0
eps: 1.0e-08
lr_scheduler:
type: WarmupPolyLR
args:
warmup_epoch: 3
precision: fp32
distributed_strategy: ddp
is_dry_run: false
use_distributed_sampler: false
model_ema: false
model_ema_decay: 0.9999
quantize:
backend: torchao
mode: weight_only_ptq
algorithm: minmax
layers: []
skip_names: []
model_path: ''
results_dir: ''
backend_kwargs: {}
device: cuda
OCDNet Deploy
OCDNet deploy covers the TAO Deploy actions for an exported optical character detection model. Use the ocdnet model skill for training, checkpoint evaluation, quantization, pruning, export, resume training, or non-TensorRT inference where those actions exist. Use this deploy workflow after export when the input artifact is an ONNX model and the desired output is a TensorRT engine or TensorRT-backed predictions.
Supported actions: gen_trt_engine, evaluate, inference.
Quick Start
Generate TensorRT Engine
docker run --gpus all --rm --shm-size=16g \
-v /path/to/specs:/specs \
-v /path/to/export:/models \
-v /path/to/results:/results \
nvcr.io/nvidia/tao/tao-toolkit:6.26.3-deploy \
ocdnet gen_trt_engine -e /specs/ocdnet_deploy_gen_trt_engine.yamlEvaluate TensorRT Engine
docker run --gpus all --rm --shm-size=16g \
-v /path/to/specs:/specs \
-v /path/to/eval:/data \
-v /path/to/results:/results \
nvcr.io/nvidia/tao/tao-toolkit:6.26.3-deploy \
ocdnet evaluate -e /specs/ocdnet_deploy_evaluate.yamlTensorRT Inference
docker run --gpus all --rm --shm-size=16g \
-v /path/to/specs:/specs \
-v /path/to/inference:/data \
-v /path/to/results:/results \
nvcr.io/nvidia/tao/tao-toolkit:6.26.3-deploy \
ocdnet inference -e /specs/ocdnet_deploy_inference.yamlDeploy action metadata is in tao-deploy-ocdnet.skill_info.yaml. Deploy spec templates live in this references folder:
spec_template_deploy_gen_trt_engine.yamlspec_template_deploy_evaluate.yamlspec_template_deploy_inference.yaml
Deploy Workflow
1. Train and export with the ocdnet skill. 2. Keep the exported ONNX artifact and any sidecar files together in the mounted model directory. 3. Build the TensorRT engine with this workflow. 4. Run TensorRT evaluate or inference from the engine artifact produced by gen_trt_engine.
Direct TAO Launcher spelling is tao deploy ocdnet gen_trt_engine, tao deploy ocdnet evaluate, tao deploy ocdnet inference.
Required Inputs
| Action | Required artifact or data | Spec key |
|---|---|---|
gen_trt_engine | Exported ONNX model | gen_trt_engine.onnx_file |
gen_trt_engine | Results directory | results_dir or gen_trt_engine.results_dir |
gen_trt_engine | Calibration images for INT8 | gen_trt_engine.tensorrt.calibration.cal_image_dir |
evaluate | TensorRT engine | evaluate.trt_engine |
evaluate | Extracted validation split folder with img/ and gt/ | dataset.validate_dataset.data_path |
inference | TensorRT engine | inference.trt_engine |
inference | Input image folder | inference.input_folder |
For direct Docker runs, mount input folders at the same paths used in the spec. For chained jobs, map exported ONNX artifacts into gen_trt_engine.onnx_file and map the engine artifact into evaluate.trt_engine or inference.trt_engine where those actions are available. gen_trt_engine.trt_engine is an output path created for the current job, not an input artifact.
Spec Overrides
Carry structural model and dataset settings forward from the train/export spec. The deploy defaults are templates, not a substitute for the model-specific values used to produce the ONNX file.
Recommended starting overrides:
{
'gen_trt_engine.tensorrt.data_type': 'INT8',
'gen_trt_engine.tensorrt.calibration.cal_image_dir': ['/path/to/calibration/img'],
'gen_trt_engine.tensorrt.calibration.cal_cache_file': '/path/to/results/ocdnet_calibration.cache',
'gen_trt_engine.width': 1280,
'gen_trt_engine.height': 736,
'dataset.validate_dataset.data_path': ['/path/to/extracted/test'],
'inference.input_folder': '/path/to/extracted/test/img',
'inference.width': 1280,
'inference.height': 736,
}Model-specific notes:
- The starter-kit deploy flow builds OCDNet engines with INT8; provide calibration images and a writable calibration cache path.
- Evaluate and inference expect
evaluate.trt_engineandinference.trt_engineoverrides even where the template also shows checkpoint-style fields. - Engine generation requires either
results_dirorgen_trt_engine.results_dir; keep both aligned with the writable output mount for direct Docker runs. - Deploy evaluate uses the same OCDNet dataset loader as PyT evaluate, so pass the extracted split folder containing
img/andgt/, nottest.tar.gz. - Keep width, height, and image mode aligned across engine build, evaluate, and inference.
Job Chain Mapping
| Action | Spec field | Parent or output |
|---|---|---|
gen_trt_engine | gen_trt_engine.onnx_file | export job ONNX |
gen_trt_engine | gen_trt_engine.trt_engine | new engine output path |
gen_trt_engine | results_dir / gen_trt_engine.results_dir | current job results directory |
gen_trt_engine INT8 | calibration image/cache fields | calibration dataset and new cache output |
evaluate | evaluate.trt_engine | engine job output |
inference | inference.trt_engine | engine job output |
Outputs
| Action | Output |
|---|---|
gen_trt_engine | TensorRT engine and calibration cache under results_dir |
evaluate | Text detection metrics under evaluate.results_dir |
inference | Detected text polygons or boxes under inference.results_dir |
Known Pitfalls
Engine profile mismatch: Runtime batch size for evaluate or inference must fit within the TensorRT min/opt/max profile used during gen_trt_engine.
Template class or shape mismatch: Copy class count, input resolution, backbone, and post-processing settings from train/export before running TAO Deploy.
INT8 calibration missing: INT8 builds need an extracted calibration image directory, a writable cache path, and enough images for cal_batch_size * cal_batches.
Archive passed as validation data: dataset.validate_dataset.data_path is not an archive path for OCDNet Deploy. Extract validation archives first and pass the folder containing img/ and gt/.
Mounted paths do not exist: TAO Deploy checks local paths inside the container. Make sure every path in the spec has a matching Docker mount or job artifact mapping.
name: ocdnet-deploy
type: model
network_arch: ocdnet
container_image: tao_toolkit.deploy
data_format: default
actions:
gen_trt_engine:
command: ocdnet gen_trt_engine -e {config_path}
config_format: yaml
mode: config
inputs:
gen_trt_engine.onnx_file:
type: file
gen_trt_engine.tensorrt.calibration.cal_image_dir:
type: folder
outputs:
results_dir:
type: folder
gen_trt_engine.trt_engine:
type: file
upload_excludes:
- inputs/
evaluate:
command: ocdnet evaluate -e {config_path}
config_format: yaml
mode: config
inputs:
evaluate.trt_engine:
type: file
dataset.validate_dataset.data_path:
type: folder
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
inference:
command: ocdnet inference -e {config_path}
config_format: yaml
mode: config
inputs:
inference.trt_engine:
type: file
inference.input_folder:
type: folder
outputs:
results_dir:
type: folder
upload_excludes:
- inputs/
data_sources:
gen_trt_engine:
gen_trt_engine.tensorrt.calibration.cal_image_dir:
source: calibration_dataset
path: images.tar.gz
runtime: extracted_folder
list: true
evaluate:
dataset.validate_dataset.data_path:
source: eval_dataset
path: test.tar.gz
runtime: extracted_folder
list: true
inference:
inference.input_folder:
source: inference_dataset
path: test/img.tar.gz
runtime: extracted_folder
spec_params:
gen_trt_engine:
encryption_key: key
results_dir: output_dir
gen_trt_engine.results_dir: output_dir
gen_trt_engine.onnx_file: parent_model
gen_trt_engine.trt_engine: create_engine_file
gen_trt_engine.tensorrt.calibration.cal_cache_file: create_cal_cache
evaluate:
encryption_key: key
results_dir: output_dir
evaluate.trt_engine: parent_model
inference:
encryption_key: key
results_dir: output_dir
inference.trt_engine: parent_model
spec_shorthand_keys:
trt_data_type: gen_trt_engine.tensorrt.data_type
trt_engine: gen_trt_engine.trt_engine
batch_size: dataset.validate_dataset.loader.batch_size
cal_batch_size: gen_trt_engine.tensorrt.calibration.cal_batch_size
cal_batches: gen_trt_engine.tensorrt.calibration.cal_batches
trt_min_batch_size: gen_trt_engine.tensorrt.min_batch_size
trt_opt_batch_size: gen_trt_engine.tensorrt.opt_batch_size
trt_max_batch_size: gen_trt_engine.tensorrt.max_batch_size
engine_width: gen_trt_engine.width
engine_height: gen_trt_engine.height
inference_width: inference.width
inference_height: inference.height
description: OCDNet deploy workflow for gen_trt_engine, evaluate, inference using
TAO Deploy.
spec_templates:
gen_trt_engine: spec_template_deploy_gen_trt_engine.yaml
evaluate: spec_template_deploy_evaluate.yaml
inference: spec_template_deploy_inference.yaml
notes:
- The starter-kit deploy flow builds OCDNet engines with INT8; provide calibration
images and a writable calibration cache path.
- Evaluate and inference expect `evaluate.trt_engine` and `inference.trt_engine` overrides
even where the template also shows checkpoint-style fields.
- Keep width, height, and image mode aligned across engine build, evaluate, and inference.
{
"automl_default_parameters": [
"train.optimizer.args.weight_decay",
"train.optimizer.args.lr"
],
"automl_disabled_parameters": [
"quantize",
"train.cudnn",
"train.post_processing.args",
"gen_trt_engine.tensorrt.calibration.cal_image_dir",
"quantize.backend_kwargs",
"dataset.train_dataset.args",
"train.gpu_ids",
"dataset.validate_dataset",
"dataset.validate_dataset.loader",
"wandb.tags",
"dataset.validate_dataset.data_path",
"train.metric",
"train.optimizer.args",
"dataset.train_dataset.data_path",
"quantize.skip_names",
"evaluate.post_processing",
"dataset.train_dataset",
"evaluate",
"evaluate.metric",
"evaluate.metric.args",
"inference",
"train",
"evaluate.post_processing.args",
"gen_trt_engine",
"train.post_processing",
"gen_trt_engine.tensorrt.layers_precision",
"dataset.train_dataset.args.pre_processes",
"dataset",
"dataset.validate_dataset.args.ignore_tags",
"gen_trt_engine.tensorrt",
"quantize.layers",
"dataset.train_dataset.loader",
"dataset.quant_calibration_dataset",
"dataset.train_dataset.loader.batch_size",
"dataset.validate_dataset.args.filter_keys",
"dataset.train_dataset.args.filter_keys",
"train.lr_scheduler.args",
"train.loss",
"model",
"inference.post_processing",
"evaluate.gpu_ids",
"gen_trt_engine.tensorrt.calibration",
"train.trainer",
"dataset.validate_dataset.args.pre_processes",
"train.lr_scheduler",
"train.metric.args",
"export",
"wandb",
"inference.post_processing.args",
"inference.gpu_ids",
"prune",
"dataset.validate_dataset.args",
"train.optimizer",
"dataset.train_dataset.args.ignore_tags"
],
"default": {
"dataset": {
"quant_calibration_dataset": {
"images_dir": ""
},
"train_dataset": {
"args": {
"filter_keys": [
"img_path",
"img_name",
"text_polys",
"texts",
"ignore_tags",
"shape"
],
"ignore_tags": [
"*",
"###"
],
"img_mode": "BGR",
"pre_processes": [
{
"args": {
"keep_ratio": true,
"max_tries": 50,
"size": [
640,
640
]
},
"type": "EastRandomCropData"
},
{
"args": {
"shrink_ratio": 0.4,
"thresh_max": 0.7,
"thresh_min": 0.3
},
"type": "MakeBorderMap"
},
{
"args": {
"min_text_size": 8,
"shrink_ratio": 0.4
},
"type": "MakeShrinkMap"
}
]
},
"data_name": "ICDAR2015Dataset",
"data_path": [],
"loader": {
"batch_size": 16,
"collate_fn": "",
"num_workers": 0,
"pin_memory": false,
"shuffle": true
}
},
"validate_dataset": {
"args": {
"filter_keys": [
""
],
"ignore_tags": [
"*",
"###"
],
"img_mode": "BGR",
"pre_processes": [
{
"args": {
"resize_text_polys": true,
"short_size": [
1280,
736
]
},
"type": "Resize2D"
}
]
},
"data_name": "ICDAR2015Dataset",
"data_path": [],
"loader": {
"batch_size": 1,
"collate_fn": "ICDARCollateFN",
"num_workers": 0,
"pin_memory": false,
"shuffle": false
}
}
},
"encryption_key": "",
"evaluate": {
"batch_size": 1,
"checkpoint": "???",
"gpu_ids": [
0
],
"metric": {
"args": {
"is_output_polygon": false
},
"type": "QuadMetric"
},
"num_gpus": 1,
"num_nodes": 1,
"post_processing": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
},
"type": "SegDetectorRepresenter"
},
"results_dir": "",
"trt_engine": ""
},
"model": {
"activation_checkpoint": false,
"backbone": "deformable_resnet18",
"enlarge_feature_map_size": false,
"fuse_qkv_proj": true,
"head": "DBHead",
"in_channels": 3,
"inner_channels": 256,
"k": 50,
"load_pruned_graph": false,
"neck": "FPN",
"out_channels": 2,
"pretrained": false,
"pretrained_model_path": "",
"pruned_graph_path": "",
"quant": false
},
"model_name": "",
"quantize": {
"algorithm": "minmax",
"backend": "torchao",
"backend_kwargs": {},
"device": "cuda",
"layers": [],
"mode": "weight_only_ptq",
"model_path": "",
"results_dir": "",
"skip_names": []
},
"results_dir": "",
"train": {
"checkpoint_interval": 1,
"checkpoint_interval_unit": "epoch",
"cudnn": {
"benchmark": false,
"deterministic": true
},
"distributed_strategy": "ddp",
"gpu_ids": [
0
],
"is_dry_run": false,
"loss": {
"alpha": 5,
"beta": 10,
"eps": 1e-06,
"ohem_ratio": 3,
"type": "DBLoss"
},
"lr_scheduler": {
"args": {
"warmup_epoch": 3
},
"type": "WarmupPolyLR"
},
"metric": {
"args": {
"is_output_polygon": false
},
"type": "QuadMetric"
},
"model_ema": false,
"model_ema_decay": 0.9999,
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"optimizer": {
"args": {
"amsgrad": true,
"eps": 1e-08,
"lr": 0.001,
"momentum": 0.0,
"weight_decay": 0.0
},
"type": "Adam"
},
"post_processing": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
},
"type": "SegDetectorRepresenter"
},
"precision": "fp32",
"results_dir": "",
"resume_training_checkpoint_path": "",
"seed": 1234,
"trainer": {
"clip_grad_norm": 5.0
},
"use_distributed_sampler": false,
"validation_interval": 1
},
"wandb": {
"enable": true,
"entity": "",
"group": "",
"name": "TAO Toolkit Training",
"project": "TAO Toolkit",
"reinit": false,
"run_id": "",
"save_code": false,
"sync_tensorboard": false,
"tags": [
"tao-toolkit"
]
}
},
"popular": {
"dataset": {
"train_dataset": {
"loader": {
"batch_size": 16,
"num_workers": 0
}
},
"validate_dataset": {
"loader": {
"batch_size": 1,
"num_workers": 0
}
}
},
"evaluate": {
"batch_size": 1,
"gpu_ids": [
0
],
"num_gpus": 1,
"num_nodes": 1,
"post_processing": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
}
}
},
"export": {
"height": 736,
"opset_version": 11,
"width": 1280
},
"gen_trt_engine": {
"batch_size": -1,
"gpu_id": 0,
"height": 736,
"tensorrt": {
"calibration": {
"cal_batch_size": 1,
"cal_batches": 1
},
"max_batch_size": 1,
"min_batch_size": 1,
"opt_batch_size": 1
},
"width": 1280
},
"inference": {
"gpu_ids": [
0
],
"height": 736,
"num_gpus": 1,
"num_nodes": 1,
"post_processing": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
}
},
"width": 1280
},
"model": {
"backbone": "deformable_resnet18"
},
"train": {
"checkpoint_interval": 1,
"gpu_ids": [
0
],
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"optimizer": {
"args": {
"lr": 0.001
}
},
"post_processing": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
}
},
"validation_interval": 1
}
},
"properties": {
"automl_disabled_parameters": [
"wandb",
"model",
"dataset",
"train",
"evaluate",
"inference",
"export",
"gen_trt_engine",
"prune",
"quantize"
],
"dataset": {
"automl_disabled_parameters": [
"dataset.train_dataset",
"dataset.validate_dataset",
"dataset.quant_calibration_dataset"
],
"automl_enabled": false,
"default": {
"quant_calibration_dataset": {
"images_dir": ""
},
"train_dataset": {
"args": {
"filter_keys": [
"img_path",
"img_name",
"text_polys",
"texts",
"ignore_tags",
"shape"
],
"ignore_tags": [
"*",
"###"
],
"img_mode": "BGR",
"pre_processes": [
{
"args": {
"keep_ratio": true,
"max_tries": 50,
"size": [
640,
640
]
},
"type": "EastRandomCropData"
},
{
"args": {
"shrink_ratio": 0.4,
"thresh_max": 0.7,
"thresh_min": 0.3
},
"type": "MakeBorderMap"
},
{
"args": {
"min_text_size": 8,
"shrink_ratio": 0.4
},
"type": "MakeShrinkMap"
}
]
},
"data_name": "ICDAR2015Dataset",
"data_path": [],
"loader": {
"batch_size": 16,
"collate_fn": "",
"num_workers": 0,
"pin_memory": false,
"shuffle": true
}
},
"validate_dataset": {
"args": {
"filter_keys": [
""
],
"ignore_tags": [
"*",
"###"
],
"img_mode": "BGR",
"pre_processes": [
{
"args": {
"resize_text_polys": true,
"short_size": [
1280,
736
]
},
"type": "Resize2D"
}
]
},
"data_name": "ICDAR2015Dataset",
"data_path": [],
"loader": {
"batch_size": 1,
"collate_fn": "ICDARCollateFN",
"num_workers": 0,
"pin_memory": false,
"shuffle": false
}
}
},
"description": "Configurable parameters to construct the dataset for an OCDNet experiment.",
"popular": [
"validate_dataset",
"train_dataset"
],
"properties": {
"quant_calibration_dataset": {
"automl_enabled": false,
"default": {
"images_dir": ""
},
"description": "Configurable parameters for quantization calibration dataset.",
"properties": {
"images_dir": {
"default": "",
"description": "Path to the directory containing calibration images.",
"title": "calibration images directory",
"type": "string"
}
},
"type": "collection"
},
"train_dataset": {
"automl_disabled_parameters": [
"dataset.train_dataset.data_path",
"dataset.train_dataset.args",
"dataset.train_dataset.loader"
],
"automl_enabled": false,
"default": {
"args": {
"filter_keys": [
"img_path",
"img_name",
"text_polys",
"texts",
"ignore_tags",
"shape"
],
"ignore_tags": [
"*",
"###"
],
"img_mode": "BGR",
"pre_processes": [
{
"args": {
"keep_ratio": true,
"max_tries": 50,
"size": [
640,
640
]
},
"type": "EastRandomCropData"
},
{
"args": {
"shrink_ratio": 0.4,
"thresh_max": 0.7,
"thresh_min": 0.3
},
"type": "MakeBorderMap"
},
{
"args": {
"min_text_size": 8,
"shrink_ratio": 0.4
},
"type": "MakeShrinkMap"
}
]
},
"data_name": "ICDAR2015Dataset",
"data_path": [],
"loader": {
"batch_size": 16,
"collate_fn": "",
"num_workers": 0,
"pin_memory": false,
"shuffle": true
}
},
"description": "Hyper parameters to configure the training dataset.",
"popular": [
"loader"
],
"properties": {
"args": {
"automl_disabled_parameters": [
"dataset.train_dataset.args.filter_keys",
"dataset.train_dataset.args.ignore_tags",
"dataset.train_dataset.args.pre_processes"
],
"automl_enabled": false,
"default": {
"filter_keys": [
"img_path",
"img_name",
"text_polys",
"texts",
"ignore_tags",
"shape"
],
"ignore_tags": [
"*",
"###"
],
"img_mode": "BGR",
"pre_processes": [
{
"args": {
"keep_ratio": true,
"max_tries": 50,
"size": [
640,
640
]
},
"type": "EastRandomCropData"
},
{
"args": {
"shrink_ratio": 0.4,
"thresh_max": 0.7,
"thresh_min": 0.3
},
"type": "MakeBorderMap"
},
{
"args": {
"min_text_size": 8,
"shrink_ratio": 0.4
},
"type": "MakeShrinkMap"
}
]
},
"description": "Configurable parameters to construct the training dataset.",
"properties": {
"filter_keys": {
"automl_enabled": false,
"default": [
"img_path",
"img_name",
"text_polys",
"texts",
"ignore_tags",
"shape"
],
"description": "List of ignored keys",
"title": "filter_keys",
"type": "list"
},
"ignore_tags": {
"automl_enabled": false,
"default": [
"*",
"###"
],
"description": "List of labels that are not used to train",
"title": "ignore_tags",
"type": "list"
},
"img_mode": {
"default": "BGR",
"description": "The image mode.",
"enum": [
"BGR",
"RGB",
"GRAY"
],
"title": "img_mode",
"type": "categorical"
},
"pre_processes": {
"automl_enabled": false,
"default": [
{
"args": {
"keep_ratio": true,
"max_tries": 50,
"size": [
640,
640
]
},
"type": "EastRandomCropData"
},
{
"args": {
"shrink_ratio": 0.4,
"thresh_max": 0.7,
"thresh_min": 0.3
},
"type": "MakeBorderMap"
},
{
"args": {
"min_text_size": 8,
"shrink_ratio": 0.4
},
"type": "MakeShrinkMap"
}
],
"description": "The pre-processing configuration.",
"title": "pre_processes",
"type": "list"
}
},
"type": "collection"
},
"data_name": {
"default": "ICDAR2015Dataset",
"description": "The dataset type",
"title": "data_name",
"type": "string"
},
"data_path": {
"automl_enabled": false,
"default": [],
"description": "The list of training dataset paths",
"title": "data_path",
"type": "list"
},
"loader": {
"automl_disabled_parameters": [
"dataset.train_dataset.loader.batch_size"
],
"automl_enabled": false,
"default": {
"batch_size": 16,
"collate_fn": "",
"num_workers": 0,
"pin_memory": false,
"shuffle": true
},
"description": "Configurable parameters to construct the training dataloader.",
"popular": [
"batch_size",
"num_workers"
],
"properties": {
"batch_size": {
"automl_enabled": false,
"default": 16,
"description": "The batch size during training.",
"maximum": Infinity,
"minimum": 1,
"popular": true,
"title": "batch_size",
"type": "int"
},
"collate_fn": {
"default": "",
"description": "The collate function.",
"type": "string"
},
"num_workers": {
"default": 0,
"description": "The threads used to load data.",
"maximum": Infinity,
"minimum": 0,
"popular": true,
"title": "num_workers",
"type": "int"
},
"pin_memory": {
"default": false,
"description": "Flag to enable pinned memory or not",
"title": "pin_memory",
"type": "bool"
},
"shuffle": {
"default": true,
"description": "Flag to shuffle the data or not.",
"title": "shuffle",
"type": "bool"
}
},
"type": "collection"
}
},
"title": "train_dataset",
"type": "collection"
},
"validate_dataset": {
"automl_disabled_parameters": [
"dataset.validate_dataset.data_path",
"dataset.validate_dataset.args",
"dataset.validate_dataset.loader"
],
"automl_enabled": false,
"default": {
"args": {
"filter_keys": [
""
],
"ignore_tags": [
"*",
"###"
],
"img_mode": "BGR",
"pre_processes": [
{
"args": {
"resize_text_polys": true,
"short_size": [
1280,
736
]
},
"type": "Resize2D"
}
]
},
"data_name": "ICDAR2015Dataset",
"data_path": [],
"loader": {
"batch_size": 1,
"collate_fn": "ICDARCollateFN",
"num_workers": 0,
"pin_memory": false,
"shuffle": false
}
},
"description": "Hyper parameters to configure the validation dataset.",
"popular": [
"loader"
],
"properties": {
"args": {
"automl_disabled_parameters": [
"dataset.validate_dataset.args.filter_keys",
"dataset.validate_dataset.args.ignore_tags",
"dataset.validate_dataset.args.pre_processes"
],
"automl_enabled": false,
"default": {
"filter_keys": [
""
],
"ignore_tags": [
"*",
"###"
],
"img_mode": "BGR",
"pre_processes": [
{
"args": {
"resize_text_polys": true,
"short_size": [
1280,
736
]
},
"type": "Resize2D"
}
]
},
"description": "Configurable parameters to construct the validation dataset.",
"properties": {
"filter_keys": {
"automl_enabled": false,
"default": [
""
],
"description": "List of ignored keys",
"title": "filter_keys",
"type": "list"
},
"ignore_tags": {
"automl_enabled": false,
"default": [
"*",
"###"
],
"description": "List of labels that are not used to evaluate",
"title": "ignore_tags",
"type": "list"
},
"img_mode": {
"default": "BGR",
"description": "The image mode.",
"enum": [
"BGR",
"RGB",
"GRAY"
],
"title": "img_mode",
"type": "categorical"
},
"pre_processes": {
"automl_enabled": false,
"default": [
{
"args": {
"resize_text_polys": true,
"short_size": [
1280,
736
]
},
"type": "Resize2D"
}
],
"description": "The pre-processing configuration.",
"title": "pre_processes",
"type": "list"
}
},
"type": "collection"
},
"data_name": {
"default": "ICDAR2015Dataset",
"description": "The dataset type",
"title": "data_name",
"type": "string"
},
"data_path": {
"automl_enabled": false,
"default": [],
"description": "The list of training dataset paths",
"title": "data_path",
"type": "list"
},
"loader": {
"automl_enabled": false,
"default": {
"batch_size": 1,
"collate_fn": "ICDARCollateFN",
"num_workers": 0,
"pin_memory": false,
"shuffle": false
},
"description": "Configurable parameters to construct the validation dataloader.",
"popular": [
"batch_size",
"num_workers"
],
"properties": {
"batch_size": {
"default": 1,
"description": "The batch size during evaluation",
"maximum": Infinity,
"minimum": 1,
"popular": true,
"title": "batch_size",
"type": "int"
},
"collate_fn": {
"default": "ICDARCollateFN",
"description": "The collate function.",
"type": "string"
},
"num_workers": {
"default": 0,
"description": "The threads used to load data.",
"maximum": Infinity,
"minimum": 0,
"popular": true,
"title": "num_workers",
"type": "int"
},
"pin_memory": {
"default": false,
"description": "Flag to enable pinned memory or not",
"title": "pin_memory",
"type": "bool"
},
"shuffle": {
"default": false,
"description": "Flag to shuffle the data or not",
"title": "shuffle",
"type": "bool"
}
},
"type": "collection"
}
},
"title": "validate_dataset",
"type": "collection"
}
},
"type": "collection"
},
"encryption_key": {
"default": "",
"description": "Key for encrypting model checkpoints",
"title": "Encryption key",
"type": "string"
},
"evaluate": {
"automl_disabled_parameters": [
"evaluate.gpu_ids",
"evaluate.post_processing",
"evaluate.metric"
],
"automl_enabled": false,
"default": {
"batch_size": 1,
"checkpoint": "???",
"gpu_ids": [
0
],
"metric": {
"args": {
"is_output_polygon": false
},
"type": "QuadMetric"
},
"num_gpus": 1,
"num_nodes": 1,
"post_processing": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
},
"type": "SegDetectorRepresenter"
},
"results_dir": "",
"trt_engine": ""
},
"description": "Configurable parameters to construct the evaluator for an OCDNet experiment.",
"popular": [
"post_processing",
"batch_size",
"num_gpus",
"num_nodes",
"gpu_ids"
],
"properties": {
"batch_size": {
"default": 1,
"description": "The batch size during evaluation.",
"maximum": Infinity,
"minimum": 1,
"popular": true,
"title": "batch_size",
"type": "int"
},
"checkpoint": {
"default": "???",
"description": "Path to the checkpoint used for evaluation.",
"title": "Checkpoint path",
"type": "string"
},
"gpu_ids": {
"automl_enabled": false,
"default": [
0
],
"description": "\n List of GPU IDs to run the evaluation on. The length of this list\n must be equal to the number of gpus in evaluate.num_gpus.",
"popular": true,
"title": "GPU IDs",
"type": "list"
},
"metric": {
"automl_disabled_parameters": [
"evaluate.metric.args"
],
"automl_enabled": false,
"default": {
"args": {
"is_output_polygon": false
},
"type": "QuadMetric"
},
"description": "Hyper parameters to configure the metric.",
"properties": {
"args": {
"automl_enabled": false,
"default": {
"is_output_polygon": false
},
"description": "Configurable parameters to construct the metric computing.",
"properties": {
"is_output_polygon": {
"default": false,
"description": "Flag to output polygon or BBOX",
"title": "is_output_polygon",
"type": "bool"
}
},
"type": "collection"
},
"type": {
"default": "QuadMetric",
"description": "The configuration for metric computing.",
"title": "type",
"type": "string"
}
},
"title": "metric",
"type": "collection"
},
"num_gpus": {
"default": 1,
"description": "The number of GPUs to run the evaluation job.",
"minimum": 1,
"popular": true,
"title": "Number of GPUs",
"type": "int"
},
"num_nodes": {
"default": 1,
"description": "Number of nodes to run the evaluation on. If > 1, then multi-node is enabled.",
"minimum": 1,
"popular": true,
"title": "Number of nodes",
"type": "int"
},
"post_processing": {
"automl_disabled_parameters": [
"evaluate.post_processing.args"
],
"automl_enabled": false,
"default": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
},
"type": "SegDetectorRepresenter"
},
"description": "Configurable parameters to construct the Postprocessing.",
"popular": [
"args"
],
"properties": {
"args": {
"automl_enabled": false,
"default": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
},
"description": "Configurable parameters to construct the postprocessing.",
"popular": [
"thresh",
"unclip_ratio",
"box_thresh",
"max_candidates"
],
"properties": {
"box_thresh": {
"default": 0.55,
"description": "The threshold for BBOX.",
"maximum": 1.0,
"minimum": 0.0,
"popular": true,
"title": "box_thresh",
"type": "float"
},
"max_candidates": {
"default": 1000,
"description": "The maximum candidate BBOX.",
"maximum": Infinity,
"minimum": 1,
"popular": true,
"title": "max_candidates",
"type": "int"
},
"thresh": {
"default": 0.3,
"description": "The threshold for binarization.",
"maximum": 1.0,
"minimum": 0.0,
"popular": true,
"title": "thresh",
"type": "float"
},
"unclip_ratio": {
"default": 1.5,
"description": "The unclip ratio using the Vatti clipping algorithm.",
"maximum": Infinity,
"minimum": 0.0,
"popular": true,
"title": "unclip_ratio",
"type": "float"
}
},
"type": "collection"
},
"type": {
"default": "SegDetectorRepresenter",
"description": "The postprocessing name.",
"title": "type",
"type": "string"
}
},
"type": "collection"
},
"results_dir": {
"default": "",
"description": "\n Path to where all the assets generated from a task are stored.\n ",
"title": "Results directory",
"type": "string"
},
"trt_engine": {
"default": "",
"description": "Path to the TensorRT engine to be used for evaluation.\n This only works with :code:`tao-deploy`.",
"title": "TensorRT Engine",
"type": "string"
}
},
"type": "collection"
},
"model": {
"automl_enabled": false,
"default": {
"activation_checkpoint": false,
"backbone": "deformable_resnet18",
"enlarge_feature_map_size": false,
"fuse_qkv_proj": true,
"head": "DBHead",
"in_channels": 3,
"inner_channels": 256,
"k": 50,
"load_pruned_graph": false,
"neck": "FPN",
"out_channels": 2,
"pretrained": false,
"pretrained_model_path": "",
"pruned_graph_path": "",
"quant": false
},
"description": "Configurable parameters to construct the model for an OCDNet experiment.",
"popular": [
"backbone"
],
"properties": {
"activation_checkpoint": {
"default": false,
"description": "Flag to use activation checkpoints to save GPU memory, only for the FAN-tiny backbone",
"title": "activation_checkpoint",
"type": "bool"
},
"backbone": {
"default": "deformable_resnet18",
"description": "The backbone name of the model.\n It supports deformable_resnet18, deformable_resnet50 and fan_tiny_8_p4_hybrid.",
"enum": [
"deformable_resnet18",
"deformable_resnet50",
"fan_tiny_8_p4_hybrid"
],
"popular": true,
"title": "backbone",
"type": "categorical"
},
"enlarge_feature_map_size": {
"default": false,
"description": "Flag to enlarge the output feature map size of the FAN-tiny backbone",
"title": "enlarge_feature_map_size",
"type": "bool"
},
"fuse_qkv_proj": {
"default": true,
"description": "Flag to fuse the qkv projection",
"title": "fuse_qkv_proj",
"type": "bool"
},
"head": {
"default": "DBHead",
"description": "Head name of the model.",
"title": "head",
"type": "string"
},
"in_channels": {
"default": 3,
"description": "Number of input channels in FPN",
"maximum": 3,
"minimum": 3,
"title": "in_channels",
"type": "int"
},
"inner_channels": {
"default": 256,
"description": "Number of inner channels in FPN",
"maximum": 256,
"minimum": 256,
"title": "inner_channels",
"type": "int"
},
"k": {
"default": 50,
"description": "Coefficient of Differentiable Binarization",
"maximum": Infinity,
"minimum": 1,
"title": "k",
"type": "int"
},
"load_pruned_graph": {
"default": false,
"description": "Flag to load pruned model or not.",
"title": "load_pruned_graph",
"type": "bool"
},
"neck": {
"default": "FPN",
"description": "Neck name of the model.",
"enum": [
"FPN",
"FANNeck"
],
"title": "neck",
"type": "categorical"
},
"out_channels": {
"default": 2,
"description": "Number of out channels",
"maximum": 2,
"minimum": 2,
"title": "out_channels",
"type": "int"
},
"pretrained": {
"default": false,
"description": "Flag to use pretrained model or not.",
"title": "pretrained",
"type": "bool"
},
"pretrained_model_path": {
"default": "",
"description": "[Optional] Path to a pretrained model file.",
"title": "pretrained model path",
"type": "string"
},
"pruned_graph_path": {
"default": "",
"description": "[Optional] Path to a pruned model file.",
"title": "pruned model path",
"type": "string"
},
"quant": {
"default": false,
"description": "Flag to do quantization",
"title": "quant",
"type": "bool"
}
},
"type": "collection"
},
"model_name": {
"default": "",
"description": "Name of model if invoking task via :code:`model_agnostic`",
"title": "Model name",
"type": "string"
},
"quantize": {
"automl_disabled_parameters": [
"quantize.layers",
"quantize.skip_names",
"quantize.backend_kwargs"
],
"automl_enabled": false,
"default": {
"algorithm": "minmax",
"backend": "torchao",
"backend_kwargs": {},
"device": "cuda",
"layers": [],
"mode": "weight_only_ptq",
"model_path": "",
"results_dir": "",
"skip_names": []
},
"description": "Configurable parameters for model quantization.",
"properties": {
"algorithm": {
"default": "minmax",
"description": "Calibration/optimization algorithm. Used by ModelOpt backends (modelopt.pytorch and modelopt.onnx). Ignored by torchao backend.",
"enum": [
"minmax",
"max",
"entropy",
"awq_clip",
"awq_lite",
"awq_full",
"rtn_dq"
],
"title": "Calibration algorithm",
"type": "categorical"
},
"backend": {
"default": "torchao",
"description": "The quantization backend to use",
"enum": [
"modelopt.pytorch",
"torchao",
"modelopt.onnx"
],
"title": "Quantization backend",
"type": "categorical"
},
"backend_kwargs": {
"automl_enabled": false,
"description": "Additional keyword arguments to pass to the backend",
"title": "Backend kwargs",
"type": "collection"
},
"device": {
"default": "cuda",
"description": "Device to use for calibration. Accepts 'cuda' (uses default GPU), 'cpu', 'trt' (TensorRT for ONNX backend), or specific GPU device like 'cuda:0', 'cuda:1', etc. If 'cuda' is specified but no GPU is available, the framework will automatically fall back to 'cpu'. Note: 'trt' is only supported by the modelopt.onnx backend for ONNX Runtime with TensorRT execution provider.",
"pattern": "^(cuda|cpu|trt|cuda:[0-9]+)$",
"title": "Calibration device",
"type": "string"
},
"layers": {
"automl_enabled": false,
"default": [],
"description": "List of per-module quantization configurations. Each entry specifies which modules to quantize and their data types. This is the primary way to configure quantization.",
"title": "Layer quantization configs",
"type": "list"
},
"mode": {
"default": "weight_only_ptq",
"description": "The quantization mode to use",
"enum": [
"static_ptq",
"weight_only_ptq"
],
"title": "Quantization mode",
"type": "categorical"
},
"model_path": {
"default": "",
"description": "Path to the model to be quantized. For ONNX backend, path to ONNX file.",
"title": "Model path",
"type": "string"
},
"results_dir": {
"default": "",
"description": "Path to where all the assets generated from a task are stored.",
"title": "Results directory",
"type": "string"
},
"skip_names": {
"automl_enabled": false,
"default": [],
"description": "List of module/layer names or patterns to exclude from quantization",
"title": "Skip names",
"type": "list"
}
},
"required": [
"model_path",
"results_dir"
],
"type": "collection"
},
"results_dir": {
"default": "",
"description": "\n Path to where all the assets generated from a task are stored.\n ",
"title": "Results directory",
"type": "string"
},
"train": {
"automl_disabled_parameters": [
"train.gpu_ids",
"train.cudnn",
"train.post_processing",
"train.metric",
"train.trainer",
"train.loss",
"train.optimizer",
"train.lr_scheduler"
],
"automl_enabled": false,
"default": {
"checkpoint_interval": 1,
"checkpoint_interval_unit": "epoch",
"cudnn": {
"benchmark": false,
"deterministic": true
},
"distributed_strategy": "ddp",
"gpu_ids": [
0
],
"is_dry_run": false,
"loss": {
"alpha": 5,
"beta": 10,
"eps": 1e-06,
"ohem_ratio": 3,
"type": "DBLoss"
},
"lr_scheduler": {
"args": {
"warmup_epoch": 3
},
"type": "WarmupPolyLR"
},
"metric": {
"args": {
"is_output_polygon": false
},
"type": "QuadMetric"
},
"model_ema": false,
"model_ema_decay": 0.9999,
"num_epochs": 10,
"num_gpus": 1,
"num_nodes": 1,
"optimizer": {
"args": {
"amsgrad": true,
"eps": 1e-08,
"lr": 0.001,
"momentum": 0.0,
"weight_decay": 0.0
},
"type": "Adam"
},
"post_processing": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
},
"type": "SegDetectorRepresenter"
},
"precision": "fp32",
"results_dir": "",
"resume_training_checkpoint_path": "",
"seed": 1234,
"trainer": {
"clip_grad_norm": 5.0
},
"use_distributed_sampler": false,
"validation_interval": 1
},
"description": "Configurable parameters to construct the trainer for an OCDNet experiment.",
"popular": [
"post_processing",
"validation_interval",
"checkpoint_interval",
"num_gpus",
"num_nodes",
"num_epochs",
"optimizer",
"gpu_ids"
],
"properties": {
"checkpoint_interval": {
"default": 1,
"description": "The interval (in epochs) at which a checkpoint will be saved. Helps resume training.",
"minimum": 1,
"popular": true,
"title": "Checkpoint interval",
"type": "int"
},
"checkpoint_interval_unit": {
"default": "epoch",
"description": "The unit of the checkpoint interval.",
"enum": [
"epoch",
"step"
],
"title": "Checkpoint interval unit",
"type": "categorical"
},
"cudnn": {
"automl_enabled": false,
"default": {
"benchmark": false,
"deterministic": true
},
"properties": {
"benchmark": {
"default": false,
"type": "bool"
},
"deterministic": {
"default": true,
"type": "bool"
}
},
"type": "collection"
},
"distributed_strategy": {
"default": "ddp",
"description": "The strategy for distributed training",
"title": "distributed_strategy",
"type": "string"
},
"gpu_ids": {
"automl_enabled": false,
"default": [
0
],
"description": "\n List of GPU IDs to run the training on. The length of this list\n must be equal to the number of gpus in train.num_gpus.",
"popular": true,
"title": "GPU IDs",
"type": "list"
},
"is_dry_run": {
"default": false,
"description": "Flag to run only one batch for debugging purposes",
"title": "is_dry_run",
"type": "bool"
},
"loss": {
"automl_enabled": false,
"default": {
"alpha": 5,
"beta": 10,
"eps": 1e-06,
"ohem_ratio": 3,
"type": "DBLoss"
},
"description": "Hyper parameters to configure the loss.",
"properties": {
"alpha": {
"default": 5,
"description": "The alpha coefficient.",
"maximum": Infinity,
"minimum": 1,
"title": "alpha",
"type": "int"
},
"beta": {
"default": 10,
"description": "The beta coefficient",
"maximum": Infinity,
"minimum": 1,
"title": "beta",
"type": "int"
},
"eps": {
"default": 1e-06,
"description": "The epsilon coefficient.",
"maximum": 1.0,
"minimum": 0.0,
"title": "epsilon",
"type": "float"
},
"ohem_ratio": {
"default": 3,
"description": "The ohem_ratio coefficient",
"maximum": Infinity,
"minimum": 1,
"title": "ohem_ratio",
"type": "int"
},
"type": {
"default": "DBLoss",
"description": "Loss function name.",
"title": "type",
"type": "string"
}
},
"title": "loss",
"type": "collection"
},
"lr_scheduler": {
"automl_disabled_parameters": [
"train.lr_scheduler.args"
],
"automl_enabled": false,
"default": {
"args": {
"warmup_epoch": 3
},
"type": "WarmupPolyLR"
},
"description": "Hyper parameters to configure the learning rate scheduler.",
"properties": {
"args": {
"automl_enabled": false,
"default": {
"warmup_epoch": 3
},
"description": "Configurable parameters to construct the learning scheduler.",
"properties": {
"warmup_epoch": {
"default": 3,
"description": "The warmup epoch to the initial learning rate. Should be different from the num_epochs.",
"maximum": Infinity,
"minimum": 1,
"title": "warmup_epoch",
"type": "int"
}
},
"type": "collection"
},
"type": {
"default": "WarmupPolyLR",
"description": "The learning scheduler.",
"title": "type",
"type": "string"
}
},
"title": "lr_scheduler",
"type": "collection"
},
"metric": {
"automl_disabled_parameters": [
"train.metric.args"
],
"automl_enabled": false,
"default": {
"args": {
"is_output_polygon": false
},
"type": "QuadMetric"
},
"description": "Hyper parameters to configure the metric.",
"properties": {
"args": {
"automl_enabled": false,
"default": {
"is_output_polygon": false
},
"description": "Configurable parameters to construct the metric computing.",
"properties": {
"is_output_polygon": {
"default": false,
"description": "Flag to output polygon or BBOX",
"title": "is_output_polygon",
"type": "bool"
}
},
"type": "collection"
},
"type": {
"default": "QuadMetric",
"description": "The configuration for metric computing.",
"title": "type",
"type": "string"
}
},
"title": "metric",
"type": "collection"
},
"model_ema": {
"default": false,
"description": "Flag to enable model EMA",
"title": "model_ema",
"type": "bool"
},
"model_ema_decay": {
"default": 0.9999,
"description": "The decay of model EMA",
"maximum": 1.0,
"minimum": 0.0,
"title": "model_ema_decay",
"type": "float"
},
"num_epochs": {
"default": 10,
"description": "Number of epochs to run the training.",
"maximum": Infinity,
"minimum": 1,
"popular": true,
"title": "Number of epochs",
"type": "int"
},
"num_gpus": {
"default": 1,
"description": "The number of GPUs to run the train job.",
"minimum": 1,
"popular": true,
"title": "Number of GPUs",
"type": "int"
},
"num_nodes": {
"default": 1,
"description": "Number of nodes to run the training on. If > 1, then multi-node is enabled.",
"minimum": 1,
"popular": true,
"title": "Number of nodes",
"type": "int"
},
"optimizer": {
"automl_disabled_parameters": [
"train.optimizer.args"
],
"automl_enabled": false,
"default": {
"args": {
"amsgrad": true,
"eps": 1e-08,
"lr": 0.001,
"momentum": 0.0,
"weight_decay": 0.0
},
"type": "Adam"
},
"description": "Hyper parameters to configure the optimizer.",
"popular": [
"args"
],
"properties": {
"args": {
"automl_default_parameters": [
"train.optimizer.args.lr",
"train.optimizer.args.weight_decay"
],
"automl_enabled": false,
"default": {
"amsgrad": true,
"eps": 1e-08,
"lr": 0.001,
"momentum": 0.0,
"weight_decay": 0.0
},
"description": "Configurable parameters to construct the optimizer.",
"popular": [
"lr"
],
"properties": {
"amsgrad": {
"default": true,
"description": "Flag to use AMSGrad as stochastic optimization method",
"title": "amsgrad",
"type": "bool"
},
"eps": {
"default": 1e-08,
"description": "The epsilon coefficient",
"maximum": 1.0,
"minimum": 0.0,
"title": "epsilon",
"type": "float"
},
"lr": {
"automl_enabled": true,
"default": 0.001,
"description": "The initial learning rate",
"math_cond": "> 0.0",
"maximum": Infinity,
"minimum": 0.0,
"popular": true,
"title": "learning rate",
"type": "float"
},
"momentum": {
"default": 0.0,
"description": "The momentum for the Adam optimizer.",
"maximum": 1.0,
"minimum": 0.0,
"title": "momentum - Adam",
"type": "float"
},
"weight_decay": {
"automl_enabled": true,
"default": 0.0,
"description": "The weight decay coefficient.",
"math_cond": ">= 0.0",
"maximum": Infinity,
"minimum": 0.0,
"title": "weight decay",
"type": "float"
}
},
"type": "collection"
},
"type": {
"default": "Adam",
"description": "Optimizer type.",
"title": "type",
"type": "string"
}
},
"title": "optimizer",
"type": "collection"
},
"post_processing": {
"automl_disabled_parameters": [
"train.post_processing.args"
],
"automl_enabled": false,
"default": {
"args": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
},
"type": "SegDetectorRepresenter"
},
"description": "Hyper parameters to configure the post_processing.",
"popular": [
"args"
],
"properties": {
"args": {
"automl_enabled": false,
"default": {
"box_thresh": 0.55,
"max_candidates": 1000,
"thresh": 0.3,
"unclip_ratio": 1.5
},
"description": "Configurable parameters to construct the postprocessing.",
"popular": [
"thresh",
"unclip_ratio",
"box_thresh",
"max_candidates"
],
"properties": {
"box_thresh": {
"default": 0.55,
"description": "The threshold for BBOX.",
"maximum": 1.0,
"minimum": 0.0,
"popular": true,
"title": "box_thresh",
"type": "float"
},
"max_candidates": {
"default": 1000,
"description": "The maximum candidate BBOX.",
"maximum": Infinity,
"minimum": 1,
"popular": true,
"title": "max_candidates",
"type": "int"
},
"thresh": {
"default": 0.3,
"description": "The threshold for binarization.",
"maximum": 1.0,
"minimum": 0.0,
"popular": true,
"title": "thresh",
"type": "float"
},
"unclip_ratio": {
"default": 1.5,
"description": "The unclip ratio using the Vatti clipping algorithm.",
"maximum": Infinity,
"minimum": 0.0,
"popular": true,
"title": "unclip_ratio",
"type": "float"
}
},
"type": "collection"
},
"type": {
"default": "SegDetectorRepresenter",
"description": "The postprocessing name.",
"title": "type",
"type": "string"
}
},
"title": "post_processing",
"type": "collection"
},
"precision": {
"default": "fp32",
"description": "The training precision",
"title": "precision",
"type": "string"
},
"results_dir": {
"default": "",
"description": "\n Path to where all the assets generated from a task are stored.\n ",
"title": "Results directory",
"type": "string"
},
"resume_training_checkpoint_path": {
"default": "",
"description": "Path to the checkpoint to resume training from.",
"title": "Resume checkpoint path",
"type": "string"
},
"seed": {
"default": 1234,
"description": "The seed for the initializer in PyTorch. If < 0, disable fixed seed.",
"maximum": Infinity,
"minimum": -1,
"title": "Seed for randomization",
"type": "int"
},
"trainer": {
"automl_enabled": false,
"default": {
"clip_grad_norm": 5.0
},
"description": "Hyper parameters to configure the trainer.",
"properties": {
"clip_grad_norm": {
"default": 5.0,
"description": "\n Amount to clip the gradient by L2 Norm.\n A value of 0.0 specifies no clipping.",
"maximum": Infinity,
"minimum": 0.0,
"title": "clip gradient norm",
"type": "float"
}
},
"title": "trainer",
"type": "collection"
},
"use_distributed_sampler": {
"default": false,
"description": "Use distributed sampler for multi-GPU training",
"title": "use_distributed_sampler",
"type": "bool"
},
"validation_interval": {
"default": 1,
"description": "\n The interval (in epochs) at which a evaluation\n will be triggered on the validation dataset.",
"minimum": 1,
"popular": true,
"title": "Validation interval",
"type": "int"
}
},
"type": "collection"
},
"wandb": {
"automl_disabled_parameters": [
"wandb.tags"
],
"automl_enabled": false,
"default": {
"enable": true,
"entity": "",
"group": "",
"name": "TAO Toolkit Training",
"project": "TAO Toolkit",
"reinit": false,
"run_id": "",
"save_code": false,
"sync_tensorboard": false,
"tags": [
"tao-toolkit"
]
},
"properties": {
"enable": {
"default": true,
"type": "bool"
},
"entity": {
"default": "",
"type": "string"
},
"group": {
"default": "",
"type": "string"
},
"name": {
"default": "TAO Toolkit Training",
"type": "string"
},
"project": {
"default": "TAO Toolkit",
"type": "string"
},
"reinit": {
"default": false,
"type": "bool"
},
"run_id": {
"default": "",
"type": "string"
},
"save_code": {
"default": false,
"type": "bool"
},
"sync_tensorboard": {
"default": false,
"type": "bool"
},
"tags": {
"automl_enabled": false,
"default": [
"tao-toolkit"
],
"type": "list"
}
},
"type": "collection"
}
},
"required": [
"quantize"
],
"type": "object",
"x_tao_schema": {
"action": "evaluate",
"core_module": "ocdnet",
"model": "ocdnet",
"network_arch": "ocdnet",
"schema_action": "evaluate",
"schema_version": 1,
"source": "tao-core dataclass config"
}
}
Description: <br>
OCDNet for scene text detection. Detects arbitrary-oriented text regions in natural images using a differentiable binarization approach. <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 training, evaluating, exporting, pruning, quantizing, retraining, or running inference for TAO OCDNet scene text detection models. <br>
Deployment Geography for Use: <br>
Global <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>
- TAO Deploy OCDNet <br>
- Skill Info <br>
- Agent Skills Open Standard <br>
Skill Output: <br>
Output Type(s): [Shell commands, Configuration instructions] <br> Output Format: [Markdown with inline bash code blocks] <br> Output Parameters: [1D] <br> Other Properties Related to Output: [None] <br>
Evaluation Agents Used: <br>
- Claude Code (
claude-code) <br> - Codex (
codex) <br>
Evaluation Tasks: <br>
Evaluated against 1 evaluation task via NVSkills-Eval with external profile in astra-sandbox environment. <br>
Evaluation Metrics Used: <br>
Reported benchmark dimensions: <br>
- Security: Checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access. <br>
- Correctness: Checks whether the agent follows the expected workflow and produces the correct final output. <br>
- Discoverability: Checks whether the agent loads the skill when relevant and avoids using it when irrelevant. <br>
- Effectiveness: Checks whether the agent performs measurably better with the skill than without it. <br>
- Efficiency: Checks whether the agent uses fewer tokens and avoids redundant work. <br>
Underlying evaluation signals used in this run: <br>
security: Checks for unsafe operations, secret leakage, and unauthorized access. <br>skill_execution: Verifies that the agent loaded the expected skill and workflow. <br>skill_efficiency: Checks routing quality, decoy avoidance, and redundant tool usage. <br>accuracy: Grades final-answer correctness against the reference answer. <br>goal_accuracy: Checks whether the overall user task completed successfully. <br>behavior_check: Verifies expected behavior steps, including safety expectations. <br>token_efficiency: Compares token usage with and without the skill. <br>
Evaluation Results: <br>
| Dimension | Num | claude-code | codex |
|---|---|---|---|
| Security | 1 | 100% (+0%) | 100% (+0%) |
| Correctness | 1 | 84% (+84%) | 97% (+77%) |
| Discoverability | 1 | 34% (+34%) | 97% (+97%) |
| Effectiveness | 1 | 100% (+90%) | 90% (+46%) |
| Efficiency | 1 | 24% (-3%) | 96% (+68%) |
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>
Related skills
How it compares
Pick tao-train-ocdnet for oriented text detection; use tao-train-oneformer or Sparse4D skills for segmentation or 3D perception tasks.
FAQ
What model does tao-train-ocdnet train?
tao-train-ocdnet trains NVIDIA TAO OCDNet for scene text detection, finding arbitrary-oriented text regions in natural images via differentiable binarization—not geospatial change detection or 3D perception.
How many TAO pipeline actions does tao-train-ocdnet cover?
tao-train-ocdnet skill_info.yaml defines 7 actions: train, quantize, evaluate, export, prune, retrain, and inference. Each maps to ocdnet CLI commands with YAML spec templates and Docker containers.