Pytorch implementation of our method for ICME2022 paper: "Adaptive Mean-residue Loss for Robust Facial Age Estimation".
Automated facial age estimation has diverse real-world applications in multimedia analysis, e.g., video surveillance, and human-computer interaction. However, due to the randomness and ambiguity of the aging process, age assessment is challenging. Most research work over the topic regards the task as one of age regression, classification, and ranking problems, and cannot well leverage age distribution in representing labels with age ambiguity. In this work, we propose a simple yet effective loss function for robust facial age estimation via distribution learning, i.e., adaptive mean-residue loss, in which, the mean loss penalizes the difference between the estimated age distribution's mean and the ground-truth age, whereas the residue loss penalizes the entropy of age probability out of dynamic top-K in the distribution. Experimental results in the datasets FG-NET and CLAP2016 have validated the effectiveness of the proposed loss.
For FGNET, check the README, under FGNET
folder.
For CLAP16, check the README, under CLAP
folder.
- Install
python
andpytorch
Install PyTorch 1.7.1 + CUDA 10.1
Clone this repo.
- Clone the repository
git clone https://github.com/jacobzhaoziyuan/AMRLoss
cd AMRLoss
- Install dependencies
pip install -r requirements.txt
cd scripts
- For FGNET dataset
bash FGNET_experiments.sh
- For CLAP2016 dataset
bash CLAP_experiments.sh
If you find the codebase useful for your research, please cite the paper:
@inproceedings{zhao2022adaptive,
title={Adaptive Mean-Residue Loss for Robust Facial Age Estimation},
author={Zhao, Ziyuan and Qian, Peisheng and Hou, Yubo and Zeng, Zeng},
booktitle={2022 IEEE International Conference on Multimedia and Expo (ICME)},
year={2022}
}
@misc{zhao2022adaptive,
title={Adaptive Mean-Residue Loss for Robust Facial Age Estimation},
author={Ziyuan Zhao and Peisheng Qian and Yubo Hou and Zeng Zeng},
year={2022},
eprint={2203.17156},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
Part of the code is adapted from open-source codebase and original implementations of algorithms, we thank these authors for their fantastic and efficient codebase: