OppaiOracle experimental-X1.1

experimental-X1.1 is the 448×448 continuation of experimental-X1. It is a multi-label anime and illustration tagger, released in FP32 ONNX and FP32 safetensors formats. Both contain the selected 448px epoch 9, update 55,719 weights. This continuation completed its nine-epoch schedule and WSD cooldown to zero learning rate on September 17, 2026.

This remains an experimental release. The shared-tag comparison below shows higher micro-F1 than V1.1 at development-tuned thresholds, with slightly lower overall exact mAP. Performance varies by tag and frequency; there is no blanket claim that X1.1 replaces V1.1 for every use.

Download and run

The complete download includes both weight formats, about 1.18 GB in total. Use a fresh Python environment, download the repository, then install the dependencies for your chosen format:

python -m pip install huggingface_hub
python -c "from huggingface_hub import snapshot_download; snapshot_download('Grio43/OppaiOracle-experimental-X1.1', local_dir='OppaiOracle-experimental-X1.1')"
cd OppaiOracle-experimental-X1.1

For ONNX Runtime on CPU:

python -m pip install -r requirements.txt
python infer.py image.jpg --format onnx --device cpu --output predictions.json

For safetensors with PyTorch:

python -m pip install -r requirements-torch.txt
python infer.py image.jpg --format safetensors --device cpu --output predictions.json

For a smaller download, obtain just download.py, install huggingface_hub, and run one of the following from the directory containing it:

python download.py OppaiOracle-experimental-X1.1 --format onnx
python download.py OppaiOracle-experimental-X1.1 --format safetensors

Each command downloads the selected weights and required support files. The helper resolves --revision (default main) to one commit before downloading, keeping the configuration, vocabulary and weights aligned. Use --format all to obtain both formats. The resulting directory supports the same install and inference commands above.

The supplied PyTorch model code loads model.safetensors and the real architecture configuration in config.json. These are inference weights; the safetensors file does not contain a pickled training checkpoint or optimizer state. The release preserves FP32 values without quantization or conversion to BF16/FP16.

Both inference paths apply the same preprocessing and return tag names with sigmoid scores, excluding PAD and UNK. The default threshold is 0.7085427045822144, the best micro-F1 threshold on the shared-tag development comparison's 200-point grid. It is a useful starting point, not final deployment calibration, and was not optimized independently for every tag or for the complete vocabulary. Set --threshold for your application. Scores are not calibrated probabilities that a label is correct.

To inspect the 30 highest scores regardless of the default threshold:

python infer.py image.jpg --format onnx --threshold 0 --top-k 30

Multiple image paths and --batch-size are supported. --device cuda requires the corresponding CUDA-capable PyTorch or ONNX Runtime environment. Local inference does not make network requests.

Training

The model lineage was trained from scratch, without an externally pretrained backbone. X1.1 starts from the released 320px X1 weights and adapts all model weights, rather than freezing the backbone.

Stage Recorded recipe
320px source V2 Phase 1, epoch 21, update 127,974; the checkpoint released as experimental-X1
320px optimization Effective batch 1,024; AdamW8bit with FP32 head/position optimizer states; BF16 AMP; weight decay 0.05; 10,000-update warmup; stable LR 5.4e-4
Source loss history ASL negative gamma 4 initially, explicitly changed to 3 at update 41,223; positive gamma 0, probability clip 0.05, alpha 1, no label smoothing, detached focal weights
448px continuation Nine phase-local epochs, 55,719 optimizer updates, September 13–17, 2026
Initialization One-time bicubic positional-grid interpolation from 20×20 to 28×28; fresh optimizer, scheduler and phase-local history; learned weights and frozen vocabulary retained
448px batch and precision Microbatch 48 × 21 accumulation = 1,008; BF16 AMP; no activation checkpointing
448px optimizer AdamW8bit; FP32 head/position optimizer states; weight decay 0.05; gradient norm clipping 1.0
448px schedule Base LR 1.5e-5, square-root scaling from batch 256 gives peak LR 2.97647022495e-5; one warmup epoch; budget-driven WSD cooldown begins at update 48,451, lasts 7,268 updates and ends at zero LR
448px loss Fixed ASL negative/positive gamma 3/0, probability clip 0.05, alpha 1, no label smoothing, detached focal weights; PAD/UNK excluded
Selection Highest recorded cooldown validation binned mAP; epoch 9 is both the selected best and final checkpoint

