예제 #1
0
    def bottom(self, inputs):
        """Transform input from data space to model space.

    Perform the Xception "Entry flow", which consists of two convolutional
    filter upscalings followed by three residually connected separable
    convolution blocks.

    Args:
      inputs: A Tensor with shape [batch, ...]
    Returns:
      body_input: A Tensor with shape [batch, ?, ?, body_input_depth].
    """
        with tf.variable_scope(self.name):

            def xnet_resblock(x, filters, res_relu, name):
                with tf.variable_scope(name):
                    y = common_layers.separable_conv_block(
                        x,
                        filters, [((1, 1), (3, 3)), ((1, 1), (3, 3))],
                        first_relu=True,
                        padding="SAME",
                        force2d=True,
                        name="sep_conv_block")
                    y = common_layers.pool(y, (3, 3),
                                           "MAX",
                                           "SAME",
                                           strides=(2, 2))
                    return y + common_layers.conv_block(x,
                                                        filters, [((1, 1),
                                                                   (1, 1))],
                                                        padding="SAME",
                                                        strides=(2, 2),
                                                        first_relu=res_relu,
                                                        force2d=True,
                                                        name="res_conv0")

            inputs = common_layers.standardize_images(inputs)
            # TODO(lukaszkaiser): summaries here don't work in multi-problem case yet.
            # tf.summary.image("inputs", inputs, max_outputs=2)
            x = common_layers.conv_block(inputs,
                                         32, [((1, 1), (3, 3))],
                                         first_relu=False,
                                         padding="SAME",
                                         strides=(2, 2),
                                         force2d=True,
                                         name="conv0")
            x = common_layers.conv_block(x,
                                         64, [((1, 1), (3, 3))],
                                         padding="SAME",
                                         force2d=True,
                                         name="conv1")
            x = xnet_resblock(x, min(128, self._body_input_depth), True,
                              "block0")
            x = xnet_resblock(x, min(256, self._body_input_depth), False,
                              "block1")
            return xnet_resblock(x, self._body_input_depth, False, "block2")
예제 #2
0
 def targets_bottom_simple(self, inputs):
     with tf.variable_scope(self.name):
         inputs = common_layers.standardize_images(inputs)
         if self._model_hparams.compress_steps > 0:
             kernel, strides = (2, 2), (2, 2)  # Crucial to not leak!
         else:
             kernel, strides = (1, 1), (1, 1)
         return common_layers.conv_block(inputs,
                                         self._body_input_depth,
                                         [((1, 1), kernel)],
                                         first_relu=False,
                                         strides=strides,
                                         force2d=True,
                                         name="small_image_conv")
예제 #3
0
  def bottom(self, inputs):
    """Transform input from data space to model space.

    Perform the Xception "Entry flow", which consists of two convolutional
    filter upscalings followed by three residually connected separable
    convolution blocks.

    Args:
      inputs: A Tensor with shape [batch, ...]
    Returns:
      body_input: A Tensor with shape [batch, ?, ?, body_input_depth].
    """
    with tf.variable_scope(self.name):

      def xnet_resblock(x, filters, res_relu, name):
        with tf.variable_scope(name):
          y = common_layers.separable_conv_block(
              x,
              filters, [((1, 1), (3, 3)), ((1, 1), (3, 3))],
              first_relu=True,
              padding="SAME",
              force2d=True,
              name="sep_conv_block")
          y = common_layers.pool(y, (3, 3), "MAX", "SAME", strides=(2, 2))
          return y + common_layers.conv_block(
              x,
              filters, [((1, 1), (1, 1))],
              padding="SAME",
              strides=(2, 2),
              first_relu=res_relu,
              force2d=True,
              name="res_conv0")

      inputs = common_layers.standardize_images(inputs)
      # TODO(lukaszkaiser): summaries here don't work in multi-problem case yet.
      # tf.summary.image("inputs", inputs, max_outputs=2)
      x = common_layers.conv_block(
          inputs,
          32, [((1, 1), (3, 3))],
          first_relu=False,
          padding="SAME",
          strides=(2, 2),
          force2d=True,
          name="conv0")
      x = common_layers.conv_block(
          x, 64, [((1, 1), (3, 3))], padding="SAME", force2d=True, name="conv1")
      x = xnet_resblock(x, min(128, self._body_input_depth), True, "block0")
      x = xnet_resblock(x, min(256, self._body_input_depth), False, "block1")
      return xnet_resblock(x, self._body_input_depth, False, "block2")
예제 #4
0
 def bottom(self, inputs):
     with tf.variable_scope(self.name):
         inputs = common_layers.standardize_images(inputs)
         # TODO(lukaszkaiser): summaries here don't work in multi-problem case yet.
         # tf.summary.image("inputs", inputs, max_outputs=2)
         if self._model_hparams.compress_steps > 0:
             strides = (2, 2)
         else:
             strides = (1, 1)
         return common_layers.conv_block(inputs,
                                         self._body_input_depth,
                                         [((1, 1), (3, 3))],
                                         first_relu=False,
                                         strides=strides,
                                         padding="SAME",
                                         force2d=True,
                                         name="small_image_conv")
예제 #5
0
 def bottom(self, inputs):
   with tf.variable_scope(self.name):
     inputs = common_layers.standardize_images(inputs)
     # TODO(lukaszkaiser): summaries here don't work in multi-problem case yet.
     # tf.summary.image("inputs", inputs, max_outputs=2)
     if self._model_hparams.compress_steps > 0:
       strides = (2, 2)
     else:
       strides = (1, 1)
     return common_layers.conv_block(
         inputs,
         self._body_input_depth, [((1, 1), (3, 3))],
         first_relu=False,
         strides=strides,
         padding="SAME",
         force2d=True,
         name="small_image_conv")
 def testStandardizeImages(self):
     x = np.random.rand(5, 7, 7, 3)
     with self.test_session() as session:
         y = common_layers.standardize_images(tf.constant(x))
         res = session.run(y)
     self.assertEqual(res.shape, (5, 7, 7, 3))
 def testStandardizeImages(self):
   x = np.random.rand(5, 7, 7, 3)
   with self.test_session() as session:
     y = common_layers.standardize_images(tf.constant(x))
     res = session.run(y)
   self.assertEqual(res.shape, (5, 7, 7, 3))