tensorflow vgg

import tensorflow as tf

slim = tf.contrib.slim


def vgg_arg_scope(weight_decay=0.0005):
    with slim.arg_scope([slim.conv2d, slim.fully_connected],
                        activation_fn=tf.nn.relu,
                        weights_regularizer=slim.l2_regularizer(weight_decay),
                        biases_initializer=tf.zeros_initializer()):
        with slim.arg_scope([slim.conv2d], padding='SAME') as arg_sc:
            return arg_sc


def vgg_16(inputs, scope='vgg_16'):
    with tf.variable_scope(scope, 'vgg_16', [inputs]) as sc:
        with slim.arg_scope([slim.conv2d, slim.fully_connected, slim.max_pool2d]):
            # slim.conv2d 卷积2次,卷积核3*3,64个out_channels
            net = slim.repeat(inputs, 2, slim.conv2d, 64, [3, 3], scope='conv1')
            net = slim.max_pool2d(net, [2, 2], scope='pool1')
            net = slim.repeat(net, 2, slim.conv2d, 128, [3, 3], scope='conv2')
            net = slim.max_pool2d(net, [2, 2], scope='pool2')
            net = slim.repeat(net, 3, slim.conv2d, 256, [3, 3], scope='conv3')
            net = slim.max_pool2d(net, [2, 2], scope='pool3')
            net = slim.repeat(net, 3, slim.conv2d, 512, [3, 3], scope='conv4')
            net = slim.max_pool2d(net, [2, 2], scope='pool4')
            net = slim.repeat(net, 3, slim.conv2d, 512, [3, 3], scope='conv5')

    return net

一张图片通过vgg16的前5层卷积,输出

from nets import vgg
import tensorflow as tf
import cv2
from nets.model_train import  mean_image_subtraction
from main import demo
tf.reset_default_graph()
im_fn = 'data/demo/1.jpg'
try:
    im = cv2.imread(im_fn)[:, :, ::-1]
except:
    print("Error reading image {}!".format(im_fn))
#print(im[:, :, 1])
print(type(im))
print('原始图片大小:', im.shape)

img, (rh, rw) = demo.resize_image(im)
print(type(img))
print('重定义后图片大小:', img.shape)

input_image = tf.placeholder(tf.float32, [None, None, None, 3], "input_image")


def model(image):
    images = mean_image_subtraction(image)
    net = vgg.vgg_16(images, scope='vgg_16')
    return net

out_net = model(input_image)
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    out_net = sess.run(out_net, feed_dict={input_image: [img]})
    print(out_net)
    print(type(out_net))
    print(out_net.shape)


# 
# (1, 38, 40, 512)



'''
feed_dict不能喂入tf张量,可以喂入数组,字符串,列表等
而喂入的image_batch经过了tf.reshape,变成了tf张量。
'''

你可能感兴趣的:(tensorflow,tensorflow)