|
--- |
|
license: apache-2.0 |
|
base_model: google/vit-base-patch16-224-in21k |
|
tags: |
|
- generated_from_trainer |
|
datasets: |
|
- imagefolder |
|
metrics: |
|
- accuracy |
|
model-index: |
|
- name: alzheimer-image-classification-google-vit-base-patch16 |
|
results: |
|
- task: |
|
name: Image Classification |
|
type: image-classification |
|
dataset: |
|
name: imagefolder |
|
type: imagefolder |
|
config: default |
|
split: train |
|
args: default |
|
metrics: |
|
- name: Accuracy |
|
type: accuracy |
|
value: 0.9261006289308176 |
|
pipeline_tag: image-classification |
|
--- |
|
|
|
<!-- This model card has been generated automatically according to the information the Trainer had access to. You |
|
should probably proofread and complete it, then remove this comment. --> |
|
|
|
# alzheimer-image-classification-google-vit-base-patch16 |
|
|
|
This model is a fine-tuned version of [google/vit-base-patch16-224-in21k](https://huggingface.co/google/vit-base-patch16-224-in21k) on the [Alzheimer MRI data](https://www.kaggle.com/datasets/sachinkumar413/alzheimer-mri-dataset). |
|
It achieves the following results on the evaluation set: |
|
- Loss: 0.2127 |
|
- Accuracy: 0.9261 |
|
|
|
## Model description |
|
|
|
The Vision Transformer (ViT) is a transformer encoder model (BERT-like) pretrained on a large collection of images in a supervised fashion, namely ImageNet-21k, at a resolution of 224x224 pixels. |
|
|
|
Images are presented to the model as a sequence of fixed-size patches (resolution 16x16), which are linearly embedded. One also adds a [CLS] token to the beginning of a sequence to use it for classification tasks. One also adds absolute position embeddings before feeding the sequence to the layers of the Transformer encoder. |
|
|
|
Note that this model does not provide any fine-tuned heads, as these were zero'd by Google researchers. However, the model does include the pre-trained pooler, which can be used for downstream tasks (such as image classification). |
|
|
|
By pre-training the model, it learns an inner representation of images that can then be used to extract features useful for downstream tasks: if you have a dataset of labeled images for instance, you can train a standard classifier by placing a linear layer on top of the pre-trained encoder. One typically places a linear layer on top of the [CLS] token, as the last hidden state of this token can be seen as a representation of an entire image |
|
|
|
## Intended uses & limitations |
|
|
|
You can use the raw model for image classification. See the [model hub](https://huggingface.co/models?search=google/vit) to look for fine-tuned versions on a task that interests you. |
|
|
|
|
|
|
|
### Training hyperparameters |
|
|
|
The following hyperparameters were used during training: |
|
- learning_rate: 5e-05 |
|
- train_batch_size: 4 |
|
- eval_batch_size: 4 |
|
- seed: 42 |
|
- gradient_accumulation_steps: 4 |
|
- total_train_batch_size: 16 |
|
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08 |
|
- lr_scheduler_type: linear |
|
- lr_scheduler_warmup_ratio: 0.1 |
|
- num_epochs: 10 |
|
|
|
### Training results |
|
|
|
| Training Loss | Epoch | Step | Validation Loss | Accuracy | |
|
|:-------------:|:-----:|:----:|:---------------:|:--------:| |
|
| 0.8167 | 1.0 | 715 | 0.7520 | 0.6494 | |
|
| 0.6264 | 2.0 | 1431 | 0.6467 | 0.7091 | |
|
| 0.5003 | 3.0 | 2146 | 0.5430 | 0.7594 | |
|
| 0.3543 | 4.0 | 2862 | 0.4372 | 0.8145 | |
|
| 0.3816 | 5.0 | 3577 | 0.3681 | 0.8428 | |
|
| 0.2055 | 6.0 | 4293 | 0.3746 | 0.8514 | |
|
| 0.2526 | 7.0 | 5008 | 0.2836 | 0.8907 | |
|
| 0.1262 | 8.0 | 5724 | 0.2798 | 0.8954 | |
|
| 0.1332 | 9.0 | 6439 | 0.2301 | 0.9159 | |
|
| 0.0702 | 9.99 | 7150 | 0.2127 | 0.9261 | |
|
|
|
|
|
### Framework versions |
|
|
|
- Transformers 4.31.0 |
|
- Pytorch 2.0.1 |
|
- Datasets 2.14.3 |
|
- Tokenizers 0.13.3 |