All pages

argus-curator CLI reference

argus-curator 0.15.2.dev2+g97021d6 @ 97021d6PyPI (opens in new tab)Source (opens in new tab)Changelog (opens in new tab)

Imported from docs/cli.md on argus-curator's dev branch at that commit. Fixes go upstream, not here.

LoRA-native dataset curation: score, dedup, face-cluster, export.

Usage:

$ argus-curator [OPTIONS] COMMAND [ARGS]...

Options:

  • --install-completion: Install completion for the current shell.
  • --show-completion: Show completion for the current shell, to copy it or customize the installation.
  • --help: Show this message and exit.

Commands:

  • scan: Scan a folder, rank for training...
  • serve: Start the argus-curator micro-server...
  • detectors: Report which optional detectors/backends...
  • fairface-convert: Convert the FairFace PyTorch weights to...
  • mivolo-convert: Fetch, verify and convert MiVOLO v2 to the...
  • places365-convert: Fetch, verify and convert a Places365-CNN...
  • garments-convert: Fetch, verify and convert the Fashionpedia...
  • schema: Emit the wire-contract JSON Schema...

argus-curator scan

Scan a folder, rank for training suitability, and optionally export keepers.

Usage:

$ argus-curator scan [OPTIONS] {source}

Arguments:

  • source <path>: Root folder to scan (recurses into sub-folders) [required]

