一、Introduction
September 29, 2021 · View on GitHub
English | 简体中文
[TOC]
一、Introduction
An implementation of the face (emotion and gender) classification models (MiniXception。SimpleCNN) proposed in paper Real-time Convolutional Neural Networks for Emotion and Gender Classification with PaddlePaddle. SimpleCNN is a standard fully-convolutional neural network composed of 9 convolution layers, ReLUs, Batch Normalization and Global Average Pooling. MiniXception replaces the convolution layers with depth-wise separable convolutions and residual modules.
二、Accuracy
We trained the models with imdb_crop dataset in gender classification task and each model obtains an accuracy of 96%.
| Model | Accuracy | Input shape |
|---|---|---|
| SimpleCNN | 96.00% | (48, 48, 3) |
| MiniXception | 96.01% | (64, 64, 1) |
三、Dataset
We trained and tested models on dataset imdb_crop (the password is mu2h). The dataset can be also download from here. First, download and uncompress the dataset. Then, edit configuration files config/simple_conf.yaml and config/min_conf.yaml of models SimpleCNN and MiniXception. Set imdb_dir to be the path to the dataset. imdb_dir s should be the same in training and test stages. You don't need to split the dataset into training and test set, because the python scripts will do that. The dataset will be split in the manner of that proposed in the paper. That is, sorts the images by file names and considers the front 80% as training set and the rear 20% as test set.
四、Environment
scipy==1.2.1
paddlepaddle==2.1.2
numpy==1.20.1
opencv-python==3.4.10.37
pyyaml~=5.4.1
visualdl~=2.2.0
tqdm~=4.62.0
五、Quick Start
Step1: Clone
# clone this repo
git clone https://github.com/wapping/FaceClassification.git
cd FaceClassification
Step2: Train
Edit the configuration file for your own and run the command like
python train.py -c path_to_conf
For example
python train.py -c ./config/simple_conf.yaml
Step3: Test
Edit the configuration file for your own and run the command like
python eval.py -c path_to_conf
Just wait for the results.
六、Code Structure and Explanation
6.1 Code Structure
|____config
| |____conf.yaml
| |____confg.py
| |____simple_conf.yaml
| |____mini_conf.yaml
|____data
| |____dataset.py
|____models
| |____simple_cnn.py
| |____mini_xception.py
|____train.py
|____eval.py
6.2 Parameter Explanation
-
train.py
--conf_path: optional, the path to the configuration file,config/conf.yamlby default.--model_name: optional, the model name. If given, it will replacemodel namein the configuration file. -
eval.py
--conf_path: optional, the path to the configuration file,config/conf.yamlby default.--model_name: optional, the model name. If given, it will replacemodel namein the configuration file.--model_state_dict: optional, the path to the model. If given, it will replacemodel_state_dictin the configuration file.
七、Model Infomation
| Field | Content |
|---|---|
| Author | Huaping Li、Xiaoqian Song |
| Date | 2021.09 |
| Framework version | paddlepaddle 2.1.2 |
| Application scenarios | Face classification |
| Supported hardware | CPU、GPU |