resnet pyramid

This commit is contained in:
2023-03-02 17:40:14 +00:00
parent 532f5e12f4
commit ec51e5e7cb
7 changed files with 261 additions and 64 deletions
+42 -27
View File
@@ -131,9 +131,10 @@ class ResNetTypeI(tf.keras.Model):
super(ResNetTypeI, self).__init__()
self.reversed = reversed
self.labels = labels
self.layer_params = layer_params
if not reversed:
self.conv1 = tf.keras.layers.Conv2D(filters=32,
self.conv1 = tf.keras.layers.Conv2D(filters=32 if len(layer_params) > 1 else features,
kernel_size=(7, 7),
strides=2,
padding="same")
@@ -144,31 +145,36 @@ class ResNetTypeI(tf.keras.Model):
else:
self.conv1 = tf.keras.layers.Conv2DTranspose(filters=3 if labels is None else labels,
kernel_size=(7, 7),
strides=2,
strides=2 if len(layer_params) > 1 else 1,
padding="same")
self.bn1 = tf.keras.layers.BatchNormalization()
self.pool1 = tf.keras.layers.UpSampling2D()
self.layer1 = make_basic_block_layer(filter_num=32,
self.layer1 = make_basic_block_layer(filter_num=32 if len(layer_params) > 1 else (features if not is_cvae else features*2),
blocks=layer_params[0],
stride=1 if not reversed else 2,
upsample=reversed)
self.layer2 = make_basic_block_layer(filter_num=32,
blocks=layer_params[1],
stride=2,
upsample=reversed)
self.layer3 = make_basic_block_layer(filter_num=32,
blocks=layer_params[2],
stride=2,
upsample=reversed)
self.layer4 = make_basic_block_layer(filter_num=64,
blocks=layer_params[3],
stride=2,
upsample=reversed)
self.layer5 = make_basic_block_layer(filter_num=features if not is_cvae else features*2,
blocks=layer_params[4],
stride=2 if not reversed else 1,
upsample=reversed)
if len(layer_params) >= 2:
self.layer2 = make_basic_block_layer(filter_num=32,
blocks=layer_params[1],
stride=2,
upsample=reversed)
if len(layer_params) >= 3:
self.layer3 = make_basic_block_layer(filter_num=32,
blocks=layer_params[2],
stride=2,
upsample=reversed)
if len(layer_params) >= 4:
self.layer4 = make_basic_block_layer(filter_num=64,
blocks=layer_params[3],
stride=2,
upsample=reversed)
if len(layer_params) >= 5:
self.layer5 = make_basic_block_layer(filter_num=features if not is_cvae else features*2,
blocks=layer_params[4],
stride=2 if not reversed else 1,
upsample=reversed)
def call(self, inputs, training=None, mask=None):
if not self.reversed:
@@ -177,15 +183,24 @@ class ResNetTypeI(tf.keras.Model):
x = tf.nn.relu(x)
x = self.pool1(x)
x = self.layer1(x, training=training)
x = self.layer2(x, training=training)
x = self.layer3(x, training=training)
x = self.layer4(x, training=training)
x = self.layer5(x, training=training)
if len(self.layer_params) >= 2:
x = self.layer2(x, training=training)
if len(self.layer_params) >= 3:
x = self.layer3(x, training=training)
if len(self.layer_params) >= 4:
x = self.layer4(x, training=training)
if len(self.layer_params) >= 5:
x = self.layer5(x, training=training)
else:
x = self.layer5(inputs, training=training)
x = self.layer4(x, training=training)
x = self.layer3(x, training=training)
x = self.layer2(x, training=training)
x = inputs
if len(self.layer_params) >= 5:
x = self.layer5(x, training=training)
if len(self.layer_params) >= 4:
x = self.layer4(x, training=training)
if len(self.layer_params) >= 2:
x = self.layer3(x, training=training)
if len(self.layer_params) >= 3:
x = self.layer2(x, training=training)
x = self.layer1(x, training=training)
x = self.pool1(x)