The 320px source did not complete its original planned cooldown. The separate 448px experiment did complete its own cooldown; it does not imply completion of a later 512px phase. Plateau-triggered cooldown was disabled for the nine-epoch continuation; its total budget included warmup and cooldown.

At 448px, drop-path was 0.15 and ordinary dropout was zero. Augmentation used brightness/contrast/saturation jitter of 0.22/0.15/0.06, each at probability 0.5; 2–5-degree rotation at probability 0.30; Gaussian blur sigma 0.1–1.0 at probability 0.15; and horizontal flipping at probability 0.5. Images carrying any of gen:left-handed, gen:left-to-right_manga, gen:right-over-left_kimono or gen:right-to-left_comic were excluded from horizontal flips. Random erasing was disabled.

Dataset and tag updates

The frozen prepared corpus contains 6,269,823 image/metadata pairs, split into 6,239,823 TRAIN and 30,000 EVAL images. The 448px continuation retained the same split, labels and vocabulary as X1.

Source Pairs
Danbooru 6,142,955
Real-life photos without people 123,335
Requested images and tags 3,533

Dataset-maintainer provenance: the author reports that the Danbooru metadata was synchronized in August 2026, deprecated tags were removed, and renamed tags were updated to their correct canonical names. This describes the metadata preparation, not an assertion that every image was uploaded in August. These cleanup statements are supplied by the dataset maintainer; the release checks verify the frozen artifacts and model alignment.

General tags have a 450-image minimum, down from V1.1's 500. Counts are distinct images in the combined prepared corpus. Character, copyright, artist and metadata tags use a 550-image minimum; the four rating tags are mandatory. Despite the lower general-tag floor, the cleaned vocabulary has 14,994 tags versus 19,292 in V1.1. The overall reduction accompanies deprecated-tag removal, canonical-name updates and the changed vocabulary policy; it is not a count of deprecated tags alone.

Category Tags
General 9,920
Character 3,069
Copyright 1,139
Artist 745
Metadata 117
Rating 4
Total real tags 14,994

The model has 14,996 output positions, including PAD at index 0 and UNK at index 1. Keep the supplied vocabulary ordering: V1.1 indices and tag counts are not compatible with this model.

Evaluation against V1.1

Both models were evaluated at 448px in FP32 ONNX, on the same frozen 30,000 EVAL images and recorded labels, with identical preprocessing and TF32 disabled. All source-sidecar hashes were verified. One-to-one shared names yielded 13,569 tags, with 13,394 supported tags contributing to macro AP. V1.1 results were reused from a verified archived evaluation of the same images and support.

Shared-tag measurement experimental-X1.1 V1.1
Exact mAP 58.7513% 59.2716%
200-bin mAP 58.5193% 58.8611%
Best grid micro-F1 68.6410% 66.5864%
Threshold for that micro-F1 0.708543 0.798995
General-tag exact mAP, 8,676 supported shared tags 43.7549% 43.9700%

X1.1's overall shared-tag exact mAP is 0.5203 percentage points lower; its micro-F1 is 2.0546 points higher at independently selected grid thresholds. Across supported shared tags, X1.1 has higher AP on 5,425, V1.1 on 6,271, and 1,698 tie. For general tags with at least 50 EVAL positives, X1.1's exact mAP is 54.893% versus 53.134%; V1.1 retains an advantage among the sparsest general tags.

