/ Модель

Характеристики

Лицензия
MIT
Архитектура
keural_vision · dense
Библиотека
transformers
Опубликована
12 окт 2026

keural-vision-encoder-poc

Эмбеддинги изображенийИзображение → embedding

Компактный визуальный энкодер Keural извлекает адаптивное число иерархически размеченных признаков изображения для передачи в языковую модель.

12скачиваний за 30 дней0лайковвеса обновлены12 окт 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Keural Vision Encoder PoC V0.1 — разработанная автором модели Hikaf143 компактная модель компьютерного зрения на 24,7 млн параметров, обученная с нуля без предобученного backbone и весов CLIP. Архитектура включает CNN-стем, токенизатор Adaptive Token Budget и 12-слойный Spatial Transformer; размер эмбеддинга — 384. Модель принимает изображения и извлекает визуальные признаки в виде последовательности векторов-токенов с маской внимания и метками уровня: глобальный, региональный или детальный.

Бюджет токенов задаётся при запуске: меньшее значение снижает вычислительные затраты, а большее позволяет сохранить больше деталей; токены распределяются по информативным областям изображения. Энкодер предназначен для подключения к языковой модели через проектор, в частности он использован в составе Keural VLM с Mistral-7B для визуальных вопросов и ответов. Обучение энкодера проводилось на парах изображение–текст из CC3M и CC12M с контрастивной целью в стиле SigLIP.

Это экспериментальный PoC, а приведённые в карточке результаты относятся к downstream VLM и показывают ограниченное качество на части визуальных тестов; их нельзя считать оценкой одного энкодера. Репозиторий распространяется по лицензии MIT.

Сценарии применения

  • извлечение визуальных признаков из изображений
  • кодирование изображений в токены для языковой модели
  • настройка компромисса между скоростью и детализацией визуального представления
  • создание исследовательского прототипа визуально-языковой модели
  • передача изображений в модель для ответов на визуальные вопросы

Ограничения

Это PoC небольшого размера; в README приведены низкие результаты VQAv2 и MME для полной VLM-системы на контрольной точке SFT-30K, а не для энкодера отдельно. Английский указан в метаданных карточки, но языковые возможности самого визуального энкодера отдельно не охарактеризованы.

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

👁️ Keural Vision Encoder (PoC · V0.1)

A 24.7M-parameter vision encoder trained from scratch — no pretrained backbone, no CLIP weights. Structured tokens that plug into any LLM.

The encoder (CNN Stem → ATB → Spatial Transformer) feeds the LevelAware Projector → Mistral-7B in the full Keural VLM.


✨ Key Innovations

🎯 Adaptive Token Budget (ATB) Tokenization — token count is a runtime parameter. Tokens are allocated to information-dense regions: a blank wall gets fewer, a dense document gets more.

out = encoder(image, token_budget=64)    # cheap
out = encoder(image, token_budget=256)   # default
out = encoder(image, token_budget=1024)  # full fidelity

🪜 Hierarchical Concept Tokenization (HCT) — every token carries a semantic level tag: global (whole-image), region (object-scale), or detail (fine-grained).

out = encoder(image)
print(out.level_ids)  # tensor of {0=global, 1=region, 2=detail}

⚙️ Model Specifications

PropertyValue
Parameters24.7M (trained from scratch)
ArchitectureCNN Stem + ATB Tokenizer + 12-layer Spatial Transformer
Embedding dim384
Token budget256 (default) · runtime-adjustable
Token split5% global / 25% region / 70% detail
Precisionbfloat16
Training dataCC3M + CC12M (~6.9M image-text pairs)
Hardware1× RTX 5090 (32 GB VRAM)

🎨 Saliency & Token Placement

The ATB tokenizer concentrates tokens on salient regions. Left → right: original · saliency heatmap · token placement (global / region / detail).


🧪 Training

