1,tensorflow部分,
注意backbone利用了mobilenetv2,其中tf使用注意事项:
-
使用 tf.variable_scope(‘mv2’,reuse=tf.AUTOREUSE):
其中reuse可以节省图空间,一样的scope可以利用这个scope省资源。 -
使用kernal卷积核,tf中格式是(kh,kw,kc,outputnum):即
w = tf.get_variable(‘w’, [k_h, k_w, input_.get_shape()[-1], output_dim],
regularizer=tf.contrib.layers.l2_regularizer(weight_decay),
initializer=tf.truncated_normal_initializer(stddev=stddev))
而卷积过程是[1,stridey,stridex,1]如下:
conv = tf.nn.conv2d(input_, w, strides=[1, d_h, d_w, 1], padding=‘SAME’) -
而卷积偏置是与通道无关的:
biases = tf.get_variable(‘bias’,[output_dim],initializer=tf.constant_initializer(0.0))
conv = tf.nn.bias_add(conv, biases)
2.mobilenetv2部分:
注意点:c是输出通道,n是此步骤的单个res_block数量,s是stride,对应stride=1和stride=2 不用架构,t是膨胀系数,可以认为升维减少relu损失用。
其中每个bottleneck中有n个res_block残差块,而每个残差块有如下组成(res_block),
这里一个res_block中t=6,表示维度的增广到原来的input维度的6倍,而其中第一次bottleneck是t=1,个人认为前期不需要做6倍的放大,后面每次都做了expansion,即t=6.每个res_block如上图,这里注意 stride=1是add了残差,而stride=2做了缩放没有做+的动作,cv1_relu , dwise3_stride_relu,cv1,
注意最后convlution 1X1没有做relu,减少损失。
其中:注意:
def res_block(input, expansion_ratio, output_dim, stride, is_train, name, bias=False, shortcut=True):
with tf.name_scope(name), tf.variable_scope(name):
# pw
bottleneck_dim = round(expansion_ratio*input.get_shape().as_list()[-1])
net = conv_1x1(input, bottleneck_dim, name=‘pw’, bias=bias)
net = batch_norm(net, train=is_train, name=‘pw_bn’)
net = relu(net)
# dw
net = dwise_conv(net, strides=[1, stride, stride, 1], name=‘dw’, bias=bias)
net = batch_norm(net, train=is_train, name=‘dw_bn’)
net = relu(net)
# pw & linear
net = conv_1x1(net, output_dim, name=‘pw_linear’, bias=bias)
net = batch_norm(net, train=is_train, name=‘pw_linear_bn’)
# element wise add, only for stride==1
if shortcut and stride == 1:
in_dim = int(input.get_shape().as_list()[-1])
if in_dim != output_dim:
ins = conv_1x1(input, output_dim, name='ex_dim')
net = ins+net
else:
net = input+net
return net
所有通过如上7个bottleneck(每个中又有1234331个res_block,每个res_block中又有stride=1和2的组合,而每个res_block中又有cv1_t_bn_relu - dwisecv3_bn_relu-cv1_bn (stride=1再+)组合)
最终将224到了7,变为原来的1/32.