This repo includes 3 main parts: using deepface to output age, gender, race, emotion and 2 models training from scratch are masked detection model and skintone detection model. All code are trained and evaluated on Kaggle with all provided data uploaded there.
Running experiment.ipynb
notebook on Kaggle with public and private test data to get multiple backend detectors output for age, gender, race, emotion.
In folder skinton_detection
, run the skintone_analysis.ipynb
notebook to train and predict skintone feature for public and private test data. A model skin_classify_150epoch.keras
will be saved to Kaggle working directory /kaggle/working
after training, which can be used for inference and fine-tuning later.
In folder masked_detection
, run the masked_model_training.ipynb
to train the masked detection model. A model named my_model.keras
will be saved to Kaggle working directory /kaggle/working
.
- Total images: 15000 images (jpg format) including real images and synthetic images
- Number of images with more than 1 face: 109 images (0.7%)
- File annotation format:
- CSV file
- 15310 rows
- Main attributes:
- bbox: face bounding box of format (x, y, w, h) IOU (AVG precision IOU threshold từ 0.5 - 0.95)
- age: 20-30s, 40-50s, Kid, Senior, Baby, Teenager - accuracy (*)
- race: Caucasian, Mongoloid, Negroid - accuracy (*)
- masked: Unmasked, Masked - accuracy
- skintone: Mid-light, Light, Mid-dark, Dark - accuracy (*)
- emotion: Neutral, Happiness, Anger, Surprise, Fear, Sadness, Disgust - accuracy (*)
- gender: Male, Female - accuracy
- Các thuộc tính khó: Độ tuổi, Cảm xúc, Tông màu da, Chủng tộc sẽ được đánh giá cao hơn các thuộc tính khác
Masked detection:
- https://medium.com/cloudnloud/building-a-face-mask-detector-using-python-and-opencv-2654e28d8d76
Skintone detection: