penincillin / DREAM

This is the public repository for our accepted CVPR 2018 paper "Pose-Robust Face Recognition via Deep Residual Equivariant Mapping"
http://mmlab.ie.cuhk.edu.hk/projects/DREAM/
BSD 2-Clause "Simplified" License
388 stars 98 forks source link

Where to get a Ms-Celeb-1M subset with 300 celebrities? #12

Closed VeronikaVasilyeva closed 6 years ago

VeronikaVasilyeva commented 6 years ago

Hello. You wrote: "In this paper, we use three face datasets. We train base model and DREAM block on MS-Celeb-1M. We offer a subset of Ms-Celeb-1M with 300 celebrities, you could download from the following link Ms-Celeb-1M Subset (msceleb.zip) https://drive.google.com/file/d/1om0pbwBX4RZHVuI3QXVrBj9mLtOK2PV8/view?usp=sharing"

But I see 10 folders in msceleb.zip. image

penincillin commented 6 years ago

We changed the subset of MS-Celeb-1M from 300 celebrities to 10 celebrities but forgot to update the readme. Sorry for this mistake

VeronikaVasilyeva commented 6 years ago

@penincillin it will be enough for good learning for residual-branch? can may you explain me how to deploy DREAM-block (stiching stratagy) to my trained network? I don't undersand your description in paper. may be exist any examples?

penincillin commented 6 years ago

Actually, it is not enough to train a face model from scratch with only 10 identities. The purpose of offering this dataset is to make sure that you could get through our code using this toy dataset. If you want to train a useful face model, you should prepare a much bigger dataset (say at least 1000 identities). For how to deploy DREAM-block. You could use our code directly the with a real dataset (say CASIA WebFace or Full dataset of MsCeleb-1M) . You could refer to the "end2end training" in the readme.

VeronikaVasilyeva commented 6 years ago

@penincillin okey. thanks for your answer. For end2end training, I should insert Branch model layers into my net after last fc layer. Then training on dataset. Then to train DREAM-block I should freez all layers of net besides Brahch model layers. And train again on pair frontal and profile.
Could you confirm whether I'm right or not?

penincillin commented 6 years ago

Actually, you are only partially right. You should insert Branch model layers into your base model after the last fc layer. Let's call this model end2end model. Paired frontal and profile faces are not required in the end2end training. You just need to prepare the yaw angle for each face image in your training dataset. Then the end2end model could be trained as a whole from scratch (which means pretrain is also not required). During the training process you need not to freeze any layers of base model or the DREAM block.

VeronikaVasilyeva commented 6 years ago

@penincillin hello. thanks for your answer. what about the strategy "end2end+retrain"? After I inserted Branch and trained my modification net I should train DREAM. How it make?

penincillin commented 6 years ago

" end2end + retrain " is kind of similar to " stitching ". Since the DREAM block in end2end model is not trained with data on feature space (recall that the DREAM block in "stitching " strategy is trained with features of paired profile and frontal faces. "end2end + retrain" means you retrain the DREAM block of end2end model in the same way as you train the DREAM block in the "stitching" strategy.

ysc703 commented 5 years ago

Hi @penincillin I have two questions about the retrain strategy. Q1: Does it mean that I need to retrain DREAM block from scratch after the "end2end" process? Q2: The feature vector for retraining is the same as the "Fixed representation", is it?

Thanks.

ysc703 commented 5 years ago

@penincillin Thanks.