def BasicBlock(self, inputs, filters, strides=1, is_training=False, use_bn=True): expansion = 1 conv1_bn_relu = _conv(inputs, filters, [3, 3], strides, 'same', activation=tf.nn.relu, is_training=self.is_training, use_bn=self.use_bn) conv2_bn = _conv(conv1_bn_relu, filters, [3, 3], 1, 'same', activation=None, is_training=self.is_training, use_bn=self.use_bn) if strides != 1 or self.inplanes != filters * expansion: inputs = _conv(inputs, filters, [1, 1], strides, 'valid', activation=None, is_training=self.is_training, use_bn=self.use_bn) self.inplanes = filters * expansion out = tf.nn.relu(conv2_bn + inputs) return out
def _build_model(self, inputs): with tf.variable_scope('mobilenet'): # mobilenet v2 # c2, c3, c4, c5 = mobilenet.MobileNetV2(inputs=inputs, is_training=self.is_training).forward() # mobilenet v3 c2, c3, c4, c5, cls = mobilenet_v3.mobilenet_v3_small(inputs=inputs, is_training=self.is_training) p5 = _conv(c5, 24, [1, 1], is_training=self.is_training) up_p5 = upsampling(p5, method='resize') reduce_dim_c4 = _conv(c4, 24, [1, 1], is_training=self.is_training) p4 = 0.5 * up_p5 + 0.5 * reduce_dim_c4 up_p4 = upsampling(p4, method='resize') reduce_dim_c3 = _conv(c3, 24, [1, 1], is_training=self.is_training) p3 = 0.5 * up_p4 + 0.5 * reduce_dim_c3 up_p3 = upsampling(p3, method='resize') reduce_dim_c2 = _conv(c2, 24, [1, 1], is_training=self.is_training) p2 = 0.5 * up_p3 + 0.5 * reduce_dim_c2 features = _conv(p2, 24, [3, 3], is_training=self.is_training) with tf.variable_scope('detector'): hm = _conv(features, 24, [3, 3], is_training=self.is_training) hm = tf.layers.conv2d(hm, cfgs.NUM_CLASS, 1, 1, padding='valid', activation=tf.nn.sigmoid, bias_initializer=tf.constant_initializer(-np.log(99.)), name='hm') wh = _conv(features, 24, [3, 3], is_training=self.is_training) wh = tf.layers.conv2d(wh, 2, 1, 1, padding='valid', activation=None, name='wh') reg = _conv(features, 24, [3, 3], is_training=self.is_training) reg = tf.layers.conv2d(reg, 2, 1, 1, padding='valid', activation=None, name='reg') return hm, wh, reg, cls
def _build_model(self, inputs): with tf.variable_scope('resnet'): c2, c3, c4, c5 = resnet.resnet18(is_training=self.is_training).forward(inputs) p5 = _conv(c5, 128, [1,1], is_training=self.is_training, name="conv_p5") up_p5 = upsampling(p5) reduce_dim_c4 = _conv(c4, 128, [1,1], is_training=self.is_training, name="conv_c4") p4 = 0.5*up_p5 + 0.5*reduce_dim_c4 up_p4 = upsampling(p4) reduce_dim_c3 = _conv(c3, 128, [1,1], is_training=self.is_training, name="conv_c3") p3 = 0.5*up_p4 + 0.5*reduce_dim_c3 up_p3 = upsampling(p3) reduce_dim_c2 = _conv(c2, 128, [1,1], is_training=self.is_training, name="conv_c2") p2 = 0.5*up_p3 + 0.5*reduce_dim_c2 features = _conv(p2, 128, [3,3], is_training=self.is_training, name="conv_p2") # IDA-up # p2 = _conv(c2, 128, [1,1], is_training=self.is_training) # p3 = _conv(c3, 128, [1,1], is_training=self.is_training) # p4 = _conv(c4, 128, [1,1], is_training=self.is_training) # p5 = _conv(c5, 128, [1,1], is_training=self.is_training) # up_p3 = upsampling(p3, method='resize') # p2 = _conv(p2+up_p3, 128, [3,3], is_training=self.is_training) # up_p4 = upsampling(upsampling(p4, method='resize'), method='resize') # p2 = _conv(p2+up_p4, 128, [3,3], is_training=self.is_training) # up_p5 = upsampling(upsampling(upsampling(p5, method='resize'), method='resize'), method='resize') # features = _conv(p2+up_p5, 128, [3,3], is_training=self.is_training) with tf.variable_scope('detector'): print('feature shape: ', features.shape) hm = _conv(features, 64, [3,3], is_training=self.is_training, name="hm_conv_1") hm = _conv_nn(hm, cfg.num_classes, [1, 1], padding='VALID', activation = tf.nn.relu, name='hm_conv') #hm = _conv(hm, cfg.num_classes, [1, 1], padding="valid", name="hm") wh = _conv(features, 64, [3,3], is_training=self.is_training, name="wh_conv_1") #wh = tf.layers.conv2d(wh, 2, 1, 1, padding='valid', activation = None, bias_initializer=tf.constant_initializer(-np.log(99.)), name='wh') wh = _conv_nn(wh, 2, [1, 1], padding='VALID', activation = tf.nn.relu, name="wh_conv") #wh = tf.reshape(wh, [-1, wh.shape[1], wh.shape[2], wh.shape[3]]) #wh = tf.layers.conv2d(wh, 2, 1, 1, padding='valid', activation = None, name='wh') #wh = _conv(wh, 2, [1, 1], padding="valid", name="wh") reg = _conv(features, 64, [3,3], is_training=self.is_training, name="reg_conv_1") #reg = tf.layers.conv2d(reg, 2, 1, 1, padding='valid', activation = None, bias_initializer=tf.constant_initializer(-np.log(99.)), name='reg') reg = _conv_nn(reg, 2, [1, 1], padding='VALID', activation = tf.nn.relu, name="reg_conv") #reg = tf.reshape(reg, [-1, reg.shape[1], reg.shape[2], reg.shape[3]]) #reg = _conv(reg, 2, [1, 1], padding="valid", name="reg") return hm, wh, reg
def _layer0(self, inputs, filters, kernel_size=(7, 7)): outputs = _conv(inputs, filters, [7, 7], 2, 'same', activation=tf.nn.relu, is_training=self.is_training, use_bn=self.use_bn) outputs = tf.layers.max_pooling2d(outputs, pool_size=3, strides=2, padding='same') return outputs
def Bottleneck(self, inputs, filters, strides=1, is_training=False, use_bn=True): expansion = 4 conv1_bn_relu = _conv(inputs, filters, [1, 1], 1, 'VALID', activation=tf.nn.relu, is_training=self.is_training, use_bn=self.use_bn) conv2_bn_relu = _conv(conv1_bn_relu, filters, [3, 3], strides, 'SAME', activation=tf.nn.relu, is_training=self.is_training, use_bn=self.use_bn) conv3_bn = _conv(conv2_bn_relu, filters * expansion, [1, 1], 1, 'VALID', activation=None, is_training=self.is_training, use_bn=self.use_bn) if strides != 1 or self.inplanes != filters * expansion: inputs = _conv(inputs, filters * expansion, [1, 1], strides, 'VALID', activation=None, is_training=self.is_training, use_bn=self.use_bn) self.inplanes = filters * expansion out = tf.nn.relu(conv3_bn + inputs) return out
def BasicBlock(self, inputs, filters, strides=1, is_training=False, use_bn=True): expansion = 1 conv1_bn_relu = _conv(inputs, filters, [3, 3], strides, 'SAME', activation=tf.nn.relu, is_training=self.is_training, use_bn=self.use_bn, name="conv" + str(self.counter)) self.counter += 1 conv2_bn = _conv(conv1_bn_relu, filters, [3, 3], 1, 'SAME', activation=None, is_training=self.is_training, use_bn=self.use_bn, name="conv" + str(self.counter)) self.counter += 1 if strides != 1 or self.inplanes != filters * expansion: inputs = _conv(inputs, filters, [1, 1], strides, 'VALID', activation=None, is_training=self.is_training, use_bn=self.use_bn, name="conv" + str(self.counter)) self.counter += 1 self.inplanes = filters * expansion out = tf.nn.relu(conv2_bn + inputs) return out
def _build_model(self, inputs): with tf.variable_scope('resnet'): c2, c3, c4, c5 = resnet.resnet34(is_training=self.is_training).forward(inputs) p5 = _conv(c5, 128, [1,1], is_training=self.is_training) up_p5 = upsampling(p5, method='resize') reduce_dim_c4 = _conv(c4, 128, [1,1], is_training=self.is_training) p4 = 0.5*up_p5 + 0.5*reduce_dim_c4 up_p4 = upsampling(p4, method='resize') reduce_dim_c3 = _conv(c3, 128, [1,1], is_training=self.is_training) p3 = 0.5*up_p4 + 0.5*reduce_dim_c3 up_p3 = upsampling(p3, method='resize') reduce_dim_c2 = _conv(c2, 128, [1,1], is_training=self.is_training) p2 = 0.5*up_p3 + 0.5*reduce_dim_c2 features = _conv(p2, 128, [3,3], is_training=self.is_training) # IDA-up # p2 = _conv(c2, 128, [1,1], is_training=self.is_training) # p3 = _conv(c3, 128, [1,1], is_training=self.is_training) # p4 = _conv(c4, 128, [1,1], is_training=self.is_training) # p5 = _conv(c5, 128, [1,1], is_training=self.is_training) # up_p3 = upsampling(p3, method='resize') # p2 = _conv(p2+up_p3, 128, [3,3], is_training=self.is_training) # up_p4 = upsampling(upsampling(p4, method='resize'), method='resize') # p2 = _conv(p2+up_p4, 128, [3,3], is_training=self.is_training) # up_p5 = upsampling(upsampling(upsampling(p5, method='resize'), method='resize'), method='resize') # features = _conv(p2+up_p5, 128, [3,3], is_training=self.is_training) with tf.variable_scope('detector'): hm = _conv(features, 64, [3,3], is_training=self.is_training) hm = tf.layers.conv2d(hm, cfg.num_classes, 1, 1, padding='valid', activation = tf.nn.sigmoid, bias_initializer=tf.constant_initializer(-np.log(99.)), name='hm') wh = _conv(features, 64, [3,3], is_training=self.is_training) wh = tf.layers.conv2d(wh, 2, 1, 1, padding='valid', activation = None, name='wh') reg = _conv(features, 64, [3,3], is_training=self.is_training) reg = tf.layers.conv2d(reg, 2, 1, 1, padding='valid', activation = None, name='reg') return hm, wh, reg
def _build_model(self, inputs): with tf.variable_scope('dla'): assert self.net_name in ["dla_34"] if self.net_name == "dla_34": features = dla_net.DLAnet( is_training=self.is_training).forward(inputs) with tf.variable_scope('detector'): hm = _conv(features, 64, [3, 3], is_training=self.is_training) hm = tf.layers.conv2d( hm, cfg.num_classes, 1, 1, padding='valid', activation=tf.nn.sigmoid, bias_initializer=tf.constant_initializer(-np.log(99.)), name='hm') wh = _conv(features, 64, [3, 3], is_training=self.is_training) wh = tf.layers.conv2d(wh, 2, 1, 1, padding='valid', activation=None, name='wh') reg = _conv(features, 64, [3, 3], is_training=self.is_training) reg = tf.layers.conv2d(reg, 2, 1, 1, padding='valid', activation=None, name='reg') return hm, wh, reg
def _layer0(self, inputs, filters, kernel_size=(7, 7)): outputs = _conv(inputs, filters, [7, 7], 2, 'SAME', activation=tf.nn.relu, is_training=self.is_training, use_bn=self.use_bn, name="conv" + str(self.counter)) self.counter += 1 outputs = tf.layers.max_pooling2d(outputs, pool_size=3, strides=2, padding='SAME') print('Counter: ', self.counter) self.first_layer = outputs return outputs