These are development-set measurements, not an independent clean-label test. This EVAL set has informed training decisions and threshold selection. V1.1's training overlap with these images is unverified. Recorded labels may be missing or incorrect, and aggregate gains do not establish a gain for every tag. See comparison details and shared-tag AP results.

For the complete X1.1 supported vocabulary, the FP32 export's exact mAP was 57.7464% over 14,767 tags. The final BF16 training validation recorded exact mAP 57.7166%, binned mAP 57.5063%, and micro-F1 66.2121% at the inherited training diagnostic threshold 0.7927. These differ in numerical precision and/or tag scope from the shared-tag table; they should not be substituted for one another. The archived full FP32 measurement is in validation.json; training_metadata.json records the training provenance.

Architecture and preprocessing

The 147,706,932-parameter ViT uses patch size 16, width 896, 18 transformer layers, 14 attention heads, MLP width 2,320, QK normalization and LayerScale initialization 0.1. Its positional grid is 28×28 at 448px.

ONNX input/output Type Shape
pixel_values float32 [batch, 3, 448, 448]
padding_mask bool [batch, 448, 448]
probabilities float32 [batch, 14996]

Batch size is dynamic; spatial dimensions are fixed. Apply EXIF orientation, convert to RGB, composite transparency onto [114,114,114], and downscale with LANCZOS while preserving aspect ratio, without upscaling. Center the result on a 448×448 canvas with the same pad color. Padding-mask values are True for padding. Divide pixels by 255, normalize using mean and standard deviation [0.5,0.5,0.5], and arrange as NCHW. The supplied script implements this contract.

The ONNX output already includes sigmoid. The safetensors inference helper applies sigmoid to the PyTorch logits. Four rating scores are independent sigmoid outputs, not a softmax. A frontend must support the two inputs and this preprocessing; a raw-image, single-input tagger interface needs an adapter.

Files, integrity and download statistics

File Purpose
model.onnx FP32 inference graph, about 591 MB, with embedded vocabulary/preprocessing metadata
model.safetensors FP32 tensor-only weights, about 591 MB
config.json Real architecture and release configuration consumed by the supplied loader
preprocessing.json Image transform and input contract
vocabulary.json, selected_tags.csv Exact output ordering and tag categories
infer.py, download.py Standalone inference and selective release download helpers
requirements.txt, requirements-torch.txt Dependencies for CPU ONNX and PyTorch/safetensors inference
training_metadata.json, validation.json Training provenance and archived full FP32 evaluation
inference_checks.json Release-package checks using a bounded set of fixtures; not another full evaluation
release_manifest.json, SHA256SUMS Provenance and file-integrity records

The normal repository download includes config.json, which the supplied loader actually uses. Hugging Face download statistics count requests to supported query files such as config.json. The public counter is not a unique-user count; direct downloads of weights alone may not be reflected. There are no extra telemetry calls or artificial counting requests in the inference helper.

The selected source checkpoint SHA256 is:

d400c2e460e7287357f86083f84c187790a45b1d47985e908c52825373f888c3

This identifies the preserved local training source. The release manifest and checksums identify the distributed files; optimizer state and the pickled training checkpoint are not included. The release ONNX has refreshed descriptive metadata; its inference graph and learned weights are unchanged from the evaluated artifact. The manifest records both artifact identities.

Scope and license

X1.1 is intended for experimental tagging, comparison and feedback within the license terms. Training annotations are noisy and incomplete; rare concepts and visually similar tags can be unreliable. Review suggestions before applying bulk dataset edits. The vocabulary includes sexual-content labels and independent rating tags; this model has not been validated as a safety classifier.

The release retains the Educational Use Only License. It permits the educational uses described in that file and prohibits commercial use. Read the full license for attribution, redistribution and other conditions.

Downloads last month
-
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Grio43/OppaiOracle-experimental-X1.1

Finetuned
(1)
this model

Spaces using Grio43/OppaiOracle-experimental-X1.1 2