font-identifier / README.md
gaborcselle's picture
Adding confusion matrix
9f452d8
---
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](https://huggingface.co/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](https://huggingface.co/gaborcselle/font-identifier/tree/main/hf_samples).
## 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](https://twitter.com/gabor/status/1722300841691103467), [on Pebble.social](https://pebble.social/@gabor/111376050835874755), and [on Threads.net](https://www.threads.net/@gaborcselle/post/CzZJpJCpxTz).
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](https://huggingface.co/datasets/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](font-identifier_confusion-matrix.png)
### Framework versions
- Transformers 4.36.0.dev0
- Pytorch 2.0.0
- Datasets 2.12.0
- Tokenizers 0.14.1