Options:

  • --min-score <float>: Score threshold for keepers (0..1) [default: 0.6]
  • --copy-to <path>: Copy keepers here (structure preserved)
  • --move-to <path>: Move keepers here instead of copying
  • --symlink-to <path>: Symlink keepers here
  • --keep-similar: Keep non-representative near-duplicates
  • --no-cluster: Disable near-duplicate grouping
  • --cluster-distance <int>: pHash Hamming distance for near-duplicates [default: 10]
  • --max-keep <int>: Cap keepers to a diverse N
  • --diversity-weight <float>: 0=pure score, 1=pure spread [default: 0.4]
  • --min-short-side <int>: Minimum short-side pixels (512 at least) [default: 512]
  • --max-aspect-ratio <float>: Maximum long:short ratio [default: 3.0]
  • --blur-threshold <float>: Minimum Laplacian variance [default: 100.0]
  • --max-workers <int>: Parallel worker threads [default: 4]
  • --target-style <str>: photo or anime [default: photo]
  • --target-backend <str>: Diffusion backend family [default: sdxl]
  • --checkpoint <str>: Target checkpoint
  • --target-category <str>: identity|wardrobe|pose_composition|setting|concept [default: identity]
  • --faces: Run InsightFace detection + identity clustering
  • --faces-model <str>: InsightFace model name [default: buffalo_l]
  • --min-det-score <float>: Minimum face detection score [default: 0.5]
  • --cluster-eps <float>: Cosine-distance threshold for face clustering [default: 0.5]
  • --device <str>: auto|cpu|cuda for face detection [default: auto]
  • --fairface: Predict race/gender/age bracket per face with FairFace (implies --faces)
  • --mivolo: Predict age in years + gender per face with MiVOLO (implies --faces)
  • --fairface-model <path>: Converted FairFace ONNX model (ARGUS_CURATOR_FAIRFACE_MODEL)
  • --set-age: Give frames with no face the set's median MiVOLO age when one identity holds the scan (implies --mivolo)
  • --mivolo-body: Also give MiVOLO each face's body, from InsightFace's person detector (implies --mivolo; under evaluation)
  • --mivolo-model <path>: Converted MiVOLO ONNX model (ARGUS_CURATOR_MIVOLO_MODEL)
  • --scenes: Tag each image's scene + indoor/outdoor with Places365
  • --scene-top-k <int>: Scene categories recorded per image [default: 5]
  • --places365-model <path>: Converted Places365 ONNX model (ARGUS_CURATOR_PLACES365_MODEL)
  • --garments: Detect garments (type, colour, cut-off) with Fashionpedia
  • --garments-model <path>: Converted garment-detector ONNX model (ARGUS_CURATOR_GARMENTS_MODEL)
  • --face-clusters <str>: Comma-separated cluster ids to export
  • --face-reference <list[str]>: An image in the scan (relative path) whose face is the identity reference; repeatable. Each face then gets a reference_distance (implies --faces)
  • --face-source: Export only face-source images (one identity, frontal and level, large, sharp, eyes open, mouth closed, adult; needs --mivolo), ranked best first
  • --landmarks: Write the primary face's landmarks into the manifest
  • --pose <str>: Export only these primary-face poses (comma-separated: frontal,three_quarter,profile)
  • --race <str>: Export only these primary-face races (comma-separated: white,black,latino_hispanic,east_asian,southeast_asian,indian,middle_eastern)
  • --gender <str>: Export only these primary-face genders (male,female)
  • --age <str>: Export only these primary-face age brackets (comma-separated, e.g. 20-29,30-39)
  • --min-age <float>: Export only primary faces at least this old (MiVOLO)
  • --max-age <float>: Export only primary faces at most this old (MiVOLO)
  • --min-attr-conf <float>: Minimum confidence for a filtered attribute to count as a match (0..1) [default: 0.0]
  • --scene <str>: Export only images showing one of these Places365 scenes (comma-separated, e.g. beach,coast)
  • --environment <str>: Export only indoor or outdoor images (indoor,outdoor)
  • --min-scene-conf <float>: Minimum probability for a scene / environment to count as a match [default: 0.1]
  • --diversify-scenes: With --max-keep, also spread the selection across scenes
  • --garment <str>: Export only images wearing one of these garments (comma-separated, e.g. dress,skirt)
  • --exclude-garment <str>: Drop images showing any of these garments (e.g. bag_wallet,umbrella)
  • --min-garment-conf <float>: Minimum probability for a garment to count (filters + outfit diversity) [default: 0.5]
  • --uncropped: With --garment, the garment must not be cut off by the frame edge
  • --diversify-outfits: With --max-keep, also spread the selection across outfits
  • --nsfw / --no-nsfw: NudeNet nudity check (default: on when a NudeNet URL is configured; --no-nsfw opts out)
  • --nudenet-url <str>: NudeNet server origin, e.g. http://nudenet:8080 (opens in new tab) (ARGUS_CURATOR_NUDENET_URL)
  • --erax-url <str>: EraX-NSFW server origin, e.g. http://erax:8080 (opens in new tab) (ARGUS_CURATOR_ERAX_URL)
  • --watermark-url <str>: Watermark detector origin, e.g. http://watermark:8080 (opens in new tab) (ARGUS_CURATOR_WATERMARK_URL)
  • --nsfw-threshold <float>: Drop images whose exposed-nudity score is at or above this (0.2..1)
  • --nsfw-label <str>: Per-class thresholds, comma-separated LABEL=score (e.g. FEMALE_BREAST_EXPOSED=0.5,BELLY_EXPOSED=0.8)
  • --nsfw-exposed-labels <str>: NudeNet classes --nsfw-threshold is taken over (default: the 5 exposed)
  • --content-ratings <str>: Keep only these NudeNet content ratings, comma-separated: safe, suggestive, explicit
  • --guard / --no-guard: SingGuard policy check (default: on when a SingGuard URL is configured; --no-guard opts out)
  • --singguard-url <str>: SingGuard server origin, e.g. http://guard:9150 (opens in new tab) (ARGUS_CURATOR_SINGGUARD_URL)
  • --guard-policy <str>: SingGuard policy: default (the policy file, else SingGuard's rules) or adult (allows adult nudity) [default: default]
  • --guard-variants <str>: Also judge every image under these policies, comma-separated (one more SingGuard pass each)
  • --guard-policies <str>: Which policies' verdicts --guard-unsafe/--guard-rules read, comma-separated; any failing drops (default: the official one)
  • --guard-unsafe: Drop images SingGuard judged unsafe, under any rule
  • --guard-rules <str>: Drop images where one of these SingGuard rules fired, comma-separated (e.g. A,C)
  • --drop-nsfw: Reject images NudeNet reads as exposed (>= 0.2) before scenes, garments and SingGuard
  • --drop-no-face: Reject images with no face before scenes, garments and SingGuard (needs --faces)
  • --drop-no-age: Reject images with no MiVOLO, body-only or set age before scenes, garments and SingGuard (needs --mivolo)
  • --minor-exposed <str>: Under-18 rule: frame (default; a young age and any exposure in the frame) or overlap (the exposure must also sit on a young person's box). Or ARGUS_CURATOR_MINOR_EXPOSED
  • --crops: Crop each image that has a <image>.crop.json sidecar ({left, top, right, bottom}, displayed pixels) in memory before every check, and export it cropped (--copy-to only). Sources are never changed.
  • --detect-watermarks: Find watermarks with the detector (--watermark-url) and cut them away at the frame's edges; implies --crops. A watermark no edge cut removes rejects the image (crop:overlay).
  • --max-cut <float>: Most of a side one edge cut may take (--detect-watermarks) [default: 0.15]
  • --keep-overlays: Keep images whose watermark cannot be cut away, uncropped, instead of rejecting
  • --xmp: Write an XMP sidecar beside each exported file (face regions, names, content rating)
  • --xmp-sources: Merge face regions, names and content rating into sidecars beside every scanned original (including rejected ones; independent of --xmp / --copy-to). Writes into the scanned folder
  • --carry-sidecars: Transfer each exported image's <stem>.txt / <file>.xmp / <stem>.xmp / <stem>.json with it, in the same mode
  • --run-stats <path>: JSON file copied (pretty-printed) to <dest>/run_stats.json with the export
  • --face-names <str>: Person names for the sidecars by cluster, comma-separated (face_1=Ada,face_2=Bo)
  • --csv <path>: Write the per-image CSV report here
  • --json <path>: Write the full ScanSummary JSON here
  • -v, --verbose: Print per-image details
  • --help: Show this message and exit.

argus-curator serve

Start the argus-curator micro-server (FastAPI) on :8101.

Scan folders and export destinations from request bodies are resolved relative to --source-root / --export-root; the endpoints refuse when their root is not configured.

Usage:

$ argus-curator serve [OPTIONS]

Options:

  • -p, --port <int>: Port to listen on [default: 8101]
  • --host <str>: Host to bind to [default: 0.0.0.0]
  • --cors: Enable CORS for the localhost dev frontend (:3000)
  • --cors-origin <list[str]>: Allowed CORS origin (repeatable; implies CORS; or CURATOR_CORS_ORIGINS)
  • --cors-any: Allow ANY origin, credential-less (public demos only; implies CORS)
  • --source-root <str>: Root that scan/thumb/upload paths resolve under (ARGUS_CURATOR_SCAN_ROOT)
  • --export-root <str>: Root that export destinations resolve under (ARGUS_CURATOR_EXPORT_ROOT)
  • --allow-move: Permit destructive mode="move" exports (default: rejected)
  • --allow-delete: Let POST /scan/{id}/delete remove any scanned image (CURATOR_ALLOW_DELETE / CURATOR_DEVMODE; default: only under-18 exposed images)
  • --minor-exposed <str>: Under-18 rule: frame (default; a young age and any exposure in the frame) or overlap (the exposure must also sit on a young person's box). Or ARGUS_CURATOR_MINOR_EXPOSED
  • --help: Show this message and exit.

argus-curator detectors

Report which optional detectors/backends are available.

Usage:

$ argus-curator detectors [OPTIONS]

Options:

  • --help: Show this message and exit.

argus-curator fairface-convert

Convert the FairFace PyTorch weights to the ONNX model --fairface runs.

Download the weights from the FairFace repo (github.com/dchen236/FairFace, CC BY 4.0). Needs: pip install argus-curator

Usage:

$ argus-curator fairface-convert [OPTIONS] {weights}

Arguments:

  • weights <path>: Official FairFace 7-race weights (fairface_alldata_20191111.pt) [required]

Options:

  • -o, --output <path>: Where to write the ONNX model (default: model cache)
  • --help: Show this message and exit.

argus-curator mivolo-convert

Fetch, verify and convert MiVOLO v2 to the ONNX model --mivolo runs.

Weights: huggingface.co/iitolstykh/mivolo_v2 (Apache-2.0), pinned by commit and sha256. Needs: pip install argus-curator

Usage:

$ argus-curator mivolo-convert [OPTIONS]

Options:

  • --weights <path>: Local model.safetensors (default: download the pinned iitolstykh/mivolo_v2)
  • -o, --output <path>: Where to write the ONNX model (default: model cache)
  • --help: Show this message and exit.

argus-curator places365-convert

Fetch, verify and convert a Places365-CNN to the ONNX model --scenes runs.

Weights: places2.csail.mit.edu (CC BY), pinned by sha256 since upstream serves them over plain HTTP. Needs: pip install argus-curator

Usage:

$ argus-curator places365-convert [OPTIONS]

Options:

  • --arch <str>: resnet18 (default, 45 MB) or resnet50 (97 MB, ~1 pt better top-1) [default: resnet18]
  • --weights <path>: Local <arch>_places365.pth.tar (default: download it; sha256-checked)
  • -o, --output <path>: Where to write the ONNX model (default: model cache)
  • --help: Show this message and exit.

argus-curator garments-convert

Fetch, verify and convert the Fashionpedia garment detector for --garments.

Weights: huggingface.co/valentinafevu/yolos-fashionpedia (MIT; trained on Fashionpedia, CC BY 4.0), pinned by commit and sha256. Needs: pip install argus-curator

Usage:

$ argus-curator garments-convert [OPTIONS]

Options:

  • --checkpoint <path>: Local dir with config.json + pytorch_model.bin (default: download the pinned one)
  • -o, --output <path>: Where to write the ONNX model (default: model cache)
  • --help: Show this message and exit.

argus-curator schema

Emit the wire-contract JSON Schema consumers codegen against.

Run without flags to (re)write the committed schema; run with --check in CI to fail if the models have drifted from the committed artifact.

Usage:

$ argus-curator schema [OPTIONS]

Options:

  • -o, --output <path>: Where to write the JSON Schema [default: schema/curator-wire.schema.json]
  • --check: Exit non-zero if the committed schema is stale (for CI)
  • --help: Show this message and exit.