
# vit-Facial-Expression-Recognition

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 [FER 2013](https://www.kaggle.com/datasets/msambare/fer2013),[MMI Facial Expression Database](https://mmifacedb.eu/), and [AffectNet dataset](https://www.kaggle.com/datasets/noamsegal/affectnet-training-data) datasets.
It achieves the following results on the evaluation set:
- Loss: 0.4503
- Accuracy: 0.8434

## Model description

The vit-face-expression model is a Vision Transformer fine-tuned for the task of facial emotion recognition. 

It is trained on the FER2013, MMI facial Expression, and AffectNet datasets, which consist of facial images categorized into seven different emotions:
- Angry
- Disgust
- Fear
- Happy
- Sad
- Surprise
- Neutral


## Data Preprocessing

The input images are preprocessed before being fed into the model. The preprocessing steps include:
- **Resizing:** Images are resized to the specified input size.
- **Normalization:** Pixel values are normalized to a specific range.
- **Data Augmentation:** Random transformations such as rotations, flips, and zooms are applied to augment the training dataset.

### Training hyperparameters

The following hyperparameters were used during training:
- learning_rate: 3e-05
- train_batch_size: 32
- eval_batch_size: 32
- seed: 42
- gradient_accumulation_steps: 8
- total_train_batch_size: 256
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: cosine
- lr_scheduler_warmup_steps: 1000
- num_epochs: 3

### Training results

| Training Loss | Epoch | Step | Validation Loss | Accuracy |
|:-------------:|:-----:|:----:|:---------------:|:--------:|
| 1.3548        | 0.17  | 100  | 0.8024          | 0.7418   |
| 1.047         | 0.34  | 200  | 0.6823          | 0.7653   |
| 0.9398        | 0.51  | 300  | 0.6264          | 0.7827   |
| 0.8618        | 0.67  | 400  | 0.5857          | 0.7973   |
| 0.8363        | 0.84  | 500  | 0.5532          | 0.8104   |
| 0.8018        | 1.01  | 600  | 0.5279          | 0.8196   |
| 0.7567        | 1.18  | 700  | 0.5110          | 0.8248   |
| 0.7521        | 1.35  | 800  | 0.5080          | 0.8259   |
| 0.741         | 1.52  | 900  | 0.5002          | 0.8271   |
| 0.7229        | 1.69  | 1000 | 0.4967          | 0.8263   |
| 0.7157        | 1.85  | 1100 | 0.4876          | 0.8326   |
| 0.6868        | 2.02  | 1200 | 0.4836          | 0.8342   |
| 0.6605        | 2.19  | 1300 | 0.4711          | 0.8384   |
| 0.6449        | 2.36  | 1400 | 0.4608          | 0.8406   |
| 0.6085        | 2.53  | 1500 | 0.4503          | 0.8434   |
| 0.6178        | 2.7   | 1600 | 0.4434          | 0.8478   |
| 0.6166        | 2.87  | 1700 | 0.4420          | 0.8486   |


### Framework versions

- Transformers 4.36.0
- Pytorch 2.0.0
- Datasets 2.1.0
- Tokenizers 0.15.0

anger disgust fear happy neutral sad surprise