Skip to content
Snippets Groups Projects

Cross validation

Merged Anjith GEORGE requested to merge cross_validation into master
1 unresolved thread
3 files
+ 414
283
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -7,7 +7,7 @@ from bob.learn.pytorch.datasets import DataFolder
@@ -7,7 +7,7 @@ from bob.learn.pytorch.datasets import DataFolder
from bob.pad.face.database import BatlPadDatabase
from bob.pad.face.database import BatlPadDatabase
from bob.learn.pytorch.datasets import ChannelSelect
from bob.learn.pytorch.datasets import ChannelSelect, RandomHorizontalFlipImage
#==============================================================================
#==============================================================================
@@ -36,17 +36,38 @@ from bob.learn.pytorch.datasets import ChannelSelect
@@ -36,17 +36,38 @@ from bob.learn.pytorch.datasets import ChannelSelect
data_folder_train='/idiap/temp/ageorge/WMCA/preprocessed/'
data_folder_train='/idiap/temp/ageorge/WMCA/preprocessed/'
 
output_base_path='/idiap/temp/ageorge/Pytorch_WMCA/MCCNNv1_new_2/'
 
 
unseen_protocols=['','-LOO_fakehead','-LOO_flexiblemask','-LOO_glasses','-LOO_papermask','-LOO_prints','-LOO_replay','-LOO_rigidmask']
 
 
PROTOCOL_INDEX=0
 
####################################################################
 
frames=50
frames=50
extension='.h5'
extension='.h5'
train_groups=['train'] # only 'train' group is used for training the network
train_groups=['train'] # only 'train' group is used for training the network
protocols="grandtest-color*depth*infrared*thermal-{}".format(frames) # makeup is excluded anyway here
val_groups=['dev']
 
 
do_crossvalidation=True
 
#=======================
 
 
if do_crossvalidation:
 
phases=['train','val']
 
else:
 
phases=['train']
 
 
groups={"train":['train'],"val":['dev']}
 
 
 
 
protocols="grandtest-color-50"+unseen_protocols[PROTOCOL_INDEX] # makeup is excluded anyway here
exlude_attacks_list=["makeup"]
exlude_attacks_list=["makeup"]
bob_hldi_instance_train = BatlPadDatabase(
bob_hldi_instance = BatlPadDatabase(
protocol=protocols,
protocol=protocols,
original_directory=data_folder_train,
original_directory=data_folder_train,
original_extension=extension,
original_extension=extension,
@@ -58,50 +79,71 @@ bob_hldi_instance_train = BatlPadDatabase(
@@ -58,50 +79,71 @@ bob_hldi_instance_train = BatlPadDatabase(
#==============================================================================
#==============================================================================
# Initialize the torch dataset, subselect channels from the pretrained files if needed.
# Initialize the torch dataset, subselect channels from the pretrained files if needed.
SELECTED_CHANNELS = [0,1,2,3] # selects color, depth, infrared and thermal
SELECTED_CHANNELS = [0,1,2,3]
 
####################################################################
img_transform_train = transforms.Compose([ChannelSelect(selected_channels = SELECTED_CHANNELS),transforms.ToPILImage(),transforms.RandomHorizontalFlip(),transforms.ToTensor()])# Add p=0.5 later
dataset = DataFolder(data_folder=data_folder_train,
img_transform={}
transform=img_transform_train,
extension='.hdf5',
bob_hldi_instance=bob_hldi_instance_train,
groups=train_groups,
protocol=protocols,
purposes=['real', 'attack'],
allow_missing_files=True)
#==============================================================================
img_transform['train'] = transforms.Compose([ChannelSelect(selected_channels = SELECTED_CHANNELS),RandomHorizontalFlipImage(p=0.5),transforms.ToTensor()])
# Load the architecture
NUM_CHANNELS = 4
img_transform['val'] = transforms.Compose([ChannelSelect(selected_channels = SELECTED_CHANNELS),transforms.ToTensor()])
 
 
dataset={}
 
 
for phase in phases:
 
 
dataset[phase] = DataFolder(data_folder=data_folder_train,
 
transform=img_transform[phase],
 
extension='.hdf5',
 
bob_hldi_instance=bob_hldi_instance,
 
groups=groups[phase],
 
protocol=protocols,
 
purposes=['real', 'attack'],
 
allow_missing_files=True)
assert(len(SELECTED_CHANNELS)==NUM_CHANNELS)
network=MCCNN(num_channels = NUM_CHANNELS)
#==============================================================================
#==============================================================================
# Specify other training parameters
# Specify other training parameters
batch_size = 64
NUM_CHANNELS = len(SELECTED_CHANNELS)
num_workers = 4
 
ADAPTED_LAYERS = 'conv1-block1-group1-ffc'
 
####################################################################
 
ADAPT_REF_CHANNEL = False
 
####################################################################
 
 
 
 
batch_size = 32
 
num_workers = 0
epochs=25
epochs=25
learning_rate=0.0001
learning_rate=0.0001
seed = 3
seed = 3
output_dir = 'training_mccn'
use_gpu = False
use_gpu = False
adapted_layers = 'conv1-group1-block1-ffc'
adapted_layers = ADAPTED_LAYERS
adapt_reference_channel = False
adapt_reference_channel = ADAPT_REF_CHANNEL
verbose = 2
verbose = 2
 
UID = "_".join([str(i) for i in SELECTED_CHANNELS])+"_"+str(ADAPT_REF_CHANNEL)+"_"+ADAPTED_LAYERS+"_"+str(NUM_CHANNELS)+"_"+protocols
 
training_logs= output_base_path+UID+'/train_log_dir/'
 
output_dir = output_base_path+UID
 
#==============================================================================
 
# Load the architecture
 
 
 
assert(len(SELECTED_CHANNELS)==NUM_CHANNELS)
 
 
network=MCCNN(num_channels = NUM_CHANNELS)
#==============================================================================
#==============================================================================
"""
"""
Note: Running in GPU
Note: Running in GPU
jman submit --queue gpu \
jman submit --queue gpu \
--name mccnn \
--name mccnnv2 \
--log-dir /idiap/user/ageorge/WORK/COMMON_ENV_PAD_BATL_DB/training_mccn/logs/ \
--log-dir /idiap/temp/ageorge/Pytorch_WMCA/MCCNNv2/logs/ \
--environment="PYTHONUNBUFFERED=1" -- \
--environment="PYTHONUNBUFFERED=1" -- \
./bin/train_mccnn.py \
./bin/train_mccnn.py \
/idiap/user/ageorge/WORK/COMMON_ENV_PAD_BATL_DB/src/bob.learn.pytorch/bob/learn/pytorch/config/mccnn/wmca_mccnn.py --use-gpu -vvv
/idiap/user/ageorge/WORK/COMMON_ENV_PAD_BATL_DB/src/bob.learn.pytorch/bob/learn/pytorch/config/mccnn/wmca_mccnn.py --use-gpu -vvv
Loading