/ Модель

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

Параметры
113 млн
Лицензия
Apache 2.0
Архитектура
dinov2 · dense
Базовая модель
dinov2-base-imagenet1k-1-layer
Библиотека
transformers
Опубликована
12 июн 2025

font-classifier

Классификация изображенийИзображение → label3 профессии

Модель на базе DINOv2 определяет один из 394 вариантов шрифта на изображении с текстом.

279скачиваний за 30 дней0лайковвеса обновлены10 апр 2026

Бенчмарки

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

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

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

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

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

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

Font Classifier — модель классификации изображений шрифтов, созданная на основе DINOv2 и дообученная автором dchen0 с помощью LoRA. Она распознаёт 394 варианта шрифтов из 32 семейств Google Fonts. Чекпойнт содержит 113,2 млн параметров; адаптер LoRA объединён с базовой моделью, поэтому для работы не требуется отдельная библиотека PEFT.

Модель предназначена для определения шрифта по изображению с текстом, например для сортировки образцов или предварительной идентификации гарнитуры. В README сообщается точность top-1 99,0% на отложенной тестовой выборке и точность 99,8% при определении семейства шрифта. Обучение проводилось на синтетических изображениях, созданных рендерингом текста; перед подачей изображения необходимо преобразовать в RGB, дополнить до квадратного размера, изменить размер до 224×224 и нормализовать по статистикам ImageNet. Лицензия — Apache-2.0. Модель распознаёт только охваченные обучением шрифты и варианты; ошибки чаще возникают между начертаниями одного семейства.

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

  • определение шрифта по изображению текста
  • классификация образцов шрифтов из 32 семейств Google Fonts
  • автоматическая сортировка скриншотов и образцов по начертанию
  • определение семейства шрифта для инвентаризации дизайн-материалов

Ограничения

Классификатор ограничен 394 вариантами из 32 семейств Google Fonts и может путать начертания внутри одного семейства. Для соответствия обучению изображения нужно подготовить в формате RGB и размером 224×224 с указанной в README нормализацией ImageNet.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

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

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

Открыть на Hugging Face

Font Classifier

A DINOv2 Vision Transformer fine-tuned with LoRA for font classification across 394 font variants from 32 Google Fonts families.

How it was made

  1. Base model: facebook/dinov2-base-imagenet1k-1-layer (87.2M parameters, frozen).
  2. Fine-tuning: LoRA (rank 8, alpha 16) applied to the query and value projections in each ViT attention block, plus a trainable classification head. ~900K trainable parameters (1% of total).
  3. Promotion: This model was promoted from the lora_r8/result_model adapter in dchen0/font-model-results using promote_model.py. That script loads the base DINOv2 model, merges the LoRA adapter weights into it (merge_and_unload()), and uploads the result as a standalone checkpoint. No adapter or PEFT library needed at inference time.

Performance

  • 99.0% top-1 accuracy on 394 font classes (held-out test set)
  • 99.8% family-level accuracy (collapsing weight variants into parent families)
  • Errors are overwhelmingly within-family weight confusions (e.g. Roboto-400 vs Roboto-500), not cross-family misidentifications
MethodTrainable ParamsTop-1 Acc
LoRA r=8 (this model)900K99.0%
ResNet-5025.6M98.8%
LoRA r=161.2M98.9%
LoRA r=4753K97.9%
Full Fine-Tuning87.2M95.9%

Training data

dchen0/font_crops_v5 — ~225K synthetic images generated by rendering random text in each font variant. ~575 training images and 40 test images per class. Images include color augmentation, layout variation (left/center/right alignment, multi-line), and Gaussian noise.

Font families (32)

BigShouldersText, BricolageGrotesque, CrimsonPro, DMSans, Geist, HedvigLettersSerif, InstrumentSans, InstrumentSerif, Inter, JetBrainsMono, LexendDeca, Lora, Merriweather, Montserrat, Newsreader, NunitoSans, Onest, OpenSans, Petrona, PlayfairDisplay, PlusJakartaSans, Poppins, PT Serif Caption, RethinkSans, Roboto, RobotoSerif, ShipporiMincho, Sora, SpaceGrotesk, Ultra, Urbanist, WorkSans

Training details

HyperparameterValue
OptimizerAdamW
Learning rate1e-4
Batch size64
Epochs100
LR schedulerLinear decay
PrecisionFP16
LoRA rank8
LoRA alpha16
LoRA dropout0.1
LoRA targetsquery, value
GPUNVIDIA RTX 3090 (24 GB)
Training time~33 hours

Preprocessing

Preprocessing is built into handler.py and must match at inference time:

  1. Convert to RGB
  2. Pad to square (black fill, centered)
  3. Resize to 224x224
  4. Normalize with ImageNet stats (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])

Usage

from transformers import Dinov2ForImageClassification, AutoImageProcessor
from handler import get_inference_transform
from PIL import Image
import torch

model = Dinov2ForImageClassification.from_pretrained("dchen0/font-classifier")
processor = AutoImageProcessor.from_pretrained("dchen0/font-classifier")
model.eval()

transform = get_inference_transform(processor, processor.size["shortest_edge"])
image = Image.open("font_sample.png").convert("RGB")
pixel_values = transform(image).unsqueeze(0)

with torch.no_grad():
    logits = model(pixel_values=pixel_values).logits

predicted_class = logits.argmax(-1).item()
print(model.config.id2label[predicted_class])

Source

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

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

GPU в ailist

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

Можно запустить

Подбираем GPU…

Класс архитектуры
Dinov2ForImageClassification
Ревизия весов
765b278

0 моделей