Model reference · open weights
keural-vision-encoder-mid is an open-weight embedding model from mkd-ai. keural-vision-encoder-mid (FP32) weighs 376 MB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the mkd-ai/keural-vision-encoder-mid model card, 2026-11-06
What it is
| Released by | mkd-ai |
|---|---|
| Released | 2026-10-28 |
| Parameters | 184M |
| VRAM | 376 MB for the weights |
What it runs on
| Card | Runs | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
A 183.5M-parameter image encoder built from scratch — adaptive tokenization, hierarchical concept tokens, and continuous 2D positional encoding. Not a CLIP/ViT fine-tune.
Developed by MKD Co., Ltd. · Code: github.com/mkd-hika/Keural-Vision-Encoder-Mid-level
| Parameters | 183,575,297 (183.6M) |
| Input | RGB image, 384×384 (any multiple of 16 supported natively) |
| Output | 512 adaptive tokens (768-dim) + one pooled 768-dim image embedding |
| Trained | From random init on ~20M image–text pairs, 18,000 steps, 2× H200 |
| Precision | bfloat16 |
| Benchmark | Result |
|---|---|
| ImageNet zero-shot Top-1 / Top-5 | 37.2% / 66.8% |
| Flickr30K Image→Text R@1 / R@5 / R@10 | 42.9% / 72.7% / 80.6% |
| Flickr30K Text→Image R@1 / R@5 / R@10 | 42.2% / 70.0% / 79.4% |
| CIFAR-100 linear probe | 75.0% |
Measured at 384×384 with token_budget=512, matching training. Accuracy trails
same-size peers — see Limitations and Evaluation
for why, and for the higher-k retrieval results where the gap closes.
The encoder is frozen and used as-is inside a bilingual (English + Korean)
vision-language model: mkd-hika/keural-mid-vlm-bilingual.
Only a projector (8.9M) and LoRA adapters (5.0M) are trained on top; the decoder is
Qwen2.5-7B-Instruct.
A vision-language model can score respectably while barely using the image, because many questions are answerable from language priors alone. Each benchmark below is therefore run twice — once normally, once with the visual tokens removed and everything else held constant. The difference is what this encoder contributes, and it is the only figure the language model cannot produce on its own.
| Benchmark | With this encoder | Blind | Encoder contributes |
|---|---|---|---|
| POPE accuracy (n=2,000) | 70.50% | 44.55% | +25.95 |
| POPE F1 (n=2,000) | 70.59% | 23.46% | +47.13 |
| VQAv2 strict (n=5,000) | 53.04% | 39.83% | +13.21 |
| MME total, 14 categories (n=2,374) | 1258.9 | 812.0 | +446.9 |
| MMBench (n=4,377) | 60.20% | — | — |
| Held-out perplexity (KO / EN) | 2.15 / 2.99 | — | — |
The POPE yes-ratio is 0.492 against a gold ratio of 0.500, so the model genuinely discriminates on object-existence questions rather than defaulting to one answer — accuracy alone is not interpretable without that check. The blind VQAv2 score of 39.83% lands where language-prior performance is expected to, which is corroborating evidence that the measurement is sound.
Notably, the encoder reaches these numbers while scoring 37.2% zero-shot on ImageNet. Zero-shot accuracy measures image–text alignment; the 75.0% CIFAR-100 linear probe is the better indicator of representation quality for downstream use, because a trained projector relearns the alignment from scratch.
Keural Mid is a mid-scale vision encoder that maps an image to a single 768-dim embedding aligned to a text embedding space, plus a variable-length sequence of semantically-typed tokens. It is trained from random initialization (no CLIP/ViT/DINO backbone) with a combination of sigmoid contrastive learning, hierarchical concept alignment, saliency regularization, and dual-teacher knowledge distillation.
It introduces three mechanisms not found together in existing encoders (CLIP, SigLIP, DINOv2):
| Innovation | What it does |
|---|---|
| ATB — Adaptive Token Budget | Content-aware token allocation. A learned saliency map drives a differentiable Gumbel-Top-K sampler, spending more tokens on complex regions and fewer on simple backgrounds. |
| HCT — Hierarchical Concept Tokenization | Every token carries a semantic level — global, region, or detail — via learned level embeddings and level-specific constructors. |
| Continuous 2D-RoPE | Rotary position encoding from actual normalized (cx, cy) coordinates plus a log-area scale bias, so variable resolutions and token scales are handled natively. |
pooled embedding for retrieval, clustering, or as a frozen backbone for downstream heads (e.g. linear probing, detection, captioning front-ends).import torch
from PIL import Image
from torchvision import transforms
from transformers import AutoModel
model = AutoModel.from_pretrained(
"mkd-hika/keural-vision-encoder-mid",
trust_remote_code=True,
).eval()
transform = transforms.Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
Benchmarks
As published on the model card: the maker's own numbers, not measured by AxForge.
| Task | Dataset | Metric | Score |
|---|---|---|---|
| Zero-Shot Image Classification | ImageNet-1k (validation) | Top-1 accuracy | 37.200 |
| Zero-Shot Image Classification | ImageNet-1k (validation) | Top-5 accuracy | 66.800 |
| Image-to-Text Retrieval | Flickr30K | Image-to-Text R@1 | 42.900 |
| Image-to-Text Retrieval | Flickr30K | Image-to-Text R@10 | 80.600 |
| Image-to-Text Retrieval | Flickr30K | Text-to-Image R@1 | 42.200 |
| Image-to-Text Retrieval | Flickr30K | Text-to-Image R@10 | 79.400 |
| Linear Probe | CIFAR-100 | Linear probe Top-1 | 75 |