From ee32fe3c8bf1cd0964af2d45a52aff32d3ea4202 Mon Sep 17 00:00:00 2001 From: Tiago Freitas Pereira <tiagofrepereira@gmail.com> Date: Wed, 11 Oct 2017 14:52:44 +0200 Subject: [PATCH] I don't know why I'm commiting this. Suddenly everything was updated with nothing --- .gitignore | 0 .gitlab-ci.yml | 0 LICENSE | 0 MANIFEST.in | 0 README.rst | 0 bob/__init__.py | 0 bob/learn/__init__.py | 0 bob/learn/tensorflow/__init__.py | 0 .../analyzers/ExperimentAnalizer.py | 0 .../tensorflow/analyzers/SoftmaxAnalizer.py | 0 bob/learn/tensorflow/analyzers/__init__.py | 0 bob/learn/tensorflow/datashuffler/Base.py | 12 +-- .../datashuffler/DataAugmentation.py | 0 bob/learn/tensorflow/datashuffler/Disk.py | 0 .../tensorflow/datashuffler/DiskAudio.py | 0 .../datashuffler/ImageAugmentation.py | 0 bob/learn/tensorflow/datashuffler/Memory.py | 0 .../tensorflow/datashuffler/Normalizer.py | 15 +++- .../tensorflow/datashuffler/OnlineSampling.py | 0 bob/learn/tensorflow/datashuffler/Siamese.py | 0 .../tensorflow/datashuffler/SiameseDisk.py | 0 .../tensorflow/datashuffler/SiameseMemory.py | 0 bob/learn/tensorflow/datashuffler/TFRecord.py | 2 +- .../tensorflow/datashuffler/TFRecordImage.py | 8 +- bob/learn/tensorflow/datashuffler/Triplet.py | 0 .../tensorflow/datashuffler/TripletDisk.py | 0 .../tensorflow/datashuffler/TripletMemory.py | 0 .../TripletWithFastSelectionDisk.py | 0 .../datashuffler/TripletWithSelectionDisk.py | 0 .../TripletWithSelectionMemory.py | 0 bob/learn/tensorflow/datashuffler/__init__.py | 3 +- .../tensorflow/initialization/__init__.py | 0 bob/learn/tensorflow/layers/Conv1D.py | 0 bob/learn/tensorflow/layers/Layer.py | 0 bob/learn/tensorflow/layers/Maxout.py | 0 bob/learn/tensorflow/layers/__init__.py | 0 bob/learn/tensorflow/loss/BaseLoss.py | 0 bob/learn/tensorflow/loss/ContrastiveLoss.py | 7 +- bob/learn/tensorflow/loss/NegLogLoss.py | 0 .../tensorflow/loss/TripletAverageLoss.py | 0 .../tensorflow/loss/TripletFisherLoss.py | 0 bob/learn/tensorflow/loss/TripletLoss.py | 0 bob/learn/tensorflow/loss/__init__.py | 0 bob/learn/tensorflow/network/Chopra.py | 0 bob/learn/tensorflow/network/Dummy.py | 0 bob/learn/tensorflow/network/Embedding.py | 0 .../tensorflow/network/InceptionResnetV1.py | 0 .../tensorflow/network/InceptionResnetV2.py | 0 bob/learn/tensorflow/network/LightCNN29.py | 0 bob/learn/tensorflow/network/LightCNN9.py | 0 bob/learn/tensorflow/network/MLP.py | 0 bob/learn/tensorflow/network/__init__.py | 0 bob/learn/tensorflow/network/utils.py | 0 bob/learn/tensorflow/script/__init__.py | 0 .../tensorflow/script/compute_statistics.py | 0 .../tensorflow/script/db_to_tfrecords.py | 11 ++- .../tensorflow/script/lfw_db_to_tfrecords.py | 70 ++++++++---------- bob/learn/tensorflow/script/load_and_debug.py | 0 bob/learn/tensorflow/script/train.py | 8 +- bob/learn/tensorflow/test/__init__.py | 0 .../tensorflow/test/data/cnn_mnist/checkpoint | 0 .../tensorflow/test/data/cnn_mnist/model.ckp | Bin .../test/data/cnn_mnist/model.ckp.meta | Bin .../cnn_mnist/model.ckp_sequence_net.pickle | 0 .../data/dummy_audio/attack_sentence01.wav | Bin .../data/dummy_audio/genuine_sentence01.wav | Bin .../data/dummy_database/m301_01_p01_i0_0.hdf5 | Bin .../data/dummy_database/m301_01_p02_i0_0.hdf5 | Bin .../data/dummy_database/m304_01_p01_i0_0.hdf5 | Bin .../data/dummy_database/m304_02_f12_i0_0.hdf5 | Bin .../test/data/dummy_verify_config.py | 0 .../test/data/train_scripts/siamese.py | 0 .../test/data/train_scripts/softmax.py | 0 .../test/data/train_scripts/triplet.py | 0 bob/learn/tensorflow/test/test_cnn.py | 0 .../tensorflow/test/test_cnn_other_losses.py | 45 ++++++++--- .../tensorflow/test/test_cnn_prefetch.py | 0 .../test/test_cnn_pretrained_model.py | 0 bob/learn/tensorflow/test/test_cnn_scratch.py | 0 .../test_cnn_trainable_variables_select.py | 0 .../tensorflow/test/test_datashuffler.py | 0 .../test/test_datashuffler_augmentation.py | 0 .../tensorflow/test/test_db_to_tfrecords.py | 0 bob/learn/tensorflow/test/test_dnn.py | 0 bob/learn/tensorflow/test/test_inception.py | 0 bob/learn/tensorflow/test/test_layers.py | 0 .../tensorflow/test/test_train_script.py | 0 bob/learn/tensorflow/test/test_utils.py | 0 .../tensorflow/trainers/SiameseTrainer.py | 6 ++ bob/learn/tensorflow/trainers/Trainer.py | 22 ++++-- .../tensorflow/trainers/TripletTrainer.py | 0 bob/learn/tensorflow/trainers/__init__.py | 0 .../tensorflow/trainers/learning_rate.py | 0 bob/learn/tensorflow/utils/__init__.py | 0 bob/learn/tensorflow/utils/session.py | 0 bob/learn/tensorflow/utils/singleton.py | 0 bob/learn/tensorflow/utils/util.py | 0 bootstrap-buildout.py | 0 buildout.cfg | 0 develop.cfg | 0 doc/conf.py | 0 doc/extra-intersphinx.txt | 0 doc/img/favicon.ico | Bin doc/img/logo.png | Bin doc/index.rst | 0 doc/nitpick-exceptions.txt | 0 doc/py_api.rst | 0 doc/references.rst | 0 doc/user_guide.rst | 0 requirements.txt | 0 setup.py | 0 version.txt | 0 112 files changed, 140 insertions(+), 69 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .gitlab-ci.yml mode change 100644 => 100755 LICENSE mode change 100644 => 100755 MANIFEST.in mode change 100644 => 100755 README.rst mode change 100644 => 100755 bob/__init__.py mode change 100644 => 100755 bob/learn/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/analyzers/ExperimentAnalizer.py mode change 100644 => 100755 bob/learn/tensorflow/analyzers/SoftmaxAnalizer.py mode change 100644 => 100755 bob/learn/tensorflow/analyzers/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/Base.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/DataAugmentation.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/Disk.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/DiskAudio.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/ImageAugmentation.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/Memory.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/Normalizer.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/OnlineSampling.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/Siamese.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/SiameseDisk.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/SiameseMemory.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/TFRecord.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/TFRecordImage.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/Triplet.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/TripletDisk.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/TripletMemory.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/TripletWithFastSelectionDisk.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/TripletWithSelectionDisk.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/TripletWithSelectionMemory.py mode change 100644 => 100755 bob/learn/tensorflow/datashuffler/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/initialization/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/layers/Conv1D.py mode change 100644 => 100755 bob/learn/tensorflow/layers/Layer.py mode change 100644 => 100755 bob/learn/tensorflow/layers/Maxout.py mode change 100644 => 100755 bob/learn/tensorflow/layers/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/loss/BaseLoss.py mode change 100644 => 100755 bob/learn/tensorflow/loss/ContrastiveLoss.py mode change 100644 => 100755 bob/learn/tensorflow/loss/NegLogLoss.py mode change 100644 => 100755 bob/learn/tensorflow/loss/TripletAverageLoss.py mode change 100644 => 100755 bob/learn/tensorflow/loss/TripletFisherLoss.py mode change 100644 => 100755 bob/learn/tensorflow/loss/TripletLoss.py mode change 100644 => 100755 bob/learn/tensorflow/loss/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/network/Chopra.py mode change 100644 => 100755 bob/learn/tensorflow/network/Dummy.py mode change 100644 => 100755 bob/learn/tensorflow/network/Embedding.py mode change 100644 => 100755 bob/learn/tensorflow/network/InceptionResnetV1.py mode change 100644 => 100755 bob/learn/tensorflow/network/InceptionResnetV2.py mode change 100644 => 100755 bob/learn/tensorflow/network/LightCNN29.py mode change 100644 => 100755 bob/learn/tensorflow/network/LightCNN9.py mode change 100644 => 100755 bob/learn/tensorflow/network/MLP.py mode change 100644 => 100755 bob/learn/tensorflow/network/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/network/utils.py mode change 100644 => 100755 bob/learn/tensorflow/script/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/script/compute_statistics.py mode change 100644 => 100755 bob/learn/tensorflow/script/lfw_db_to_tfrecords.py mode change 100644 => 100755 bob/learn/tensorflow/script/load_and_debug.py mode change 100644 => 100755 bob/learn/tensorflow/script/train.py mode change 100644 => 100755 bob/learn/tensorflow/test/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/test/data/cnn_mnist/checkpoint mode change 100644 => 100755 bob/learn/tensorflow/test/data/cnn_mnist/model.ckp mode change 100644 => 100755 bob/learn/tensorflow/test/data/cnn_mnist/model.ckp.meta mode change 100644 => 100755 bob/learn/tensorflow/test/data/cnn_mnist/model.ckp_sequence_net.pickle mode change 100644 => 100755 bob/learn/tensorflow/test/data/dummy_audio/attack_sentence01.wav mode change 100644 => 100755 bob/learn/tensorflow/test/data/dummy_audio/genuine_sentence01.wav mode change 100644 => 100755 bob/learn/tensorflow/test/data/dummy_database/m301_01_p01_i0_0.hdf5 mode change 100644 => 100755 bob/learn/tensorflow/test/data/dummy_database/m301_01_p02_i0_0.hdf5 mode change 100644 => 100755 bob/learn/tensorflow/test/data/dummy_database/m304_01_p01_i0_0.hdf5 mode change 100644 => 100755 bob/learn/tensorflow/test/data/dummy_database/m304_02_f12_i0_0.hdf5 mode change 100644 => 100755 bob/learn/tensorflow/test/data/dummy_verify_config.py mode change 100644 => 100755 bob/learn/tensorflow/test/data/train_scripts/siamese.py mode change 100644 => 100755 bob/learn/tensorflow/test/data/train_scripts/softmax.py mode change 100644 => 100755 bob/learn/tensorflow/test/data/train_scripts/triplet.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_cnn.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_cnn_other_losses.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_cnn_prefetch.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_cnn_pretrained_model.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_cnn_scratch.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_cnn_trainable_variables_select.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_datashuffler.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_datashuffler_augmentation.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_db_to_tfrecords.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_dnn.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_inception.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_layers.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_train_script.py mode change 100644 => 100755 bob/learn/tensorflow/test/test_utils.py mode change 100644 => 100755 bob/learn/tensorflow/trainers/SiameseTrainer.py mode change 100644 => 100755 bob/learn/tensorflow/trainers/Trainer.py mode change 100644 => 100755 bob/learn/tensorflow/trainers/TripletTrainer.py mode change 100644 => 100755 bob/learn/tensorflow/trainers/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/trainers/learning_rate.py mode change 100644 => 100755 bob/learn/tensorflow/utils/__init__.py mode change 100644 => 100755 bob/learn/tensorflow/utils/session.py mode change 100644 => 100755 bob/learn/tensorflow/utils/singleton.py mode change 100644 => 100755 bob/learn/tensorflow/utils/util.py mode change 100644 => 100755 bootstrap-buildout.py mode change 100644 => 100755 buildout.cfg mode change 100644 => 100755 develop.cfg mode change 100644 => 100755 doc/conf.py mode change 100644 => 100755 doc/extra-intersphinx.txt mode change 100644 => 100755 doc/img/favicon.ico mode change 100644 => 100755 doc/img/logo.png mode change 100644 => 100755 doc/index.rst mode change 100644 => 100755 doc/nitpick-exceptions.txt mode change 100644 => 100755 doc/py_api.rst mode change 100644 => 100755 doc/references.rst mode change 100644 => 100755 doc/user_guide.rst mode change 100644 => 100755 requirements.txt mode change 100644 => 100755 setup.py mode change 100644 => 100755 version.txt diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/MANIFEST.in b/MANIFEST.in old mode 100644 new mode 100755 diff --git a/README.rst b/README.rst old mode 100644 new mode 100755 diff --git a/bob/__init__.py b/bob/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/__init__.py b/bob/learn/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/__init__.py b/bob/learn/tensorflow/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/analyzers/ExperimentAnalizer.py b/bob/learn/tensorflow/analyzers/ExperimentAnalizer.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/analyzers/SoftmaxAnalizer.py b/bob/learn/tensorflow/analyzers/SoftmaxAnalizer.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/analyzers/__init__.py b/bob/learn/tensorflow/analyzers/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/Base.py b/bob/learn/tensorflow/datashuffler/Base.py old mode 100644 new mode 100755 index fbf44654..39af44ae --- a/bob/learn/tensorflow/datashuffler/Base.py +++ b/bob/learn/tensorflow/datashuffler/Base.py @@ -191,10 +191,10 @@ class Base(object): dst = numpy.reshape(dst, self.input_shape[1:4]) else: #dst = numpy.resize(data, self.bob_shape) # Scaling with numpy, because bob is c,w,d instead of w,h,c - #dst = numpy.zeros(shape=(data.shape[0], data.shape[1], 3)) - #dst[:, :, 0] = data[:, :, 0] - #dst[:, :, 1] = data[:, :, 0] - #dst[:, :, 2] = data[:, :, 0] + dst = numpy.zeros(shape=(data.shape[0], data.shape[1], 3)) + dst[:, :, 0] = data[:, :, 0] + dst[:, :, 1] = data[:, :, 0] + dst[:, :, 2] = data[:, :, 0] # TODO: LAME SOLUTION #if data.shape[0] != 3: # GRAY SCALE IMAGES IN A RGB DATABASE @@ -204,8 +204,8 @@ class Base(object): #step_data[1, ...] = data[:, :, 0] #step_data[2, ...] = data[:, :, 0] #data = step_data - dst = numpy.zeros(shape=(self.bob_shape)) - bob.ip.base.scale(data, dst) + #dst = numpy.zeros(shape=(self.bob_shape)) + #bob.ip.base.scale(data, dst) return dst else: diff --git a/bob/learn/tensorflow/datashuffler/DataAugmentation.py b/bob/learn/tensorflow/datashuffler/DataAugmentation.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/Disk.py b/bob/learn/tensorflow/datashuffler/Disk.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/DiskAudio.py b/bob/learn/tensorflow/datashuffler/DiskAudio.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/ImageAugmentation.py b/bob/learn/tensorflow/datashuffler/ImageAugmentation.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/Memory.py b/bob/learn/tensorflow/datashuffler/Memory.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/Normalizer.py b/bob/learn/tensorflow/datashuffler/Normalizer.py old mode 100644 new mode 100755 index 74e264ef..3c8935e8 --- a/bob/learn/tensorflow/datashuffler/Normalizer.py +++ b/bob/learn/tensorflow/datashuffler/Normalizer.py @@ -1,8 +1,8 @@ #!/usr/bin/env python # vim: set fileencoding=utf-8 : # @author: Tiago de Freitas Pereira <tiago.pereira@idiap.ch> -# @date: Mon 07 Nov 2016 09:39:36 CET +import numpy class ScaleFactor(object): """ @@ -40,3 +40,16 @@ class Linear(object): return x + +class PerImageStandarization(object): + + def __init__(self): + pass + + def __call__(self, x): + + mean = numpy.mean(x) + std = numpy.std(x) + + return (x-mean)/max(std, 1/numpy.sqrt(numpy.prod(x.shape))) + diff --git a/bob/learn/tensorflow/datashuffler/OnlineSampling.py b/bob/learn/tensorflow/datashuffler/OnlineSampling.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/Siamese.py b/bob/learn/tensorflow/datashuffler/Siamese.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/SiameseDisk.py b/bob/learn/tensorflow/datashuffler/SiameseDisk.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/SiameseMemory.py b/bob/learn/tensorflow/datashuffler/SiameseMemory.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/TFRecord.py b/bob/learn/tensorflow/datashuffler/TFRecord.py old mode 100644 new mode 100755 index 34ad207f..337a49e6 --- a/bob/learn/tensorflow/datashuffler/TFRecord.py +++ b/bob/learn/tensorflow/datashuffler/TFRecord.py @@ -28,7 +28,7 @@ class TFRecord(object): input_dtype=tf.float32, batch_size=32, seed=10, - prefetch_capacity=50, + prefetch_capacity=1000, prefetch_threads=5): # Setting the seed for the pseudo random number generator diff --git a/bob/learn/tensorflow/datashuffler/TFRecordImage.py b/bob/learn/tensorflow/datashuffler/TFRecordImage.py old mode 100644 new mode 100755 index 1c581f61..0b4f41a0 --- a/bob/learn/tensorflow/datashuffler/TFRecordImage.py +++ b/bob/learn/tensorflow/datashuffler/TFRecordImage.py @@ -39,7 +39,7 @@ class TFRecordImage(TFRecord): input_dtype=tf.uint8, batch_size=32, seed=10, - prefetch_capacity=50, + prefetch_capacity=1000, prefetch_threads=5, shuffle=True, normalization=False, @@ -73,6 +73,7 @@ class TFRecordImage(TFRecord): self.shuffle = shuffle self.normalization = normalization self.random_crop = random_crop + self.random_flip = random_flip self.gray_scale = gray_scale def __call__(self, element, from_queue=False): @@ -127,6 +128,9 @@ class TFRecordImage(TFRecord): if self.random_crop: image = tf.image.resize_image_with_crop_or_pad(image, self.output_shape[1], self.output_shape[2]) + + if self.random_flip: + image = tf.image.random_flip_left_right(image) # normalizing data if self.normalization: @@ -138,7 +142,7 @@ class TFRecordImage(TFRecord): if self.shuffle: data_ph, label_ph = tf.train.shuffle_batch([image, label], batch_size=self.batch_size, capacity=self.prefetch_capacity, num_threads=self.prefetch_threads, - min_after_dequeue=1, name="shuffle_batch") + min_after_dequeue=self.prefetch_capacity//2, name="shuffle_batch") else: data_ph, label_ph = tf.train.batch([image, label], batch_size=self.batch_size, capacity=self.prefetch_capacity, num_threads=self.prefetch_threads, name="batch") diff --git a/bob/learn/tensorflow/datashuffler/Triplet.py b/bob/learn/tensorflow/datashuffler/Triplet.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/TripletDisk.py b/bob/learn/tensorflow/datashuffler/TripletDisk.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/TripletMemory.py b/bob/learn/tensorflow/datashuffler/TripletMemory.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/TripletWithFastSelectionDisk.py b/bob/learn/tensorflow/datashuffler/TripletWithFastSelectionDisk.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/TripletWithSelectionDisk.py b/bob/learn/tensorflow/datashuffler/TripletWithSelectionDisk.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/TripletWithSelectionMemory.py b/bob/learn/tensorflow/datashuffler/TripletWithSelectionMemory.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/datashuffler/__init__.py b/bob/learn/tensorflow/datashuffler/__init__.py old mode 100644 new mode 100755 index 0065af47..40fa89e9 --- a/bob/learn/tensorflow/datashuffler/__init__.py +++ b/bob/learn/tensorflow/datashuffler/__init__.py @@ -18,12 +18,13 @@ from .TripletWithSelectionDisk import TripletWithSelectionDisk from .DataAugmentation import DataAugmentation from .ImageAugmentation import ImageAugmentation -from .Normalizer import ScaleFactor, MeanOffset, Linear +from .Normalizer import ScaleFactor, MeanOffset, Linear, PerImageStandarization from .DiskAudio import DiskAudio from .TFRecord import TFRecord from .TFRecordImage import TFRecordImage + # gets sphinx autodoc done right - don't remove it def __appropriate__(*args): """Says object was actually declared here, an not on the import module. diff --git a/bob/learn/tensorflow/initialization/__init__.py b/bob/learn/tensorflow/initialization/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/layers/Conv1D.py b/bob/learn/tensorflow/layers/Conv1D.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/layers/Layer.py b/bob/learn/tensorflow/layers/Layer.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/layers/Maxout.py b/bob/learn/tensorflow/layers/Maxout.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/layers/__init__.py b/bob/learn/tensorflow/layers/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/loss/BaseLoss.py b/bob/learn/tensorflow/loss/BaseLoss.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/loss/ContrastiveLoss.py b/bob/learn/tensorflow/loss/ContrastiveLoss.py old mode 100644 new mode 100755 index 0d1655b2..4c25a981 --- a/bob/learn/tensorflow/loss/ContrastiveLoss.py +++ b/bob/learn/tensorflow/loss/ContrastiveLoss.py @@ -48,10 +48,11 @@ class ContrastiveLoss(BaseLoss): one = tf.constant(1.0) d = compute_euclidean_distance(left_feature, right_feature) - between_class = tf.multiply(one - label, tf.square(d)) # (1-Y)*(d^2) + within_class = tf.multiply(one - label, tf.square(d)) # (1-Y)*(d^2) + + max_part = tf.square(tf.maximum(self.contrastive_margin - d, 0)) - - within_class = tf.multiply(label, max_part) # (Y) * max((margin - d)^2, 0) + between_class = tf.multiply(label, max_part) # (Y) * max((margin - d)^2, 0) loss = 0.5 * (within_class + between_class) diff --git a/bob/learn/tensorflow/loss/NegLogLoss.py b/bob/learn/tensorflow/loss/NegLogLoss.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/loss/TripletAverageLoss.py b/bob/learn/tensorflow/loss/TripletAverageLoss.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/loss/TripletFisherLoss.py b/bob/learn/tensorflow/loss/TripletFisherLoss.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/loss/TripletLoss.py b/bob/learn/tensorflow/loss/TripletLoss.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/loss/__init__.py b/bob/learn/tensorflow/loss/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/Chopra.py b/bob/learn/tensorflow/network/Chopra.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/Dummy.py b/bob/learn/tensorflow/network/Dummy.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/Embedding.py b/bob/learn/tensorflow/network/Embedding.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/InceptionResnetV1.py b/bob/learn/tensorflow/network/InceptionResnetV1.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/InceptionResnetV2.py b/bob/learn/tensorflow/network/InceptionResnetV2.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/LightCNN29.py b/bob/learn/tensorflow/network/LightCNN29.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/LightCNN9.py b/bob/learn/tensorflow/network/LightCNN9.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/MLP.py b/bob/learn/tensorflow/network/MLP.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/__init__.py b/bob/learn/tensorflow/network/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/network/utils.py b/bob/learn/tensorflow/network/utils.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/script/__init__.py b/bob/learn/tensorflow/script/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/script/compute_statistics.py b/bob/learn/tensorflow/script/compute_statistics.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/script/db_to_tfrecords.py b/bob/learn/tensorflow/script/db_to_tfrecords.py index 7289c6d0..10cc5c19 100644 --- a/bob/learn/tensorflow/script/db_to_tfrecords.py +++ b/bob/learn/tensorflow/script/db_to_tfrecords.py @@ -3,7 +3,7 @@ """Converts Bio and PAD datasets to TFRecords file formats. Usage: - %(prog)s <config_files>... + %(prog)s <config_files>... [--allow-missing-files] %(prog)s --help %(prog)s --version @@ -117,6 +117,7 @@ def main(argv=None): args = docopt(docs, argv=argv, version=version) config_files = args['<config_files>'] config = read_config_file(config_files) + allow_missing_files = args['--allow-missing-files'] # Sets-up logging verbosity = getattr(config, 'verbose', 0) @@ -148,6 +149,14 @@ def main(argv=None): path = f.make_path(data_dir, data_extension) data = reader(path) + + if data is None: + if allow_missing_files: + logger.debug("... Processing original data file '{0}' was not successful".format(path)) + continue + else: + raise RuntimeError("Preprocessing of file '{0}' was not successful".format(path)) + label = file_to_label(f) if one_file_one_sample: diff --git a/bob/learn/tensorflow/script/lfw_db_to_tfrecords.py b/bob/learn/tensorflow/script/lfw_db_to_tfrecords.py old mode 100644 new mode 100755 index b0625ed5..9447bf62 --- a/bob/learn/tensorflow/script/lfw_db_to_tfrecords.py +++ b/bob/learn/tensorflow/script/lfw_db_to_tfrecords.py @@ -12,7 +12,7 @@ Options: <data-path> Path that contains the features --extension=<arg> Default feature extension [default: .hdf5] --protocol=<arg> One of the LFW protocols [default: view1] - --data-type=<arg> TFRecord data type [default: float32] + --data-type=<arg> TFRecord data type [default: uint8] The possible protocol options are the following: @@ -49,25 +49,14 @@ def file_to_label(client_ids, f): def get_pairs(all_pairs, match=True): - pairs = [] + enroll = [] + probe = [] for p in all_pairs: if p.is_match == match: - pairs.append(p.enroll_file) - pairs.append(p.probe_file) + enroll.append(p.enroll_file) + probe.append(p.probe_file) - return pairs - -def bob2skimage(bob_image): - """ - Convert bob color image to the skcit image - """ - - skimage = numpy.zeros(shape=(bob_image.shape[1], bob_image.shape[2], bob_image.shape[0])) - skimage[:, :, 2] = bob_image[0, :, :] - skimage[:, :, 1] = bob_image[1, :, :] - skimage[:, :, 0] = bob_image[2, :, :] - - return skimage + return enroll, probe def main(argv=None): @@ -80,9 +69,6 @@ def main(argv=None): protocol = args['--protocol'] data_type = args['--data-type'] - #Setting the reader - reader = bob.io.base.load - # Sets-up logging if args['--verbose']: verbosity = 2 @@ -90,28 +76,36 @@ def main(argv=None): # Loading LFW models database = bob.db.lfw.Database() - all_pairs = get_pairs(database.pairs(protocol=protocol), match=True) - client_ids = list(set([f.client_id for f in all_pairs])) - client_ids = dict(zip(client_ids, range(len(client_ids)))) + enroll, probe = get_pairs(database.pairs(protocol=protocol), match=True) + #client_ids = list(set([f.client_id for f in all_pairs])) - create_directories_safe(os.path.dirname(output_file)) - - n_files = len(all_pairs) - with tf.python_io.TFRecordWriter(output_file) as writer: - for i, f in enumerate(all_pairs): - logger.info('Processing file %d out of %d', i + 1, n_files) - - path = f.make_path(data_path, extension) - #data = reader(path).astype('uint8').tostring() - img = bob2skimage(reader(path)).astype(data_type) - data = img.tostring() + client_ids = list(set([f.client_id for f in enroll] + [f.client_id for f in probe])) + client_ids = dict(zip(client_ids, range(len(client_ids)))) - feature = {'train/data': _bytes_feature(data), - 'train/label': _int64_feature(file_to_label(client_ids, f))} + create_directories_safe(os.path.dirname(output_file)) - example = tf.train.Example(features=tf.train.Features(feature=feature)) - writer.write(example.SerializeToString()) + import ipdb; ipdb.set_trace() + n_files = len(enroll) + with tf.python_io.TFRecordWriter(output_file) as writer: + for e, p, i in zip(enroll, probe, range(len(enroll)) ): + logger.info('Processing pair %d out of %d', i + 1, n_files) + + e_path = e.make_path(data_path, extension) + p_path = p.make_path(data_path, extension) + + if os.path.exists(p_path) and os.path.exists(e_path): + for path in [e_path, p_path]: + data = bob.io.image.to_matplotlib(bob.io.base.load(path)).astype(data_type) + data = data.tostring() + + feature = {'train/data': _bytes_feature(data), + 'train/label': _int64_feature(file_to_label(client_ids, f))} + + example = tf.train.Example(features=tf.train.Features(feature=feature)) + writer.write(example.SerializeToString()) + else: + logger.debug("... Processing original data file '{0}' was not successful".format(path)) if __name__ == '__main__': main() diff --git a/bob/learn/tensorflow/script/load_and_debug.py b/bob/learn/tensorflow/script/load_and_debug.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/script/train.py b/bob/learn/tensorflow/script/train.py old mode 100644 new mode 100755 index d94706e1..d177aca7 --- a/bob/learn/tensorflow/script/train.py +++ b/bob/learn/tensorflow/script/train.py @@ -87,6 +87,11 @@ def main(): if hasattr(config, 'validation_data_shuffler'): validation_data_shuffler = config.validation_data_shuffler + prelogits = None + if hasattr(config, 'prelogits'): + prelogits = config.prelogits + + trainer = config.Trainer(config.train_data_shuffler, validation_data_shuffler=validation_data_shuffler, validate_with_embeddings=validate_with_embeddings, @@ -128,6 +133,7 @@ def main(): validation_graph=validation_graph, loss=config.loss, learning_rate=config.learning_rate, - optimizer=config.optimizer) + optimizer=config.optimizer, + prelogits=prelogits) trainer.train() diff --git a/bob/learn/tensorflow/test/__init__.py b/bob/learn/tensorflow/test/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/cnn_mnist/checkpoint b/bob/learn/tensorflow/test/data/cnn_mnist/checkpoint old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/cnn_mnist/model.ckp b/bob/learn/tensorflow/test/data/cnn_mnist/model.ckp old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/cnn_mnist/model.ckp.meta b/bob/learn/tensorflow/test/data/cnn_mnist/model.ckp.meta old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/cnn_mnist/model.ckp_sequence_net.pickle b/bob/learn/tensorflow/test/data/cnn_mnist/model.ckp_sequence_net.pickle old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/dummy_audio/attack_sentence01.wav b/bob/learn/tensorflow/test/data/dummy_audio/attack_sentence01.wav old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/dummy_audio/genuine_sentence01.wav b/bob/learn/tensorflow/test/data/dummy_audio/genuine_sentence01.wav old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/dummy_database/m301_01_p01_i0_0.hdf5 b/bob/learn/tensorflow/test/data/dummy_database/m301_01_p01_i0_0.hdf5 old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/dummy_database/m301_01_p02_i0_0.hdf5 b/bob/learn/tensorflow/test/data/dummy_database/m301_01_p02_i0_0.hdf5 old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/dummy_database/m304_01_p01_i0_0.hdf5 b/bob/learn/tensorflow/test/data/dummy_database/m304_01_p01_i0_0.hdf5 old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/dummy_database/m304_02_f12_i0_0.hdf5 b/bob/learn/tensorflow/test/data/dummy_database/m304_02_f12_i0_0.hdf5 old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/dummy_verify_config.py b/bob/learn/tensorflow/test/data/dummy_verify_config.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/train_scripts/siamese.py b/bob/learn/tensorflow/test/data/train_scripts/siamese.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/train_scripts/softmax.py b/bob/learn/tensorflow/test/data/train_scripts/softmax.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/data/train_scripts/triplet.py b/bob/learn/tensorflow/test/data/train_scripts/triplet.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_cnn.py b/bob/learn/tensorflow/test/test_cnn.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_cnn_other_losses.py b/bob/learn/tensorflow/test/test_cnn_other_losses.py old mode 100644 new mode 100755 index 9519aea6..bc5f3ae7 --- a/bob/learn/tensorflow/test/test_cnn_other_losses.py +++ b/bob/learn/tensorflow/test/test_cnn_other_losses.py @@ -55,7 +55,7 @@ def scratch_network_embeding_example(train_data_shuffler, reuse=False, get_embed return logits, prelogits -def test_cnn_tfrecord_embedding_validation(): +def test_center_loss_tfrecord_embedding_validation(): tf.reset_default_graph() train_data, train_labels, validation_data, validation_labels = load_mnist() @@ -128,31 +128,58 @@ def test_cnn_tfrecord_embedding_validation(): ) trainer.train() - - - os.remove(tfrecords_filename) - os.remove(tfrecords_filename_val) - """ assert True tf.reset_default_graph() del trainer assert len(tf.global_variables())==0 + + del train_data_shuffler + del validation_data_shuffler + + ##### 2 Continuing the training + + # Creating the CNN using the TFRecord as input + train_data_shuffler = TFRecord(filename_queue=filename_queue, + batch_size=batch_size) + + validation_data_shuffler = TFRecord(filename_queue=filename_queue_val, + batch_size=2000) + + # One graph trainer + trainer = Trainer(train_data_shuffler, + validation_data_shuffler=validation_data_shuffler, + validate_with_embeddings=True, + iterations=2, #It is supper fast + analizer=None, + temp_dir=directory) + + trainer.create_network_from_file(directory) + + import ipdb; ipdb.set_trace(); + + trainer.train() + + """ # Inference. TODO: Wrap this in a package file_name = os.path.join(directory, "model.ckp.meta") images = tf.placeholder(tf.float32, shape=(None, 28, 28, 1)) - graph = scratch_network_embeding_example(images, reuse=False) + graph ,_ = scratch_network_embeding_example(images, reuse=False) session = tf.Session() session.run(tf.global_variables_initializer()) saver = tf.train.import_meta_graph(file_name, clear_devices=True) saver.restore(session, tf.train.latest_checkpoint(os.path.dirname("./temp/cnn_scratch/"))) data = numpy.random.rand(2, 28, 28, 1).astype("float32") + assert session.run(graph, feed_dict={images: data}).shape == (2, 10) + """ - assert session.run(graph['logits'], feed_dict={images: data}).shape == (2, 10) + os.remove(tfrecords_filename) + os.remove(tfrecords_filename_val) tf.reset_default_graph() shutil.rmtree(directory) assert len(tf.global_variables())==0 - """ + + diff --git a/bob/learn/tensorflow/test/test_cnn_prefetch.py b/bob/learn/tensorflow/test/test_cnn_prefetch.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_cnn_pretrained_model.py b/bob/learn/tensorflow/test/test_cnn_pretrained_model.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_cnn_scratch.py b/bob/learn/tensorflow/test/test_cnn_scratch.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_cnn_trainable_variables_select.py b/bob/learn/tensorflow/test/test_cnn_trainable_variables_select.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_datashuffler.py b/bob/learn/tensorflow/test/test_datashuffler.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_datashuffler_augmentation.py b/bob/learn/tensorflow/test/test_datashuffler_augmentation.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_db_to_tfrecords.py b/bob/learn/tensorflow/test/test_db_to_tfrecords.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_dnn.py b/bob/learn/tensorflow/test/test_dnn.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_inception.py b/bob/learn/tensorflow/test/test_inception.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_layers.py b/bob/learn/tensorflow/test/test_layers.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_train_script.py b/bob/learn/tensorflow/test/test_train_script.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/test/test_utils.py b/bob/learn/tensorflow/test/test_utils.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/trainers/SiameseTrainer.py b/bob/learn/tensorflow/trainers/SiameseTrainer.py old mode 100644 new mode 100755 index 300b8a06..cde9bb5a --- a/bob/learn/tensorflow/trainers/SiameseTrainer.py +++ b/bob/learn/tensorflow/trainers/SiameseTrainer.py @@ -220,6 +220,7 @@ class SiameseTrainer(Trainer): def fit(self, step): feed_dict = self.get_feed_dict(self.train_data_shuffler) + _, l, bt_class, wt_class, lr, summary = self.session.run([ self.optimizer, self.predictor['loss'], self.predictor['between_class'], @@ -231,6 +232,11 @@ class SiameseTrainer(Trainer): def create_general_summary(self): + # Appending histograms for each trainable variables + #for var in tf.trainable_variables(): + for var in tf.global_variables(): + tf.summary.histogram(var.op.name, var) + # Train summary tf.summary.scalar('loss', self.predictor['loss']) tf.summary.scalar('between_class_loss', self.predictor['between_class']) diff --git a/bob/learn/tensorflow/trainers/Trainer.py b/bob/learn/tensorflow/trainers/Trainer.py old mode 100644 new mode 100755 index 8b7ebc2e..03ac1670 --- a/bob/learn/tensorflow/trainers/Trainer.py +++ b/bob/learn/tensorflow/trainers/Trainer.py @@ -84,6 +84,7 @@ class Trainer(object): self.summaries_train = None self.train_summary_writter = None self.thread_pool = None + self.centers = None # Validation data self.validation_summary_writter = None @@ -98,6 +99,7 @@ class Trainer(object): self.graph = None self.validation_graph = None + self.prelogits = None self.loss = None @@ -240,8 +242,10 @@ class Trainer(object): # TODO: SPECIFIC HACK FOR THE CENTER LOSS. I NEED TO FIND A CLEAN SOLUTION FOR THAT self.centers = None if prelogits is not None: - tf.add_to_collection("prelogits", prelogits) self.predictor, self.centers = self.loss(self.graph, prelogits, self.label_ph) + tf.add_to_collection("centers", self.centers) + tf.add_to_collection("prelogits", prelogits) + self.prelogits = prelogits else: self.predictor = self.loss(self.graph, self.label_ph) @@ -275,10 +279,6 @@ class Trainer(object): tf.add_to_collection("summaries_train", self.summaries_train) - # Appending histograms for each trainable variables - for var in tf.trainable_variables(): - tf.summary.histogram(var.op.name, var) - # Same business with the validation if self.validation_data_shuffler is not None: self.validation_data_ph = self.validation_data_shuffler("data", from_queue=True) @@ -371,6 +371,10 @@ class Trainer(object): self.summaries_train = tf.get_collection("summaries_train")[0] self.global_step = tf.get_collection("global_step")[0] self.from_scratch = False + + if len(tf.get_collection("centers")) > 0: + self.centers = tf.get_collection("centers")[0] + self.prelogits = tf.get_collection("prelogits")[0] # Loading the validation bits if self.validation_data_shuffler is not None: @@ -378,7 +382,7 @@ class Trainer(object): self.validation_graph = tf.get_collection("validation_graph")[0] self.validation_data_ph = tf.get_collection("validation_data_ph")[0] - self.validation_label = tf.get_collection("validation_label_ph")[0] + self.validation_label_ph = tf.get_collection("validation_label_ph")[0] self.validation_predictor = tf.get_collection("validation_predictor")[0] self.summaries_validation = tf.get_collection("summaries_validation")[0] @@ -480,6 +484,12 @@ class Trainer(object): """ Creates a simple tensorboard summary with the value of the loss and learning rate """ + + # Appending histograms for each trainable variables + #for var in tf.trainable_variables(): + for var in tf.global_variables(): + tf.summary.histogram(var.op.name, var) + # Train summary tf.summary.scalar('loss', average_loss) tf.summary.scalar('lr', self.learning_rate) diff --git a/bob/learn/tensorflow/trainers/TripletTrainer.py b/bob/learn/tensorflow/trainers/TripletTrainer.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/trainers/__init__.py b/bob/learn/tensorflow/trainers/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/trainers/learning_rate.py b/bob/learn/tensorflow/trainers/learning_rate.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/utils/__init__.py b/bob/learn/tensorflow/utils/__init__.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/utils/session.py b/bob/learn/tensorflow/utils/session.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/utils/singleton.py b/bob/learn/tensorflow/utils/singleton.py old mode 100644 new mode 100755 diff --git a/bob/learn/tensorflow/utils/util.py b/bob/learn/tensorflow/utils/util.py old mode 100644 new mode 100755 diff --git a/bootstrap-buildout.py b/bootstrap-buildout.py old mode 100644 new mode 100755 diff --git a/buildout.cfg b/buildout.cfg old mode 100644 new mode 100755 diff --git a/develop.cfg b/develop.cfg old mode 100644 new mode 100755 diff --git a/doc/conf.py b/doc/conf.py old mode 100644 new mode 100755 diff --git a/doc/extra-intersphinx.txt b/doc/extra-intersphinx.txt old mode 100644 new mode 100755 diff --git a/doc/img/favicon.ico b/doc/img/favicon.ico old mode 100644 new mode 100755 diff --git a/doc/img/logo.png b/doc/img/logo.png old mode 100644 new mode 100755 diff --git a/doc/index.rst b/doc/index.rst old mode 100644 new mode 100755 diff --git a/doc/nitpick-exceptions.txt b/doc/nitpick-exceptions.txt old mode 100644 new mode 100755 diff --git a/doc/py_api.rst b/doc/py_api.rst old mode 100644 new mode 100755 diff --git a/doc/references.rst b/doc/references.rst old mode 100644 new mode 100755 diff --git a/doc/user_guide.rst b/doc/user_guide.rst old mode 100644 new mode 100755 diff --git a/requirements.txt b/requirements.txt old mode 100644 new mode 100755 diff --git a/setup.py b/setup.py old mode 100644 new mode 100755 diff --git a/version.txt b/version.txt old mode 100644 new mode 100755 -- GitLab