Hi all. I would like to share my issue in order to get some help.
The task is a binary image classifier including 2 classes {Live, Spoof}.
1. At First, I have trained CNN network as a Face anti spoofing model, with 3 backbones including {Resnet50, MobilenetV2, VGG19} on celebA spoof dataset. among these backbones, VGG19 (superior) outperforms the other backbones (trained with Binary cross entropy).
2. in the next step, I fine-tuned VGG19 checkpoint on my own dataset which is more real faces compared to CelebA dataset. my own dataset train images have 1965 live samples and 6673 spoof samples. I have uploaded the distribution of my own dataset.
since the number of spoof images is 3.5 times larger than live images, I used both weighted loss and focal loss. but the model is still biased to spoof images.
the problem is that my model is biased to spoof classes. it performs weakly on Live class.
I have uploaded 3 plots including {confusion_matrix, AUC, and reliability diagaram} to show the result of fine-tuning on my test set.
in the confusion matrix accuracy of :
AUC is %79.
My question is, which alternative models can learn better features and discriminate live features from spoof features?
How Can I improve the accuracy of my model on Live images from %63 to > %90 (based on my accuracy on the confusion matrix)