Skip to content
This repository has been archived by the owner on Jan 7, 2025. It is now read-only.

Commit

Permalink
Merge pull request #94 from idealo/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
cfrancesco authored Jan 7, 2020
2 parents fcd6a6d + 37b1868 commit 5ee2a14
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 48 deletions.
3 changes: 2 additions & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
[bumpversion]
current_version = 2.1.0
current_version = 2.1.1
commit = False
tag = True

[bumpversion:file:setup.py]

[bumpversion:file:ISR/__init__.py]

2 changes: 1 addition & 1 deletion ISR/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from . import assistant

__version__ = '2.1.0'
__version__ = '2.1.1'
19 changes: 6 additions & 13 deletions ISR/models/cut_vgg19.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from keras.models import Model
from keras.applications.vgg19 import VGG19
from keras.layers import Input
from tensorflow.keras.models import Model
from tensorflow.keras.applications.vgg19 import VGG19
from ISR.utils.logger import get_logger


Expand Down Expand Up @@ -36,15 +35,9 @@ def _cut_vgg(self):
layers selected by self.layers_to_extract.
"""

vgg = VGG19(weights='imagenet', include_top=False)
vgg = VGG19(weights='imagenet', include_top=False, input_shape=self.input_shape)
vgg.trainable = False
collect = []
for i in self.layers_to_extract:
collect.append(vgg.layers[i].output)

vgg.outputs = collect
hr = Input(shape=self.input_shape)
features = vgg(hr)
self.model = Model(inputs=hr, outputs=features)
self.model.name = 'feature_extractor'
outputs = [vgg.layers[i].output for i in self.layers_to_extract]
self.model = Model([vgg.input], outputs)
self.model._name = 'feature_extractor'
self.name = 'vgg19' # used in weights naming
12 changes: 6 additions & 6 deletions ISR/models/discriminator.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from keras.layers import concatenate, Flatten, Input, Activation, Dense, Conv2D, BatchNormalization
from keras.layers.advanced_activations import LeakyReLU
from keras.models import Model
from keras.optimizers import Adam
import tensorflow as tf
from tensorflow.keras.layers import concatenate, Flatten, Input, Activation, Dense, Conv2D, BatchNormalization, LeakyReLU
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam


class Discriminator:
Expand All @@ -16,7 +16,7 @@ class Discriminator:
Attributes:
model: Keras model.
name: name used to identify what discriminator is used during GANs training.
model.name: identifies this network as the discriminator network
model._name: identifies this network as the discriminator network
in the compound model built by the trainer class.
block_param: dictionary, determines the number of filters and the strides for each
conv block.
Expand All @@ -33,7 +33,7 @@ def __init__(self, patch_size, kernel_size=3):
self.model = self._build_disciminator()
optimizer = Adam(0.0002, 0.5)
self.model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
self.model.name = 'discriminator'
self.model._name = 'discriminator'
self.name = 'srgan-large'

def _conv_block(self, input, filters, strides, batch_norm=True, count=None):
Expand Down
12 changes: 6 additions & 6 deletions ISR/models/rdn.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import tensorflow as tf
from keras.initializers import RandomUniform
from keras.layers import concatenate, Input, Activation, Add, Conv2D, Lambda, UpSampling2D
from keras.models import Model
from tensorflow.keras.initializers import RandomUniform
from tensorflow.keras.layers import concatenate, Input, Activation, Add, Conv2D, Lambda, UpSampling2D
from tensorflow.keras.models import Model
from ISR.models.imagemodel import ImageModel


Expand Down Expand Up @@ -37,7 +37,7 @@ class RDN(ImageModel):
x: integer, the scaling factor.
model: Keras model of the RDN.
name: name used to identify what upscaling network is used during training.
model.name: identifies this network as the generator network
model._name: identifies this network as the generator network
in the compound model built by the trainer class.
"""

Expand All @@ -64,7 +64,7 @@ def __init__(
minval=-init_extreme_val, maxval=init_extreme_val, seed=None
)
self.model = self._build_rdn()
self.model.name = 'generator'
self.model._name = 'generator'
self.name = 'rdn'

def _upsampling_block(self, input_layer):
Expand All @@ -90,7 +90,7 @@ def _pixel_shuffle(self, input_layer):
kernel_initializer=self.initializer,
)(input_layer)
return Lambda(
lambda x: tf.depth_to_space(x, block_size=self.scale, data_format='NHWC'),
lambda x: tf.nn.depth_to_space(x, block_size=self.scale, data_format='NHWC'),
name='PixelShuffle',
)(x)

Expand Down
12 changes: 6 additions & 6 deletions ISR/models/rrdn.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import tensorflow as tf
from keras.initializers import RandomUniform
from keras.layers import UpSampling2D, concatenate, Input, Activation, Add, Conv2D, Lambda
from keras.models import Model
from tensorflow.keras.initializers import RandomUniform
from tensorflow.keras.layers import UpSampling2D, concatenate, Input, Activation, Add, Conv2D, Lambda
from tensorflow.keras.models import Model
from ISR.models.imagemodel import ImageModel


