GithubHelp home page GithubHelp logo

mxgbr / order-learning Goto Github PK

View Code? Open in Web Editor NEW

This project forked from changsukim-ku/order-learning

0.0 0.0 0.0 1.58 MB

ORDER LEARNING AND ITS APPLICATION TO AGE ESTIMATION [ICLR 2020]

License: MIT License

Python 100.00%

order-learning's Introduction

[ICLR 2020] Order Learning and Its Application to Age Estimation

Lim2020Order

Paper

Order Learning and Its Application to Age Estimation

We propose order learning to determine the order graph of classes, representing ranks or priorities, and classify an object instance into one of the classes. To this end, we design a pairwise comparator to categorize the relationship between two instances into one of three cases: one instance is 'greater than,' 'similar to,' or 'smaller than' the other. Then, by comparing an input instance with reference instances and maximizing the consistency among the comparison results, the class of the input can be estimated reliably. We apply order learning to develop a facial age estimator, which provides the state-of-the-art performance. Moreover, the performance is further improved when the order graph is divided into disjoint chains using gender and ethnic group information or even in an unsupervised manner.

The full paper can be found via the link above.

Please cite our paper if you use our code or dataset:

@inproceedings{
Lim2020Order,
title={Order Learning and Its Application to Age Estimation},
author={Kyungsun Lim and Nyeong-Ho Shin and Young-Yoon Lee and Chang-Su Kim},
booktitle={International Conference on Learning Representations},
year={2020},
url={https://openreview.net/forum?id=HygsuaNFwr}
}

Dataset

We form the ‘balanced dataset’ from MORPH II [1], AFAD [2], and UTK [3]. Before sampling images from MORPH II, AFAD, and UTK, we rectify inconsistent labels by following the strategy in [4]. For each combination of gender in {female, male} and ethnic group in {African, Asian, European}, we sample about 6,000 images. Also, during the sampling, we attempt to make the age distribution as uniform as possible within range [15,80]. The balanced dataset is partitioned into training and test subsets with ratio 8 : 2.

Lim2020Order

You should download MORPH II, AFAD, and UTK dataset before using the balanced dataset.

Downloads links are followed:
MORPH II[Link] AFAD[Link] UTK[Link]

We also upload the whole MORPH II fold indices for the following 4 experimental settings.

  • Setting A: 5,492 images of Europeans are randomly selected and then divided into training and testing sets with ratio 8:2
  • Setting B: About 21,000 images are randomly selected, while restricting the ratio between Africans and Europeans to 1:1 and that between females and males to 1:3. They are divided into three subsets (S1, S2, S3). The training and testing are done under two sub-settings
    • (B1) training on S1, testing on S2 + S3
    • (B2) training on S2, testing on S1 + S3
  • Setting C (SE): The entire dataset is randomly split into five folds, subject to the constraint that the same persons images should belong to only one fold, and the 5-fold cross-validation is performed.
  • Setting D (RS): The entire dataset is randomly split into five folds without any constraint, and the 5-fold cross-validation is performed.

Dependencies

  • Python3
  • Tensorflow v1
  • Pandas
  • MORPH II
  • AFAD
  • UTK

Preprocessing

We use SeetaFaceDetection [5][Link] for face detection and face alignment code provided from pyimagesearch [Link] for face alignment.

Supervised training

Usage

You can download pre-trained models here [Link]. Use the following command for training.

python comparator_train.py --chain The_number_of_chains --experimental_setting Experimental_setting --data_path img_dir --dataset Dataset_for_evaluation --initial_model_path pre-trained_model_dir --save_dir dir_for_saving_model --log_dir dir_for_saving_logs

Unsupervised training

Coming Soon...

Reference Selection

Usage

Use the following command for reference selection.

python comparator_select_references.py --chain The_number_of_chains --experimental_setting Experimental_setting --data_path img_dir --dataset Dataset_for_evaluation --save_dir dir_for_saving_ref_data

Test

Usage

You can download trained models here [Link]. Use the following command for evaluation.

python comparator_test.py --chain The_number_of_chains --experimental_setting Experimental_setting --dataset Dataset_for_evaluation

Balanced Dataset

  • Dataset_for_evaluation : 'Balanced'
  • The_number_of_chains : '1CH', '2CH', '3CH', '6CH'
  • Experimental_setting : 'Supervised', 'Unsupervised'

MORPH II Dataset

  • Dataset_for_evaluation : 'Morph'
  • The_number_of_chains : '1CH'
  • Experimental_setting : 'A', 'B', 'C', 'D'

Results

Balanced Dataset

Chain 1CH 2CH 3CH 6CH
Superivsed 4.23 / 73.2 4.18 / 73.4 4.19 / 73.4 4.18 / 73.4
Unsupervised - 4.16 / 74.0 4.17 / 73.9 4.16 / 74.0

MORPH II Dataset

Settting(1CH) A B C D
MAE 2.41 2.75 2.68 2.22
CS(%) 91.7 88.2 88.8 93.3

Reference

[1] Karl Ricanek and Tamirat Tesafaye. MORPH: A longitudinal image database of normal adult age-progression. In FGR, pp. 341–345, 2006.
[2] Zhenxing Niu, Mo Zhou, Le Wang, Xinbo Gao, and Gang Hua. Ordinal regression with multiple output CNN for age estimation. In CVPR, pp. 4920–4928, 2016.
[3] Zhifei Zhang, Yang Song, and Hairong Qi. Age progression/regression by conditional adversarial autoencoder. In CVPR, 2017.
[4] Benjamin Yip, Garrett Bingham, Katherine Kempfert, Jonathan Fabish, Troy Kling, Cuixian Chen, and Yishi Wang. Preliminary studies on a large face database. In ICBD, pp. 2572–2579, 2018.
[5] Jie Zhang, Shiguang Shan, Meina Kan, and Xilin Chen. Coarse-to-fine auto-encoder networks (CFAN) for real-time face alignment. In ECCV, pp. 1–16, 2014.

order-learning's People

Contributors

changsukim-ku avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.