Pytorch implimentation of《2017CVPR-Representation Learning by Rotating Your Faces》, which is relied on kayamin's implement of DR-GAN.
CVPR2017: Representation Learning by Rotating Your Faces
we trained the network using multiPIE and evaluated it for face recognition.
look at document tree and see each file for more details, we can modify dataset and training parameters to run it:
myDRGAN
│ continue_scripts.sh
│ generate_multi.sh
│ generate_single.sh
│ iden_multi.sh
│ iden_single.sh
│ main.py
│ README.md
│ train_multi.sh
│ train_single.sh
│
├─.vscode
├─data
│ data.py
│ datdaset guide.pdf
│ mydataset.py
│ __init__.py
│
├─model
│ model.py
│ multiple_DR_GAN_model.py
│ multiple_DR_GAN_model_old.py
│ single_DR_GAN_model.py
│ single_DR_GAN_model_old.py
│ weights.py
│ __init__.py
│
├─run
│ generate_image.py
│ representation_learning.py
│ run.py
│ scheduler.py
│ train_multiple_DRGAN.py
│ train_single_DRGAN.py
│ __init__.py
│
├─snapshot
│ └─bestmodel
│ goodgen_multi_G.pth
│ goodgen_single_G.pth
│ goodiden_multi_G.pth
│ goodiden_single_G.pth
│
└─util
myacc.py
mybuffer.py
mylog.py
mytranmodel.py
__init__.py
there are scripts to run DRGAN, we can modify some parameters in scripts:
generate images
generate_multi.sh
generate_single.sh
identity recognition
iden_multi.sh
iden_single.sh
train model
train_multi.sh
train_single.sh
The experiments in following are preliminary(something maybe wrong), we are supposed to explore more details. But I am sorry to leave this reposity to start carrying out other assignments.
batch_size:
64
data prepeocess:
transforms.CenterCrop(150)
transforms.RandomCrop(96)
policy:
if epoch<2**1+3: ratio=1+1 # 1:1
elif epoch<2**2+3: ratio=2+1 # 1:2
elif epoch<2**3+3: ratio=3+1 # 1:3
elif epoch<2**4+3: ratio=4+1 # 1:4
elif epoch<2**5+3: ratio=5+1 # 1:5
elif epoch<2**6+3: ratio=6+1 # 1:6
total epoches:
40
plot loss
generate images
identification rate
degree | 0 | 15 | 30 | 45 | 60 |
---|---|---|---|---|---|
goodiden | 86.8 | 91.4 | 91.1 | 87.4 | 81.8 |
goodgen | 88.7 | 91.8 | 90.1 | 86.1 | 81.2 |
we have higner iden rate but the generated images are really ugly.
imagesperID:
6
batch_size:
60
preprocess:
transforms.CenterCrop(150)
transforms.RandomCrop(96)
policy:
if epoch<2**1+1: ratio=2**0+1 # 1:1
elif epoch<2**2+1: ratio=2**1+1 # 1:2
elif epoch<2**3+1: ratio=2**2+1 # 1:3
elif epoch<2**4+1: ratio=2**3+1 # 1:4
elif epoch<2**5+1: ratio=2**4+1 # 1:8
total epoches:
40
plot loss
generate images(really poor)
identification rate
degree | 0 | 15 | 30 | 45 | 60 |
---|---|---|---|---|---|
goodiden | 89.5 | 93.5 | 92.7 | 89.4 | 85.1 |
goodgen | 88.6 | 91.0 | 89.4 | 83.3 | 76.4 |
we have higner iden rate but the generated images are really ugly.
Good iden rate doesn't mean good generatation, we can see the comparision in snapshot file.
some models to download: bestmodel in baidudisk password: bc97