Expand Down Expand Up @@ -39,7 +39,7 @@ class RRDN(ImageModel):
x: integer, the scaling factor.
model: Keras model of the RRDN.
name: name used to identify what upscaling network is used during training.
model.name: identifies this network as the generator network
model._name: identifies this network as the generator network
in the compound model built by the trainer class.
"""

Expand All @@ -59,7 +59,7 @@ def __init__(
self.kernel_size = kernel_size
self.patch_size = patch_size
self.model = self._build_rdn()
self.model.name = 'generator'
self.model._name = 'generator'
self.name = 'rrdn'

def _dense_block(self, input_layer, d, t):
Expand Down Expand Up @@ -122,7 +122,7 @@ def _pixel_shuffle(self, input_layer):
name='PreShuffle',
)(input_layer)
return Lambda(
lambda x: tf.depth_to_space(x, block_size=self.scale, data_format='NHWC'),
lambda x: tf.nn.depth_to_space(x, block_size=self.scale, data_format='NHWC'),
name='PixelShuffle',
)(x)

Expand Down
13 changes: 6 additions & 7 deletions ISR/train/trainer.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import yaml
import numpy as np
from time import time
from tqdm import tqdm
from keras.models import Model
from keras.layers import Input
from keras.optimizers import Adam
from keras.callbacks import TensorBoard
from keras import backend as K
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras import backend as K
from ISR.utils.datahandler import DataHandler
from ISR.utils.train_helper import TrainerHelper
from ISR.utils.metrics import PSNR
Expand Down Expand Up @@ -292,7 +291,7 @@ def train(self, epochs, steps_per_epoch, batch_size, monitored_metrics):
self
) # load_weights, creates folders, creates basename

self.tensorboard = TensorBoard(log_dir=self.helper.callback_paths['logs'])
self.tensorboard = TensorBoard(log_dir=str(self.helper.callback_paths['logs']))
self.tensorboard.set_model(self.model)

# validation data
Expand Down
2 changes: 1 addition & 1 deletion ISR/utils/metrics.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import keras.backend as K
import tensorflow.keras.backend as K


def PSNR(y_true, y_pred, MAXp=1):
Expand Down
4 changes: 2 additions & 2 deletions ISR/utils/train_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ def _save_weights(self, epoch, generator, discriminator=None, metric=None, best=
(self.weights_name['generator'].name).format(metric='', epoch=epoch + 1)
)
# CANT SAVE MODEL DUE TO TF LAYER INSIDE LAMBDA (PIXELSHUFFLE)
generator.save_weights(gen_path)
generator.save_weights(gen_path.as_posix())
if discriminator:
if best:
discr_path = self.weights_name['discriminator'].with_name(
Expand All @@ -193,7 +193,7 @@ def _save_weights(self, epoch, generator, discriminator=None, metric=None, best=
discr_path = self.weights_name['discriminator'].with_name(
(self.weights_name['discriminator'].name).format(metric='', epoch=epoch + 1)
)
discriminator.model.save_weights(discr_path)
discriminator.model.save_weights(discr_path.as_posix())
try:
self._remove_old_weights(self.max_n_other_weights, max_best=self.max_n_best_weights)
except Exception as e:
Expand Down
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@

setup(
name='ISR',
version='2.1.0',
version='2.1.1',
author='Francesco Cardinale',
author_email='[email protected]',
description='Image Super Resolution',
long_description=long_description,
license='Apache 2.0',
install_requires=['imageio', 'Keras==2.2.4', 'numpy==1.16.2', 'tensorflow==1.13.1', 'tqdm'],
install_requires=['imageio', 'numpy', 'tensorflow==2.0.0', 'tqdm', 'pyaml'],
extras_require={
'tests': ['pytest==4.3.0', 'pytest-cov==2.6.1'],
'docs': ['mkdocs==1.0.4', 'mkdocs-material==4.0.2'],
'gpu': ['tensorflow-gpu==1.13.1'],
'gpu': ['tensorflow-gpu==2.0.0'],
'dev': ['bumpversion==0.5.3'],
},
classifiers=[
Expand Down
2 changes: 1 addition & 1 deletion tests/models/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from ISR.models.rdn import RDN
from ISR.models.discriminator import Discriminator
from ISR.models.cut_vgg19 import Cut_VGG19
from keras.optimizers import Adam
from tensorflow.keras.optimizers import Adam


class ModelsClassTest(unittest.TestCase):
Expand Down
2 changes: 1 addition & 1 deletion tests/utils/test_metrics.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import unittest
import numpy as np
import keras.backend as K
import tensorflow.keras.backend as K
from ISR.utils.metrics import PSNR


Expand Down

0 comments on commit 5ee2a14

Please sign in to comment.