font-identifier / README.md
gaborcselle's picture
Adding confusion matrix
9f452d8
metadata
license: mit
base_model: microsoft/resnet-18
tags:
  - generated_from_trainer
datasets:
  - gaborcselle/font-examples
metrics:
  - accuracy
model-index:
  - name: font-identifier
    results:
      - task:
          name: Image Classification
          type: image-classification
        dataset:
          name: imagefolder
          type: imagefolder
          config: default
          split: test
          args: default
        metrics:
          - name: Accuracy
            type: accuracy
            value: 0.963265306122449
widget:
  - src: hf_samples/ArchitectsDaughter-Regular_1.png
    example_title: Architects Daughter
  - src: main/hf_samples/Courier_28.png
    example_title: Courier
  - src: main/hf_samples/Helvetica_3.png
    example_title: Helvetica
  - src: hf_samples/IBMPlexSans-Regular_25.png
    example_title: IBM Plex Sans
  - src: hf_samples/Inter-Regular_43.png
    example_title: Inter
  - src: hf_samples/Lobster-Regular_25.png
    example_title: Lobster
  - src: hf_samples/Trebuchet_MS_11.png
    example_title: Trebuchet MS
  - src: hf_samples/Verdana_Bold_43.png
    example_title: Verdana Bold
language:
  - en

font-identifier

This model is a fine-tuned version of microsoft/resnet-18 on the imagefolder dataset. Result: Loss: 0.1172; Accuracy: 0.9633

Try with any screenshot of a font, or any of the examples in the 'samples' subfolder of this repo.

Model description

Identify the font used in an image. Visual classifier based on ResNet18.

I built this project in 1 day, with a minute-by-minute journal on Twitter/X, on Pebble.social, and on Threads.net.

The code used to build this model is in this github rep

Intended uses & limitations

Identify any of 48 standard fonts from the training data.

Training and evaluation data

Trained and eval'd on the gaborcselle/font-examples dataset (80/20 split).

Training procedure

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 5e-05
  • train_batch_size: 16
  • eval_batch_size: 16
  • seed: 42
  • gradient_accumulation_steps: 4
  • total_train_batch_size: 64
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • lr_scheduler_warmup_ratio: 0.1
  • num_epochs: 50

Training results

Training Loss Epoch Step Validation Loss Accuracy
4.0243 0.98 30 3.9884 0.0204
0.8309 10.99 338 0.5536 0.8551
0.3917 20.0 615 0.2353 0.9388
0.2298 30.99 953 0.1326 0.9633
0.1804 40.0 1230 0.1421 0.9571
0.1987 46.99 1445 0.1250 0.9673
0.1728 48.0 1476 0.1293 0.9633
0.1337 48.78 1500 0.1172 0.9633

Confusion Matrix

Confusion matrix on test data.

image

Framework versions

  • Transformers 4.36.0.dev0
  • Pytorch 2.0.0
  • Datasets 2.12.0
  • Tokenizers 0.14.1