Skip to content

shasan7/FER_PyTorch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Facial Expression Recognition (FER) using the KDEF dataset

The images were transformed and normalized using torch, then we fed them to the pretrained DenseNet121 model for fine-Tuning. (Several other popular pre-trained models are also listed along with it).

A learning rate of 1e-4 was used for the AdamW optimizer, along with batch size of 8, and the training was conducted for 50 epochs. The best validation accuracy achieved by our model is 94.49%.

Abstract:

Training Summary:

    Epoch [1/50]  Train Loss: 1.1639 | Train Acc: 57.76%  || Val Loss: 0.5370 | Val Acc: 82.76%
    Saved new best model with val_acc: 82.76%
    Epoch [2/50]  Train Loss: 0.4200 | Train Acc: 85.83%  || Val Loss: 0.3926 | Val Acc: 86.73%
    Saved new best model with val_acc: 86.73%
    Epoch [3/50]  Train Loss: 0.2386 | Train Acc: 92.34%  || Val Loss: 0.3453 | Val Acc: 89.59%
    Saved new best model with val_acc: 89.59%
    Epoch [4/50]  Train Loss: 0.1351 | Train Acc: 95.89%  || Val Loss: 0.3586 | Val Acc: 89.90%
    Saved new best model with val_acc: 89.90%
    Epoch [5/50]  Train Loss: 0.1163 | Train Acc: 96.38%  || Val Loss: 0.2585 | Val Acc: 91.73%
    Saved new best model with val_acc: 91.73%
    Epoch [6/50]  Train Loss: 0.0898 | Train Acc: 97.14%  || Val Loss: 0.4773 | Val Acc: 92.55%
    Saved new best model with val_acc: 92.55%
    Epoch [7/50]  Train Loss: 0.0843 | Train Acc: 97.14%  || Val Loss: 0.2090 | Val Acc: 93.67%
    Saved new best model with val_acc: 93.67%
    Epoch [8/50]  Train Loss: 0.0682 | Train Acc: 97.88%  || Val Loss: 0.3692 | Val Acc: 89.39%
    Epoch [9/50]  Train Loss: 0.0634 | Train Acc: 98.03%  || Val Loss: 0.3282 | Val Acc: 91.73%
    Epoch [10/50]  Train Loss: 0.0483 | Train Acc: 98.67%  || Val Loss: 0.2505 | Val Acc: 92.35%
    Epoch [11/50]  Train Loss: 0.0515 | Train Acc: 98.37%  || Val Loss: 0.3511 | Val Acc: 91.94%
    Epoch [12/50]  Train Loss: 0.0399 | Train Acc: 98.88%  || Val Loss: 0.4205 | Val Acc: 89.59%
    Epoch [13/50]  Train Loss: 0.0360 | Train Acc: 99.00%  || Val Loss: 0.2864 | Val Acc: 92.55%
    Epoch [14/50]  Train Loss: 0.0369 | Train Acc: 98.88%  || Val Loss: 0.3243 | Val Acc: 92.24%
    Epoch [15/50]  Train Loss: 0.0299 | Train Acc: 99.16%  || Val Loss: 0.4572 | Val Acc: 90.51%
    Epoch [16/50]  Train Loss: 0.0427 | Train Acc: 98.88%  || Val Loss: 0.3331 | Val Acc: 90.92%
    Epoch [17/50]  Train Loss: 0.0337 | Train Acc: 99.13%  || Val Loss: 0.3805 | Val Acc: 91.22%
    Epoch [18/50]  Train Loss: 0.0354 | Train Acc: 99.03%  || Val Loss: 0.4215 | Val Acc: 89.80%
    Epoch [19/50]  Train Loss: 0.0449 | Train Acc: 98.70%  || Val Loss: 0.2631 | Val Acc: 92.65%
    Epoch [20/50]  Train Loss: 0.0225 | Train Acc: 99.26%  || Val Loss: 0.2593 | Val Acc: 93.88%
    Saved new best model with val_acc: 93.88%
    Epoch [21/50]  Train Loss: 0.0298 | Train Acc: 99.08%  || Val Loss: 0.3229 | Val Acc: 92.65%
    Epoch [22/50]  Train Loss: 0.0189 | Train Acc: 99.34%  || Val Loss: 0.3232 | Val Acc: 92.96%
    Epoch [23/50]  Train Loss: 0.0320 | Train Acc: 99.23%  || Val Loss: 0.4447 | Val Acc: 92.76%
    Epoch [24/50]  Train Loss: 0.0253 | Train Acc: 99.26%  || Val Loss: 0.3163 | Val Acc: 92.35%
    Epoch [25/50]  Train Loss: 0.0300 | Train Acc: 99.23%  || Val Loss: 0.2847 | Val Acc: 93.57%
    Epoch [26/50]  Train Loss: 0.0167 | Train Acc: 99.46%  || Val Loss: 0.3133 | Val Acc: 92.96%
    Epoch [27/50]  Train Loss: 0.0194 | Train Acc: 99.57%  || Val Loss: 0.2613 | Val Acc: 93.78%
    Epoch [28/50]  Train Loss: 0.0299 | Train Acc: 99.13%  || Val Loss: 0.3292 | Val Acc: 93.06%
    Epoch [29/50]  Train Loss: 0.0210 | Train Acc: 99.34%  || Val Loss: 0.3586 | Val Acc: 93.06%
    Epoch [30/50]  Train Loss: 0.0211 | Train Acc: 99.36%  || Val Loss: 0.3061 | Val Acc: 93.78%
    Epoch [31/50]  Train Loss: 0.0211 | Train Acc: 99.41%  || Val Loss: 0.3750 | Val Acc: 92.76%
    Epoch [32/50]  Train Loss: 0.0169 | Train Acc: 99.46%  || Val Loss: 0.2669 | Val Acc: 93.98%
    Saved new best model with val_acc: 93.98%
    Epoch [33/50]  Train Loss: 0.0238 | Train Acc: 99.11%  || Val Loss: 0.3924 | Val Acc: 92.14%
    Epoch [34/50]  Train Loss: 0.0265 | Train Acc: 99.11%  || Val Loss: 0.3600 | Val Acc: 92.45%
    Epoch [35/50]  Train Loss: 0.0269 | Train Acc: 99.16%  || Val Loss: 0.2951 | Val Acc: 93.88%
    Epoch [36/50]  Train Loss: 0.0089 | Train Acc: 99.77%  || Val Loss: 0.2502 | Val Acc: 93.47%
    Epoch [37/50]  Train Loss: 0.0158 | Train Acc: 99.59%  || Val Loss: 0.3338 | Val Acc: 92.86%
    Epoch [38/50]  Train Loss: 0.0248 | Train Acc: 99.46%  || Val Loss: 0.3596 | Val Acc: 92.96%
    Epoch [39/50]  Train Loss: 0.0290 | Train Acc: 99.23%  || Val Loss: 0.3590 | Val Acc: 92.24%
    Epoch [40/50]  Train Loss: 0.0287 | Train Acc: 99.16%  || Val Loss: 0.2972 | Val Acc: 93.78%
    Epoch [41/50]  Train Loss: 0.0138 | Train Acc: 99.59%  || Val Loss: 0.3068 | Val Acc: 92.76%
    Epoch [42/50]  Train Loss: 0.0257 | Train Acc: 99.39%  || Val Loss: 0.2569 | Val Acc: 93.57%
    Epoch [43/50]  Train Loss: 0.0149 | Train Acc: 99.67%  || Val Loss: 0.2555 | Val Acc: 94.18%
    Saved new best model with val_acc: 94.18%
    Epoch [44/50]  Train Loss: 0.0145 | Train Acc: 99.49%  || Val Loss: 0.3501 | Val Acc: 92.24%
    Epoch [45/50]  Train Loss: 0.0093 | Train Acc: 99.74%  || Val Loss: 0.3772 | Val Acc: 93.06%
    Epoch [46/50]  Train Loss: 0.0210 | Train Acc: 99.49%  || Val Loss: 0.3676 | Val Acc: 92.76%
    Epoch [47/50]  Train Loss: 0.0131 | Train Acc: 99.74%  || Val Loss: 0.2568 | Val Acc: 94.49%
    Saved new best model with val_acc: 94.49%
    Epoch [48/50]  Train Loss: 0.0081 | Train Acc: 99.72%  || Val Loss: 0.3309 | Val Acc: 93.88%
    Epoch [49/50]  Train Loss: 0.0169 | Train Acc: 99.57%  || Val Loss: 0.2729 | Val Acc: 92.96%
    Epoch [50/50]  Train Loss: 0.0118 | Train Acc: 99.67%  || Val Loss: 0.3195 | Val Acc: 93.57%

Obtained Results:

    Classification Report:
              precision    recall  f1-score   support

       Anger       0.98      0.91      0.95       140
     Disgust       0.90      0.97      0.93       140
        Fear       0.93      0.89      0.91       140
       Happy       0.99      0.99      0.99       140
     Neutral       0.96      0.98      0.97       140
         Sad       0.93      0.92      0.92       140
    Surprise       0.93      0.96      0.94       140

    accuracy                           0.94       980
   macro avg       0.95      0.94      0.94       980
weighted avg       0.95      0.94      0.94       980


    Confusion Matrix:
    [[128   6   2   0   1   3   0]
     [  1 136   0   1   0   2   0]
     [  1   0 124   1   3   3   8]
     [  0   0   1 138   0   0   1]
     [  0   1   0   0 137   2   0]
     [  0   7   2   0   1 129   1]
     [  0   1   5   0   0   0 134]]

Confusion Matrix:

Accuracy Curve:

Loss_Curve):