def _encoder(self, image): enc = res_encoder(image, layer_dims=self.encoder_dims, num_resblk=self.num_enc_resblk) texture_enc = enc shape_enc = enc # first convolution on common encoding if self.use_texture_conv: stride = 2 if self.texture_downsample else 1 texture_enc = tf.nn.relu(conv2d(texture_enc, self.texture_dims, 3, stride, name='enc_texture_conv')) else: assert self.texture_dims == self.encoder_dims, \ "Texture dim ({}) must match encoder dim ({}) " \ "if texture_conv is not used.".format(self.texture_dims, self.encoder_dims) assert not self.texture_downsample, \ "Must use texture_conv if texture_downsample." if self.use_shape_conv: shape_enc = tf.nn.relu(conv2d(shape_enc, self.shape_dims, 3, 1, name='enc_shape_conv')) else: assert self.shape_dims == self.encoder_dims, \ "Shape dim ({}) must match encoder dim ({}) " \ "if shape_conv is not used.".format(self.shape_dims, self.encoder_dims) for i in range(self.num_texture_resblk): name = 'texture_enc_{}'.format(i) if i == 0: # for backward compatibility name = 'texture_enc' texture_enc = residual_block(texture_enc, self.texture_dims, 3, 1, name) for i in range(self.num_shape_resblk): name = 'shape_enc_{}'.format(i) if i == 0: # for backward compatibility name = 'shape_enc' shape_enc = residual_block(shape_enc, self.shape_dims, 3, 1, name) if self.use_shape_deconv: shape_enc = deconv2d(shape_enc, 16,4,2) # W_t3 = weight_variable([4, 4, int(self.encoder_dims/2), int(self.encoder_dims)]) # b_t3 = bias_variable([3]) # shape_enc = conv2d_transpose_strided(shape_enc, W_t3, b_t3) up = tf.pad(shape_enc, [[0, 0], [1, 1], [1, 1], [0, 0]], "REFLECT") shape_enc = conv2d(up, 3, 3, 1, padding='VALID', name='use_shape_deconv_conv') return texture_enc, shape_enc
def _encoder(self, image): enc = res_encoder(image, layer_dims=self.encoder_dims, num_resblk=self.num_enc_resblk) texture_enc = enc shape_enc = enc # first convolution on common encoding if self.use_texture_conv: stride = 2 if self.texture_downsample else 1 texture_enc = tf.nn.relu( conv2d(texture_enc, self.texture_dims, 3, stride, name='enc_texture_conv')) else: assert self.texture_dims == self.encoder_dims, \ "Texture dim ({}) must match encoder dim ({}) " \ "if texture_conv is not used.".format(self.texture_dims, self.encoder_dims) assert not self.texture_downsample, \ "Must use texture_conv if texture_downsample." if self.use_shape_conv: shape_enc = tf.nn.relu( conv2d(shape_enc, self.shape_dims, 3, 1, name='enc_shape_conv')) else: assert self.shape_dims == self.encoder_dims, \ "Shape dim ({}) must match encoder dim ({}) " \ "if shape_conv is not used.".format(self.shape_dims, self.encoder_dims) for i in range(self.num_texture_resblk): name = 'texture_enc_{}'.format(i) if i == 0: # for backward compatibility name = 'texture_enc' texture_enc = residual_block(texture_enc, self.texture_dims, 3, 1, name) for i in range(self.num_shape_resblk): name = 'shape_enc_{}'.format(i) if i == 0: # for backward compatibility name = 'shape_enc' shape_enc = residual_block(shape_enc, self.shape_dims, 3, 1, name) return texture_enc, shape_enc