def reductionA(name, x): with tf.variable_scope(name) as scope: layer_ = max_pool('max_pool_0', x, k=3, s=2, padding='VALID') layer__ = convolution2d('cnn__0', x, 192, k=3, s=2, padding='VALID') layer___ = convolution2d('cnn___0', x, 224, k=1, s=1, padding='SAME') layer___ = convolution2d('cnn___1', layer___, 256, k=3, s=1, padding='SAME') layer___ = convolution2d('cnn___2', layer___, 385, k=3, s=2, padding='VALID') layer_join = tf.concat([layer_, layer__, layer___], axis=3, name='join') print 'layer_name :', 'join' print 'layer_shape :', layer_join.get_shape() return layer_join
def stem(name , x): with tf.variable_scope(name) as scope: layer=convolution2d('cnn_0',x,32,k=3,s=2 , padding='VALID') layer = convolution2d('cnn_1',layer, 32, k = 3, s = 1, padding = 'VALID') layer = convolution2d('cnn_2', layer, 64, k=3, s=1, padding='SAME') layer_1 = max_pool('max_3', layer, k=3, s=2, padding='VALID') layer_2 = convolution2d('cnn_3_1', layer, 96, k=3, s=2, padding='VALID') layer_join=tf.concat([layer_1,layer_2] , axis=3 , name='join') print 'layer_name :','join' print 'layer_shape :',layer_join.get_shape() return layer_join
def blockC(name, x): with tf.variable_scope(name) as scope: layer = avg_pool('avg_pool', x, k=2, s=1) layer = convolution2d('cnn', layer, 256, k=1, s=1) layer_ = convolution2d('cnn_0', x, 256, k=1, s=1) layer__ = convolution2d('cnn__0', x, 384, k=1, s=1) layer__0 = convolution2d_manual('cnn__1_0', layer__, 256, k_h=1, k_w=3, s=1) layer__1 = convolution2d_manual('cnn__1_1', layer__, 256, k_h=3, k_w=1, s=1) layer___ = convolution2d('cnn___0', x, 384, k=1, s=1) layer___ = convolution2d_manual('cnn___1', layer___, 448, k_h=1, k_w=3, s=1) layer___ = convolution2d_manual('cnn___2', layer___, 512, k_h=3, k_w=1, s=1) layer___0 = convolution2d_manual('cnn___3_0', layer___, 256, k_h=3, k_w=1, s=1) layer___1 = convolution2d_manual('cnn___3_1', layer___, 256, k_h=1, k_w=3, s=1) layer_join = tf.concat( [layer, layer_, layer__0, layer__1, layer___0, layer___1], axis=3, name='join') print 'layer_name :', 'join' print 'layer_shape :', layer_join.get_shape() return layer_join
def blockB(name, x): with tf.variable_scope(name) as scope: layer = avg_pool('avg_pool', x, k=2, s=1) layer = convolution2d('cnn', layer, 128, k=1, s=1) layer_ = convolution2d('cnn_0', x, 384, k=1, s=1) layer__ = convolution2d('cnn__0', x, 192, k=1, s=1) layer__ = convolution2d_manual('cnn__1', layer__, 224, k_h=1, k_w=7, s=1) layer__ = convolution2d_manual('cnn__2', layer__, 256, k_h=1, k_w=7, s=1) layer___ = convolution2d('cnn___0', x, 192, k=1, s=1) layer___ = convolution2d_manual('cnn___1', layer___, 192, k_h=1, k_w=7, s=1) layer___ = convolution2d_manual('cnn___2', layer___, 224, k_h=7, k_w=1, s=1) layer___ = convolution2d_manual('cnn___3', layer___, 224, k_h=1, k_w=7, s=1) layer___ = convolution2d_manual('cnn___4', layer___, 256, k_h=7, k_w=1, s=1) layer_join = tf.concat([layer, layer_, layer__, layer___], axis=3, name='join') print 'layer_name :', 'join' print 'layer_shape :', layer_join.get_shape() return layer_join
def stem_1(name , x ): with tf.variable_scope(name) as scope: layer = convolution2d('cnn_0', x, 64, k=1, s=1) layer = convolution2d('cnn_1', layer, 96, k=3, s=1, padding='VALID') layer_ = convolution2d('cnn__0', x, 64, k=1, s=1) layer_ = convolution2d_manual('cnn__1', layer_, 64, k_h=7,k_w=1, s=1) layer_ = convolution2d_manual('cnn__2', layer_, 64, k_h=1,k_w=7,s=1 ) layer_ = convolution2d('cnn__3', layer_, 96, k=3, s=1, padding='VALID') layer_join = tf.concat([layer, layer_], axis=3, name='join') print 'layer_name :','join' print 'layer_shape :',layer_join.get_shape() return layer_join
def resnet_blockC(name, x): with tf.variable_scope(name) as scope: layer = convolution2d('cnn0', x, 192, 1, 1) layer_ = convolution2d('cnn_0', x, 192, 1, 1) layer_ = convolution2d_manual('cnn_1', layer_, 192, k_h=1, k_w=3, s=1) layer_ = convolution2d_manual('cnn_2', layer_, 192, k_h=3, k_w=1, s=1) layer_join = tf.concat([layer, layer_], axis=3, name='join') layer_join = convolution2d('layer_join_cnn', layer_join, 1792, 1, 1) if x.get_shape()[-1] != layer_join.get_shape()[-1]: x=convolution2d('upscale_dimension',x, layer_join.get_shape()[-1] , k=1,s=1) layer_join = tf.add(x, layer_join, 'add') print 'layer_name :', 'join' print 'layer_shape :', layer_join.get_shape() return layer_join
def stem_2(name ,x ): with tf.variable_scope(name) as scope: layer= convolution2d('cnn_0' , x, 192,k=3,s=2,padding='VALID') layer_=max_pool('max__0' , x, k=3 , s=2 , padding = 'VALID') layer_join = tf.concat([layer , layer_] , axis = 3 ,name='join') print 'layer_name :','join' print 'layer_shape :',layer_join.get_shape() return layer_join
def rpn_bbox_layer(layer, n_anchors=9): with tf.variable_scope('bbox'): layer = convolution2d('rpn_bbox_conv', layer, out_ch=n_anchors * 4, k=1, act=None, s=1) layer = tf.identity(layer, name='cls_output') print '** cls layer shape : {}'.format(np.shape(layer)) #(1, ?, ?, 18) return layer
def simple_convnet(x_): print '###### Convolution Network building.... ' print kernels=[5, 3, 3, 3, 3] out_channels=[16, 16, 32, 64, 128] strides = [2, 2, 1, 2 ,1 ] layer=x_ for i in range(5): layer = convolution2d(name='conv_{}'.format(i), x=layer, out_ch=out_channels[i], k=kernels[i], s=strides[i], padding='SAME') top_conv = tf.identity(layer , 'top_conv') _feat_stride = np.prod(strides) return top_conv , _feat_stride
def simple_convnet(self, out_chs, kernels, strides, n_classes): layer = apply_aug_lv0(self.x_, aug_lv0, self.phase_train, crop_h=self.img_h, crop_w=self.img_w) layer = layer assert len(out_chs) == len(kernels) == len(strides) for i in range(len(out_chs)): layer = convolution2d('conv{}'.format(i), layer, out_chs[i], kernels[i], strides[i]) top_conv = tf.identity(layer, 'top_conv') self.logits = gap('gap', top_conv, n_classes)
def resnet_blockB(name , x): with tf.variable_scope(name) as scope: layer = convolution2d('cnn0', x, 32, 1, 1) layer_ = convolution2d('cnn_0', x, 32, 1, 1) layer_ = convolution2d('cnn_1', layer_, 32, 3, 1) layer__ = convolution2d('cnn__0', x, 32, 1, 1) layer__ = convolution2d('cnn__1', layer__, 32, 3, 1) layer__ = convolution2d('cnn__2', layer__, 32, 3, 1) layer_join=tf.concat([layer , layer_ , layer__] , axis=3 , name='join') layer_join=convolution2d('layer_join_cnn' , layer_join ,256, 1,1 ) if x.get_shape()[-1] != layer_join.get_shape()[-1]: x=convolution2d('upscale_dimension',x, layer_join.get_shape()[-1] , k=1,s=1) layer_join=tf.add(x,layer_join ) return layer_join
def reductionC(name ,x ): with tf.variable_scope(name) as scope: layer=max_pool('max_pool0' , x ,3,2 , padding='VALID') layer_=convolution2d('cnn_0',x , 256,1,1) layer_=convolution2d('cnn_1',layer_, 384 , 3,1 , padding='VALID') layer__ = convolution2d('cnn_0', x, 256, 1, 1) layer__ = convolution2d('cnn_1', layer__, 256, 3, 1 , padding='VALID') layer___= convolution2d('cnn__0',x, 256 , 1,1) layer___= convolution2d('cnn__1',layer___,256 , 3,1) layer___= convolution2d('cnn__2',layer___,256 , 3,1 , padding='VALID') layer_join= tf.concat([layer , layer_ , layer__ , layer___], axis=3 , name='join' ) return layer_join
def blockA(name , x): with tf.variable_scope(name) as scope: layer = avg_pool('avg_pool', x, k=2, s=1) layer = convolution2d('cnn', layer, 96, k=1, s=1) layer_ = convolution2d('cnn_0', x, 96, k=1, s=1) layer__ = convolution2d('cnn__0', x, 64, k=1, s=1) layer__ = convolution2d('cnn__1', layer__,96, k=3, s=1) layer___ = convolution2d('cnn___0', x,64, k=1, s=1) layer___ = convolution2d('cnn___1',layer___,96, k=3, s=1) layer___ = convolution2d('cnn___2',layer___,96, k=3, s=1) layer_join = tf.concat([layer, layer_, layer__, layer___], axis=3, name='join') print 'layer_name :', 'join' print 'layer_shape :', layer_join.get_shape() return layer_join
import numpy as np import utils from inception_v4 import stem, stem_1, stem_2, reductionB, reductionA, blockA, blockB, blockC, resnet_blockA, resnet_blockB, resnet_blockC ##########################setting############################ image_height, image_width, image_color_ch, n_classes, train_imgs, train_labs, test_imgs, test_labs = data.mnist_28x28( ) x_ = tf.placeholder(dtype=tf.float32, shape=[None, image_height, image_width, image_color_ch], name='x_') y_ = tf.placeholder(dtype=tf.int32, shape=[None, n_classes], name='y_') phase_train = tf.placeholder(dtype=tf.bool, name='phase_train') batch_size = 60 ##########################structure########################## layer, conv1_summary_tensor = convolution2d('conv1', x_, 64) #layer = batch_norm_1(layer, phase_train, 'bn0') layer = batch_norm_2(layer, phase_train, 'bn0') # best learning rate ==> 0.1 layer = max_pool('max_pool1', layer) layer, topconv_summary_tensor = convolution2d('top_conv', layer, 128) layer = batch_norm_2(layer, phase_train, 'bn1') # best learning rate ==> 0.01 batch norm이 많아지면 layer, fc_summary_tensor = affine('fully_connect', layer, 1024, keep_prob=0.5, phase_train=phase_train) layer = batch_norm_1(layer, phase_train, 'bn2') y_conv = logits('end_layer', layer, n_classes) merged = tf.summary.merge_all()
out_chs = [32, 32, 64, 64, 64, 128, 128, 128, 256, 256, 256, 512, 512] filters = [5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] strides = [2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] #for Mnist version pool_indices = [1, 4, 7, 10] out_chs = [32, 32, 64, 64, 64] filters = [5, 3, 5, 3, 3] strides = [2, 1, 2, 1, 1] #,1,1,1,1,1,1,1,1] #Building Network layer = x_ assert len(out_chs) == len(filters) n_layers = len(out_chs) for i in range(n_layers): layer = convolution2d('conv_{}'.format(i), layer, out_chs[i], s=1) if i in pool_indices: 'max pool' layer = max_pool('maxPool_{}'.format(i), layer) top_conv = tf.identity(layer, 'top_conv') logits = ram('ram', top_conv) #logits=ram('ram' , top_conv) # Build Optimizer pred,pred_cls , cost , train_op,correct_pred ,accuracy = \ algorithm(y_conv=logits , y_=y_ ,learning_rate=lr , optimizer='sgd' , use_l2_loss=True ,activation='sigmoid' , cost_func='mse') sess = tf.Session() init = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())