"Run and troubleshoot DeepDanbooru image-tag inference through the
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill inference-evaluation --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Inference Evaluation?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-inference-evaluation)More formats (shields.io, HTML) on the badges page.
---
name: inference-evaluation
description: "Run and troubleshoot DeepDanbooru image-tag inference through the
project or explicit model/tag APIs, including preprocessing, folder traversal,
thresholds, and text outputs."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# Inference and evaluation
Use this sub-skill when a trained DeepDanbooru model must turn one or more
images into tags. It covers the `evaluate` and `evaluate-project` CLI commands,
the corresponding Python functions, image preprocessing, recursive folder
selection, thresholds, and optional `.txt` sidecars.
This is an inference skill, not a training or dataset-preparation procedure.
For a missing or malformed project, tag file, or dataset, use
[project-data-setup](../project-data-setup/SKILL.md) first. For model conversion
or experimental Grad-CAM output, use
[post-training-tools](../post-training-tools/SKILL.md). The bundled smoke
scripts are tiny local checks; they do not download weights, contact a network,
or read the original checkout.
## Choose the entry point
| Situation | Entry point | Important constraint |
|---|---|---|
| Use a project to select both model and tags | `deepdanbooru evaluate TARGET --project-path PROJECT` | Project must contain `project.json`, `tags.txt`, and its selected model artifact. |
| Use an explicit saved model and tag file | `deepdanbooru evaluate TARGET --model-path MODEL --tags-path TAGS` | Without `--project-path`, **both** explicit paths are required. |
| Override only one project component | `evaluate` with project plus `--model-path` or `--tags-path` | A direct model or tags path takes precedence for that component. |
| Evaluate a file or recursively every recognized image below a folder | `deepdanbooru evaluate TARGET --project-path PROJECT --allow-folder` | This is the supported 1.0.0 project-folder path. Native `evaluate-project` is not recommended because its loader calls a missing symbol; see below. |
| Call inference from Python | `deepdanbooru.commands.evaluate_image` or `evaluate` | Match the model's NHWC input dimensions and tag-output dimension. |
The `evaluate` function accepts a folder only when `allow_folder=True`. The
Click CLI defaults that flag off, so passing a directory without `--allow-folder`
is a common mistake. In the exact 1.0.0 source revision, native
`evaluate-project` calls the missing `dd.data.load_tags_from_project` symbol and
raises `AttributeError` before inference. Use `evaluate` with `--project-path`
and `--allow-folder` for production. The bundled project smoke helper exercises
that supported fallback; it does not claim a native `evaluate-project` run.
## CPU-first prerequisites
The verified environment is Python 3.11 with TensorFlow 2.21.0 and no CUDA
libraries in the verification prefix. CPU correctness is required. By default,
`evaluate` sets `CUDA_VISIBLE_DEVICES=-1` before loading the model; do not remove
that safeguard for a CPU run. `--allow-gpu` only leaves device selection
unchanged. It is an opt-in switch, **not evidence that GPU support is ready**;
GPU readiness was not verified for this repository.
Before a real run, confirm:
1. `deepdanbooru --help` and `deepdanbooru evaluate --help` work in the chosen
environment.
2. The model is loadable and has an image input shape with height at index 1 and
width at index 2, for example `(None, 299, 299, 3)`.
3. The tag file is newline-separated and is the exact vocabulary used for the
model's output units.
4. Target paths exist and contain decodable images. `--save-txt` writes beside
each image and the native helper can overwrite an existing sidecar. For a
guarded skill-layer write, use `scripts/save_txt_guard.py`: it rejects an
empty selected-tag list, rejects a sibling directory even with overwrite
enabled, and requires explicit overwrite permission for regular files.
## Fast, inspectable workflow
1. Start with one known image and `--threshold 0.5`, without `--save-txt`.
2. Choose the project route or provide both explicit model and tags paths. Use
`--verbose` when diagnosing path selection or load failures.
3. Inspect the printed scores and tag order. If no tag is printed, rerun with a
lower diagnostic threshold such as `0.0`; do not immediately assume the
image decoder or model failed.
4. Add `--allow-folder` and a narrow `--folder-filters` only after one-file
inference works. Confirm the discovered set and natural ordering.
5. Enable `--save-txt` only after output is useful, and verify each sidecar.
The native path writes selected tag names only and replaces existing files;
use the guard helper when empty output or replacement must be refused.
6. Use the deterministic helpers when the environment or a fixture is in doubt:
`python scripts/image_preprocess_smoke.py`,
`python scripts/dummy_evaluate_smoke.py`, and
`python scripts/evaluate_project_smoke.py`.
Read the focused contracts before changing a command:
- [CLI reference](references/cli-reference.md)
- [Python API reference](references/api-reference.md)
- [Image inputs and tags](references/image-inputs-and-tags.md)
- [Troubleshooting](references/troubleshooting.md)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!