Phase 1 — Vision Encoder Pretraining ✅ COMPLETE. Trained from scratch for ~75,000 steps on CC3M + CC12M (~6.9M image–text pairs), SigLIP-style contrastive objective, 1× RTX 5090. The frozen encoder is then integrated into the full VLM via LevelAwareProjector (384 → 2048 → 4096) → Mistral-7B-Instruct-v0.3 (4-bit NF4 QLoRA), fine-tuned with SFT (LLaVA-Instruct-150K, 30K steps).


📊 Benchmark Results — SFT-30K

Downstream VLM benchmarks using this encoder (frozen) + projector + Mistral-7B at the SFT-30K checkpoint (supervised fine-tuning, 30,000 steps; before DPO). Evaluated on 1,000 samples each where applicable. The Keural encoder is 12.4× smaller than LLaVA's CLIP encoder (307M).

BenchmarkKeural SFT-30KLLaVA 1.5 (307M enc)LLaVA 1.6 (307M enc)
VQAv2 Accuracy12.9%78.5%81.8%
POPE F166.9%85.9%86.5%
MME Total Score704.31510.71519.3
TextVQA Accuracy0.8%58.2%64.9%
ScienceQA Accuracy (img)39.7%66.8%70.6%

These are the SFT-30K numbers (measured from outputs/eval/sft_30k/). Applying DPO alignment (RLHF-V, 3K steps) improves every metric — e.g. VQAv2 → 43.6%, ScienceQA → 53.7%, MME → 838.8. Full SFT+DPO results, the comparison chart, and the complete VLM live on mkd-hika/keural-vlm-poc.


⚡ Adaptive Token Budget — latency vs budget

Encode latency vs token budget — trade visual detail for speed at runtime, no retraining.


📐 Output Contract

Every forward pass returns a KeuralEncoderOutput:

FieldShapeDescription
tokens(B, N, 384)Token vectors
attention_mask(B, N)1 = real token, 0 = padding
level_ids(B, N)0=global, 1=region, 2=detail
spatial_metadata(B, N, 4)Per-token (cx, cy, w, h) in [0,1]
saliency_scores(B, N)Allocator confidence per token
pooled(B, 384)Single-vector image summary
token_budget_used(B,)Actual tokens used per image

🚀 Usage

import torch
from architecture.encoder import KeuralVisionEncoder
from keural_config import KeuralConfig

cfg = KeuralConfig.from_yaml("configs/keural_tiny_poc.yaml")
model = KeuralVisionEncoder.from_pretrained("mkd-hika/keural-vision-encoder-poc")
model.eval()

from PIL import Image
from torchvision import transforms

transform = transforms.Compose([
    transforms.Resize((256, 256)),
    transforms.ToTensor(),
    transforms.Normalize([0.5], [0.5]),
])

image = Image.open("image.jpg").convert("RGB")
x = transform(image).unsqueeze(0)  # (1, 3, 256, 256)

with torch.no_grad():
    out = model(x)

print(out.tokens.shape)        # (1, 256, 384)
print(out.level_ids[0, :8])    # [0, 0, 1, 1, 1, 2, 2, 2]
print(out.pooled.shape)        # (1, 384)

🗺️ Roadmap

PhaseParamsHardwareStatus
PoC (this model)24.7M1× RTX 5090✅ Phase 1 complete
Mid-level~230M8× H100 80 GB🔜 Planned
Commercial~1.1B64× H100 80 GB🔮 Future

The mid-level model will use knowledge distillation from SigLIP-400M (natural images) and InternViT-300M (documents/OCR). Teachers are discarded after training — not part of the final model.


📝 Citation

@misc{keural_vision_encoder_2026,
  title  = {Keural Vision Encoder: Content-Adaptive Vision Encoding via Saliency-Guided Token Budgets},
  author = {Barki, Hika and MKD Co., Ltd.},
  year   = {2026},
  note   = {V0.1 — Phase 1 complete},
}

📄 License

Code: MIT. Model weights trained on CC3M + CC12M — data licenses apply.

MKD Co., Ltd. — 2026

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · image-feature-extraction

Нельзя запустить

Архитектура keural_vision неизвестна transformers в образе рантайма.

Класс архитектуры
KeuralVisionModel
Ревизия весов
187f47c

0 моделей