Downloads · 30 days
0
Hetaneko/taggerine
taggerine is a image classification model from Hetaneko. Use it when you need a label for an image. The card lists the license as apache-2.0.
A multi-label image tagger trained on e621 and Danbooru annotations, using a DINOv3 ViT-H/16+ backbone fine-tuned end-to-end with a single linear projection head.
Downloads · 30 days
0
Access
Public
Updated May 12, 2026
Repo size
5.3 GB
Likes
3
Public
Click a slice to open those files.
.safetensors5.3 GB · 100%
From the Hugging Face model README
A multi-label image tagger trained on e621 and Danbooru annotations, using a DINOv3 ViT-H/16+ backbone fine-tuned end-to-end with a single linear projection head.
| Property | Value |
|---|---|
| Backbone | facebook/dinov3-vith16plus-pretrain-lvd1689m |
| Architecture | ViT-H/16+ · 32 layers · hidden dim 1280 · 20 heads · SwiGLU MLP · RoPE · 4 register tokens |
| Head | Linear((1 + 4) × 1280 → 74 625) — CLS + 4 register tokens concatenated |
| Vocabulary | 74 625 tags (min frequency ≥ 50 across training set) |
| Input resolution | Any multiple of 16 px — trained at 512 px, generalises to higher resolutions |
| Input normalisation | ImageNet mean/std [0.485, 0.456, 0.406] / [0.229, 0.224, 0.225] |
| Output | Raw logits — apply sigmoid for per-tag probabilities |
| Parameters | ~632 M (backbone) + ~480 M (head) |
| Hyperparameter | Value |
|---|---|
| Training data | e621 + Danbooru (parquet) |
| Batch size | 32 |
| Learning rate | 1e-6 |
| Warmup steps | 50 |
| Loss | BCEWithLogitsLoss with per-tag pos_weight = (neg/pos)^(1/T), cap 100 |
| Optimiser | AdamW (β₁=0.9, β₂=0.999, wd=0.01) |
| Precision | bfloat16 (backbone) / float32 (projection + loss) |
| Hardware | 2× GPU, ThreadPoolExecutor + NCCL all-reduce |

pip install -r requirements.txt
Or manually:
pip install torch torchvision safetensors Pillow requests \
python-multipart fastapi uvicorn jinja2 aiofiles
huggingface-cli download lodestones/taggerine \
tagger_proto.safetensors \
tagger_vocab_with_categories_and_alias_updated.json \
tagger_ui_server.py \
inference_tagger_standalone.py \
--local-dir .
Note:
tagger_proto.safetensorsis ~5.3 GB. Make sure you have enough disk space.
tagger_ui/ templates folderThe server requires the tagger_ui/templates/ directory to be present alongside tagger_ui_server.py:
huggingface-cli download lodestones/taggerine \
--include "tagger_ui/**" \
--local-dir .
python tagger_ui_server.py \
--checkpoint tagger_proto.safetensors \
--vocab tagger_vocab_with_categories_and_alias_updated.json \
--port 7860
# → open http://localhost:7860
CPU-only machine? Add --device cpu (inference will be slower):
python tagger_ui_server.py \
--checkpoint tagger_proto.safetensors \
--vocab tagger_vocab_with_categories_and_alias_updated.json \
--device cpu \
--port 7860
python inference_tagger_standalone.py \
--checkpoint tagger_proto.safetensors \
--vocab tagger_vocab_with_categories_and_alias_updated.json \
--images photo.jpg \
--topk 30
| File | Description |
|---|---|
tagger_proto.safetensors | Model weights (bfloat16) |
tagger_vocab_with_categories_and_alias_updated.json | {"idx2tag": [...], "tag2category": {...}} — 74 625 tags with category metadata |
tagger_vocab_with_categories.json | Same without alias data |
tagger_vocab.json | Minimal vocab — {"idx2tag": [...]} only |
inference_tagger_standalone.py | Self-contained CLI inference script (no transformers dep) |
tagger_ui_server.py | FastAPI + Jinja2 web UI server |
requirements.txt | Python dependencies |
Tags are sourced from e621 and Danbooru annotations and cover:
solo, duo, anthro, 1girl, male, …)looking at viewer, sitting, …digital art, hi res, sketch, watercolor, …Minimum tag frequency threshold: 50 occurrences across the combined dataset.
Apache 2.0