GilLevi / AgeGenderDeepLearning

628 stars 285 forks source link

Filtering Adience prior to benchmarking? #23

Closed avasbr closed 6 years ago

avasbr commented 6 years ago

First of all, thanks for providing all this! Had a general question that I think I know the answer to, but wanted to make sure of:

For some of the folds, there is some inconsistent/bad data, for example:

fold_0.txt:

113804525@N05 11846455104_455a9c2c76_o.jpg 319 35 m 803 1075 529 529 -90 0 64 113804525@N05 11846455104_455a9c2c76_o.jpg 320 (25, 32) f 1104 1612 504 504 -85 0 38 113804525@N05 11846455104_455a9c2c76_o.jpg 321 3 m 929 634 376 376 -95 0 35

^ These are duplicates, with only one of the age categories being valid. In the folds that are generated in the folder "train_val_txt_files_per_fold", it appears that the correct label for this is "4", which corresponds to (25, 32).

Is it generally acceptable to simply remove all rows where the age is either missing or incorrect? This dataset appears to be used as a benchmark by many other papers, and I want to make sure that I align in what kinds of filtering I do on the test set. Apologies in advance if this has been discussed somewhere else

GilLevi commented 6 years ago

Hi @avasbr ,

Thank you for your interest in our work.

For that image, it actually looks like 3 different faces in the same image -- the bounding boxes are different. Are you sure this is not the case?

Best, Gil

avasbr commented 6 years ago

Hi @GilLevi,

You're absolutely right, not sure why I didn't think of that. thanks for clearing that up :) I guess the reason I thought it might be "bad" is because I didn't see any references to the other faces in the train_val_txt_files_per_fold files. It appears that the two images with age labels "3" and "35" look correct, but are eliminated during processing, via this if-clause:

https://github.com/GilLevi/AgeGenderDeepLearning/blob/a3cfdd26d9c18644d38dbba35af7033cd4824f16/DataPreparationCode/create_train_val_txt_files.py#L80

From what I can see, in fold 0 alone there are about ~1.2K images that have labels (that are not "None") that don't correspond to the adience group labels, but aren't necessarily incorrect. I'm wondering if it makes sense to ignore them or to transform them into one of the corresponding group labels? If transforming them is the right thing to do, when you have a label like 35 or 3, which lies precisely between two group labels, i.e (25-32, 38-43) and (0-2, 4-5) respectively, which group should it belong to?

To reiterate, the main reason why I'm asking is to make sure I align with convention when benchmarking, and if convention is to ignore, then that's easy enough to do.

I apologize in advance if this has been discussed elsewhere. Thanks again!

GilLevi commented 6 years ago

Hi @avasbr ,

I apologize for the late response. The convention when benchmarking is to ignore those labels (that don't fit into the age groups).

Best, Gil