From 6d4910cc670dbba4c02e8eac5e0a42a9f611ed76 Mon Sep 17 00:00:00 2001 From: Tiago Freitas Pereira <tiagofrepereira@gmail.com> Date: Thu, 27 Oct 2016 10:38:28 +0200 Subject: [PATCH] Fixed Facenet --- bob/learn/tensorflow/network/FaceNet.py | 4 ++-- bob/learn/tensorflow/network/SequenceNetwork.py | 12 ++++++++++-- .../script/train_siamese_casia_webface.py | 17 +++++++++++------ bob/learn/tensorflow/trainers/Trainer.py | 4 ++-- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/bob/learn/tensorflow/network/FaceNet.py b/bob/learn/tensorflow/network/FaceNet.py index 7d499f17..87358634 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 d7552971..8c7ecf95 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 90c53f4c..34af660c 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 e93403e4..6cce163c 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") -- GitLab