From e078e9733b8640c668ea8d7909fd1d4036f821f4 Mon Sep 17 00:00:00 2001 From: Olegs NIKISINS Date: Wed, 31 Jan 2018 11:01:23 +0100 Subject: [PATCH 1/2] Created CelebA and AggrDb config files for Autoencoder V2 --- .../autoencoder/autoencoder_model_v2.pth | Bin 25230 -> 0 bytes .../autoencoder/autoencoder_v2/__init__.py | 0 .../autoencoder_config_aggr_db.py} | 10 +- .../autoencoder_config_celeba.py | 99 ++++++++++++++++++ 4 files changed, 104 insertions(+), 5 deletions(-) delete mode 100644 bob/pad/face/config/pytorch/autoencoder/autoencoder_model_v2.pth create mode 100644 bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/__init__.py rename bob/pad/face/config/pytorch/autoencoder/{autoencoder_config_v2.py => autoencoder_v2/autoencoder_config_aggr_db.py} (90%) create mode 100644 bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/autoencoder_config_celeba.py diff --git a/bob/pad/face/config/pytorch/autoencoder/autoencoder_model_v2.pth b/bob/pad/face/config/pytorch/autoencoder/autoencoder_model_v2.pth deleted file mode 100644 index 6158355e51188271e64a60f73ba6cd6a5053e8a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25230 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 TbU(Ul(lgRJGn`jXnM(f$$nGH9 diff --git a/bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/__init__.py b/bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bob/pad/face/config/pytorch/autoencoder/autoencoder_config_v2.py b/bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/autoencoder_config_aggr_db.py similarity index 90% rename from bob/pad/face/config/pytorch/autoencoder/autoencoder_config_v2.py rename to bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/autoencoder_config_aggr_db.py index 28d2c69..59ef96f 100644 --- a/bob/pad/face/config/pytorch/autoencoder/autoencoder_config_v2.py +++ b/bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/autoencoder_config_aggr_db.py @@ -20,7 +20,7 @@ from torch import nn Note: do not change names of the below constants. """ NUM_EPOCHS = 100 # Maximum number of epochs -BATCH_SIZE = 4 # Size of the batch +BATCH_SIZE = 8 # Size of the batch LEARNING_RATE = 1e-3 # Learning rate @@ -62,7 +62,7 @@ class Network(nn.Module): def __init__(self): super(Network, self).__init__() self.encoder = nn.Sequential( - nn.Conv2d(3, 16, 3, stride=1, padding=1), + nn.Conv2d(3, 16, 3, stride=1, padding=1), nn.ReLU(True), nn.MaxPool2d(2, stride=2), nn.Conv2d(16, 8, 3, stride=1, padding=1), @@ -77,11 +77,11 @@ class Network(nn.Module): ) self.decoder = nn.Sequential( - nn.ConvTranspose2d(8, 8, 3, stride=1, padding=0), + nn.ConvTranspose2d(8, 8, 3, stride=1, padding=0), nn.ReLU(True), - nn.ConvTranspose2d(8, 16, 3, stride=2, padding=0), + nn.ConvTranspose2d(8, 16, 3, stride=2, padding=0), nn.ReLU(True), - nn.ConvTranspose2d(16, 8, 3, stride=2, padding=2), + nn.ConvTranspose2d(16, 8, 3, stride=2, padding=2), nn.ReLU(True), nn.ConvTranspose2d(8, 3, 2, stride=2, padding=3), nn.Tanh() diff --git a/bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/autoencoder_config_celeba.py b/bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/autoencoder_config_celeba.py new file mode 100644 index 0000000..3318637 --- /dev/null +++ b/bob/pad/face/config/pytorch/autoencoder/autoencoder_v2/autoencoder_config_celeba.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +""" +@author: Olegs Nikisins +""" +#============================================================================== +# Import here: + +from torchvision import transforms + +from bob.pad.face.database import CELEBAPadDatabase + +from torch import nn + + +#============================================================================== +# Define parameters here: + +""" +Note: do not change names of the below constants. +""" +NUM_EPOCHS = 100 # Maximum number of epochs +BATCH_SIZE = 128 # Size of the batch +LEARNING_RATE = 1e-3 # Learning rate + + +""" +Transformations to be applied sequentially to the input PIL image. +Note: the variable name ``transform`` must be the same in all configuration files. +""" +transform = transforms.Compose([transforms.Resize((64, 64)), + transforms.ToTensor(), + transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) + ]) + + +""" +Set the parameters of the DataFolder dataset class. +Note: do not change the name ``kwargs``. +""" +bob_hldi_instance = CELEBAPadDatabase(original_directory = "", original_extension = "") + +kwargs = {} +kwargs["data_folder"] = "NO NEED TO SET HERE, WILL BE SET IN THE TRAINING SCRIPT" +kwargs["transform"] = transform +kwargs["extension"] = '.hdf5' +kwargs["bob_hldi_instance"] = bob_hldi_instance +kwargs["hldi_type"] = "pad" +kwargs["groups"] = ['train'] +kwargs["protocol"] = 'grandtest' +kwargs["purposes"] = ['real'] +kwargs["allow_missing_files"] = True + + +""" +Define the network to be trained as a class, named ``Network``. +Note: Do not change the name of the below class. +""" + +class Network(nn.Module): + + def __init__(self): + super(Network, self).__init__() + self.encoder = nn.Sequential( + nn.Conv2d(3, 16, 3, stride=1, padding=1), + nn.ReLU(True), + nn.MaxPool2d(2, stride=2), + nn.Conv2d(16, 8, 3, stride=1, padding=1), + nn.ReLU(True), + nn.MaxPool2d(2, stride=2), + nn.Conv2d(8, 8, 3, stride=1, padding=1), + nn.ReLU(True), + nn.MaxPool2d(2, stride=1), + nn.Conv2d(8, 8, 3, stride=1, padding=1), + nn.ReLU(True), + nn.MaxPool2d(2, stride=2) + + ) + self.decoder = nn.Sequential( + nn.ConvTranspose2d(8, 8, 3, stride=1, padding=0), + nn.ReLU(True), + nn.ConvTranspose2d(8, 16, 3, stride=2, padding=0), + nn.ReLU(True), + nn.ConvTranspose2d(16, 8, 3, stride=2, padding=2), + nn.ReLU(True), + nn.ConvTranspose2d(8, 3, 2, stride=2, padding=3), + nn.Tanh() + ) + + def forward(self, x): + x = self.encoder(x) + x = self.decoder(x) + return x + +""" +Define the loss to be used for training. +Note: do not change the name of the below variable. +""" +loss_type = nn.MSELoss() -- GitLab From c0b7c60afc47c7a80b8f05d0f1a4c7a953e48d79 Mon Sep 17 00:00:00 2001 From: Olegs NIKISINS Date: Mon, 5 Feb 2018 14:06:45 +0100 Subject: [PATCH 2/2] Added CelebA noise autoencoder config --- .../noise_autoencoder_v1/__init__.py | 0 .../autoencoder_config_celeba.py | 113 ++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 bob/pad/face/config/pytorch/autoencoder/noise_autoencoder_v1/__init__.py create mode 100644 bob/pad/face/config/pytorch/autoencoder/noise_autoencoder_v1/autoencoder_config_celeba.py diff --git a/bob/pad/face/config/pytorch/autoencoder/noise_autoencoder_v1/__init__.py b/bob/pad/face/config/pytorch/autoencoder/noise_autoencoder_v1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bob/pad/face/config/pytorch/autoencoder/noise_autoencoder_v1/autoencoder_config_celeba.py b/bob/pad/face/config/pytorch/autoencoder/noise_autoencoder_v1/autoencoder_config_celeba.py new file mode 100644 index 0000000..0b66d5a --- /dev/null +++ b/bob/pad/face/config/pytorch/autoencoder/noise_autoencoder_v1/autoencoder_config_celeba.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +""" +@author: Olegs Nikisins +""" +#============================================================================== +# Import here: + +from torchvision import transforms + +from bob.pad.face.database import CELEBAPadDatabase + +from torch import nn + + +#============================================================================== +# Define parameters here: + +""" +Note: do not change names of the below constants. +""" +NUM_EPOCHS = 100 # Maximum number of epochs +BATCH_SIZE = 128 # Size of the batch +LEARNING_RATE = 1e-3 # Learning rate + + +""" +Transformations to be applied sequentially to the input PIL image. +Note: the variable name ``transform`` must be the same in all configuration files. +""" +transform = transforms.Compose([transforms.Resize((64, 64)), + transforms.ToTensor(), + transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) + ]) + + +""" +Set the parameters of the DataFolder dataset class. +Note: do not change the name ``kwargs``. +""" +bob_hldi_instance = CELEBAPadDatabase(original_directory = "", original_extension = "") + +kwargs = {} +kwargs["data_folder"] = "NO NEED TO SET HERE, WILL BE SET IN THE TRAINING SCRIPT" +kwargs["transform"] = transform +kwargs["extension"] = '.hdf5' +kwargs["bob_hldi_instance"] = bob_hldi_instance +kwargs["hldi_type"] = "pad" +kwargs["groups"] = ['train'] +kwargs["protocol"] = 'grandtest' +kwargs["purposes"] = ['real'] +kwargs["allow_missing_files"] = True + + +""" +Define the network to be trained as a class, named ``Network``. +Note: Do not change the name of the below class. +""" +class Network(nn.Module): + + def __init__(self): + super(Network, self).__init__() + self.encoder = nn.Sequential( + nn.Conv2d(3, 64, 3, stride=3, padding=1), # b, 16, 10, 10 + nn.ReLU(True), + nn.MaxPool2d(2, stride=2), # b, 16, 5, 5 + nn.Conv2d(64, 8, 3, stride=2, padding=1), # b, 8, 3, 3 + nn.ReLU(True), + nn.MaxPool2d(2, stride=1) # b, 8, 2, 2 + ) + self.decoder = nn.Sequential( + nn.ConvTranspose2d(8, 64, 3, stride=2), # b, 16, 5, 5 + nn.ReLU(True), + nn.ConvTranspose2d(64, 8, 5, stride=3, padding=1), # b, 8, 15, 15 + nn.ReLU(True), + nn.ConvTranspose2d(8, 3, 2, stride=2, padding=1), # b, 1, 28, 28 + nn.Tanh() + ) + + self.encoder_diff = nn.Sequential( + nn.Conv2d(3, 64, 3, stride=3, padding=1), # b, 16, 10, 10 + nn.ReLU(True), + nn.MaxPool2d(2, stride=2), # b, 16, 5, 5 + nn.Conv2d(64, 8, 3, stride=2, padding=1), # b, 8, 3, 3 + nn.ReLU(True), + nn.MaxPool2d(2, stride=1) # b, 8, 2, 2 + ) + self.decoder_diff = nn.Sequential( + nn.ConvTranspose2d(8, 64, 3, stride=2), # b, 16, 5, 5 + nn.ReLU(True), + nn.ConvTranspose2d(64, 8, 5, stride=3, padding=1), # b, 8, 15, 15 + nn.ReLU(True), + nn.ConvTranspose2d(8, 3, 2, stride=2, padding=1), # b, 1, 28, 28 + nn.Tanh() + ) + + def forward(self, x): + + x = x - self.decoder( self.encoder(x) ) # now x represents reconstruction error + + x_diff = x.clone() # clone above reconstruction error + + # encode decode the reconstruction error: + x = self.encoder_diff(x) + x = self.decoder_diff(x) + + return x, x_diff + +""" +Define the loss to be used for training. +Note: do not change the name of the below variable. +""" +loss_type = nn.MSELoss() -- GitLab