| 14 | |
| 15 | |
| 16 | class Vgg19: |
| 17 | |
| 18 | def __init__(self, vgg19_npy_path=None): |
| 19 | |
| 20 | self.data_dict = np.load(vgg19_npy_path, encoding='latin1', allow_pickle=True).item() |
| 21 | print('Finished loading vgg19.npy') |
| 22 | |
| 23 | |
| 24 | def build_conv4_4(self, rgb, include_fc=False): |
| 25 | |
| 26 | rgb_scaled = (rgb+1) * 127.5 |
| 27 | |
| 28 | blue, green, red = tf.split(axis=3, num_or_size_splits=3, value=rgb_scaled) |
| 29 | bgr = tf.concat(axis=3, values=[blue - VGG_MEAN[0], |
| 30 | green - VGG_MEAN[1], red - VGG_MEAN[2]]) |
| 31 | |
| 32 | self.conv1_1 = self.conv_layer(bgr, "conv1_1") |
| 33 | self.relu1_1 = tf.nn.relu(self.conv1_1) |
| 34 | self.conv1_2 = self.conv_layer(self.relu1_1, "conv1_2") |
| 35 | self.relu1_2 = tf.nn.relu(self.conv1_2) |
| 36 | self.pool1 = self.max_pool(self.relu1_2, 'pool1') |
| 37 | |
| 38 | self.conv2_1 = self.conv_layer(self.pool1, "conv2_1") |
| 39 | self.relu2_1 = tf.nn.relu(self.conv2_1) |
| 40 | self.conv2_2 = self.conv_layer(self.relu2_1, "conv2_2") |
| 41 | self.relu2_2 = tf.nn.relu(self.conv2_2) |
| 42 | self.pool2 = self.max_pool(self.relu2_2, 'pool2') |
| 43 | |
| 44 | self.conv3_1 = self.conv_layer(self.pool2, "conv3_1") |
| 45 | self.relu3_1 = tf.nn.relu(self.conv3_1) |
| 46 | self.conv3_2 = self.conv_layer(self.relu3_1, "conv3_2") |
| 47 | self.relu3_2 = tf.nn.relu(self.conv3_2) |
| 48 | self.conv3_3 = self.conv_layer(self.relu3_2, "conv3_3") |
| 49 | self.relu3_3 = tf.nn.relu(self.conv3_3) |
| 50 | self.conv3_4 = self.conv_layer(self.relu3_3, "conv3_4") |
| 51 | self.relu3_4 = tf.nn.relu(self.conv3_4) |
| 52 | self.pool3 = self.max_pool(self.relu3_4, 'pool3') |
| 53 | |
| 54 | self.conv4_1 = self.conv_layer(self.pool3, "conv4_1") |
| 55 | self.relu4_1 = tf.nn.relu(self.conv4_1) |
| 56 | self.conv4_2 = self.conv_layer(self.relu4_1, "conv4_2") |
| 57 | self.relu4_2 = tf.nn.relu(self.conv4_2) |
| 58 | self.conv4_3 = self.conv_layer(self.relu4_2, "conv4_3") |
| 59 | self.relu4_3 = tf.nn.relu(self.conv4_3) |
| 60 | self.conv4_4 = self.conv_layer(self.relu4_3, "conv4_4") |
| 61 | self.relu4_4 = tf.nn.relu(self.conv4_4) |
| 62 | self.pool4 = self.max_pool(self.relu4_4, 'pool4') |
| 63 | |
| 64 | return self.conv4_4 |
| 65 | |
| 66 | def max_pool(self, bottom, name): |
| 67 | return tf.nn.max_pool(bottom, ksize=[1, 2, 2, 1], |
| 68 | strides=[1, 2, 2, 1], padding='SAME', name=name) |
| 69 | |
| 70 | def conv_layer(self, bottom, name): |
| 71 | with tf.variable_scope(name): |
| 72 | filt = self.get_conv_filter(name) |
| 73 | |