diff --git a/bob/learn/tensorflow/network/FaceNet.py b/bob/learn/tensorflow/network/FaceNet.py index 7d499f174b9c5cd6a474e60d2437194baeaa424e..87358634590379570607860c6792d3998cf1924e 100644 --- a/bob/learn/tensorflow/network/FaceNet.py +++ b/bob/learn/tensorflow/network/FaceNet.py @@ -184,13 +184,13 @@ class FaceNet(SequenceNetwork): self.add(MaxPooling(name="pooling6", shape=pool6_shape)) self.add(FullyConnected(name="fc1", output_dim=fc1_output, - activation=tf.nn.tanh, + activation=tf.nn.relu, weights_initialization=Xavier(seed=seed, use_gpu=self.use_gpu), bias_initialization=Constant(use_gpu=self.use_gpu) )) self.add(FullyConnected(name="fc2", output_dim=fc2_output, - activation=tf.nn.tanh, + activation=tf.nn.relu, weights_initialization=Xavier(seed=seed, use_gpu=self.use_gpu), bias_initialization=Constant(use_gpu=self.use_gpu) )) diff --git a/bob/learn/tensorflow/network/SequenceNetwork.py b/bob/learn/tensorflow/network/SequenceNetwork.py index d755297174020fe21c27508e3267a8b14133c4c6..8c7ecf954da355ddf66f4a3bc00d773256acbff2 100644 --- a/bob/learn/tensorflow/network/SequenceNetwork.py +++ b/bob/learn/tensorflow/network/SequenceNetwork.py @@ -220,7 +220,12 @@ class SequenceNetwork(six.with_metaclass(abc.ABCMeta, object)): hdf5.set('input_divide', self.input_divide) hdf5.set('input_subtract', self.input_subtract) - def load(self, hdf5, shape=None, session=None): + def turn_gpu_onoff(self, state=True): + for k in self.sequence_net: + self.sequence_net[k].weights_initialization.use_gpu = state + self.sequence_net[k].bias_initialization.use_gpu = state + + def load(self, hdf5, shape=None, session=None, batch=1): """ Load the network @@ -240,12 +245,15 @@ class SequenceNetwork(six.with_metaclass(abc.ABCMeta, object)): self.input_divide = hdf5.read('input_divide') self.input_subtract = hdf5.read('input_subtract') - # Saving the architecture + # Loading architecture self.sequence_net = pickle.loads(hdf5.read('architecture')) self.deployment_shape = hdf5.read('deployment_shape') + self.turn_gpu_onoff(False) + if shape is None: shape = self.deployment_shape + shape[0] = batch # Loading variables place_holder = tf.placeholder(tf.float32, shape=shape, name="load") diff --git a/bob/learn/tensorflow/script/train_siamese_casia_webface.py b/bob/learn/tensorflow/script/train_siamese_casia_webface.py index 90c53f4c178f0c91ae12e0e65ffaba1cba332381..34af660c0bbc175a864ace5bdb3f0987c13b4bb0 100644 --- a/bob/learn/tensorflow/script/train_siamese_casia_webface.py +++ b/bob/learn/tensorflow/script/train_siamese_casia_webface.py @@ -60,11 +60,16 @@ def main(): # input_shape=[125, 125, 3], # batch_size=BATCH_SIZE) - train_data_shuffler = TripletWithFastSelectionDisk(train_file_names, train_labels, + #train_data_shuffler = TripletWithFastSelectionDisk(train_file_names, train_labels, + # input_shape=[112, 112, 3], + # batch_size=BATCH_SIZE) + + train_data_shuffler = TripletDisk(train_file_names, train_labels, input_shape=[112, 112, 3], batch_size=BATCH_SIZE) + # Preparing train set directory = "/idiap/temp/tpereira/DEEP_FACE/CASIA_WEBFACE/mobio/preprocessed" validation_objects = sorted(db_mobio.objects(protocol="male", groups="dev"), key=lambda x: x.id) @@ -91,13 +96,13 @@ def main(): # snapshot=VALIDATION_TEST, # optimizer=optimizer) - loss = TripletLoss(margin=0.5) + loss = TripletLoss(margin=0.2) trainer = TripletTrainer(architecture=architecture, loss=loss, iterations=ITERATIONS, - base_learning_rate=0.1, + base_learning_rate=0.05, prefetch=False, - temp_dir="./LOGS_CASIA/triplet-cnn-fast-selection") + temp_dir="/idiap/temp/tpereira/CNN_MODELS/triplet-cnn-RANDOM-selection-gpu") - trainer.train(train_data_shuffler, validation_data_shuffler) - #trainer.train(train_data_shuffler) + #trainer.train(train_data_shuffler, validation_data_shuffler) + trainer.train(train_data_shuffler) diff --git a/bob/learn/tensorflow/trainers/Trainer.py b/bob/learn/tensorflow/trainers/Trainer.py index e93403e4c44c7707cdf91a70cc1a7c2b7baa23fd..6cce163cdb55a10bceef05ce0e9f5cb05f948f16 100644 --- a/bob/learn/tensorflow/trainers/Trainer.py +++ b/bob/learn/tensorflow/trainers/Trainer.py @@ -14,8 +14,8 @@ from tensorflow.core.framework import summary_pb2 import time from bob.learn.tensorflow.datashuffler.OnlineSampling import OnLineSampling -os.environ["CUDA_VISIBLE_DEVICES"] = "3,2,0,1" -#os.environ["CUDA_VISIBLE_DEVICES"] = "" +#os.environ["CUDA_VISIBLE_DEVICES"] = "1,3,0,2" +os.environ["CUDA_VISIBLE_DEVICES"] = "" logger = bob.core.log.setup("bob.learn.tensorflow")