├── .gitignore ├── .ipynb_checkpoints └── visualization-checkpoint.ipynb ├── LICENSE ├── Readme.md ├── acoustic-guitar-player.jpg ├── attend.jpg ├── cnn_util.py ├── guitar_player.npy ├── make_flickr_dataset.py └── model_tensorflow.py /.gitignore: -------------------------------------------------------------------------------- 1 | data/ 2 | model/ 3 | *.pyc 4 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/visualization-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 15, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import cPickle as pkl\n", 12 | "import numpy\n", 13 | "\n", 14 | "import matplotlib.pyplot as plt\n", 15 | "import matplotlib.cm as cm\n", 16 | "\n", 17 | "import skimage\n", 18 | "import skimage.transform\n", 19 | "import skimage.io\n", 20 | "from cnn_util import *\n", 21 | "\n", 22 | "from PIL import Image\n", 23 | "%matplotlib inline\n", 24 | "%run model_tensorflow.py" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 2, 30 | "metadata": { 31 | "collapsed": false 32 | }, 33 | "outputs": [ 34 | { 35 | "name": "stdout", 36 | "output_type": "stream", 37 | "text": [ 38 | "preprocessing word counts and creating vocab based on word count threshold 30\n", 39 | "filtered words from 20326 to 2942\n" 40 | ] 41 | } 42 | ], 43 | "source": [ 44 | "generated_words, alpha_list = test()" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 42, 50 | "metadata": { 51 | "collapsed": false, 52 | "scrolled": true 53 | }, 54 | "outputs": [ 55 | { 56 | "data": { 57 | "image/png": "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\n", 58 | "text/plain": [ 59 | "" 60 | ] 61 | }, 62 | "metadata": {}, 63 | "output_type": "display_data" 64 | } 65 | ], 66 | "source": [ 67 | "img = crop_image('acoustic-guitar-player.jpg')\n", 68 | "\n", 69 | "alphas = np.array(alpha_list).swapaxes(1,2)\n", 70 | "\n", 71 | "n_words = alphas.shape[0] + 1\n", 72 | "w = numpy.round(numpy.sqrt(n_words))\n", 73 | "h = numpy.ceil(numpy.float32(n_words) / w)\n", 74 | "\n", 75 | "plt.subplot(w, h, 1)\n", 76 | "plt.imshow(img)\n", 77 | "plt.axis('off')\n", 78 | "\n", 79 | "smooth = True\n", 80 | "\n", 81 | "for ii in xrange(alphas.shape[0]):\n", 82 | " plt.subplot(w, h, ii+2)\n", 83 | " lab = generated_words[ii]\n", 84 | " \n", 85 | " plt.text(0, 1, lab, backgroundcolor='white', fontsize=13)\n", 86 | " plt.text(0, 1, lab, color='black', fontsize=13)\n", 87 | " plt.imshow(img)\n", 88 | " \n", 89 | " if smooth:\n", 90 | " alpha_img = skimage.transform.pyramid_expand(alphas[ii,0,:].reshape(14,14), upscale=16, sigma=20)\n", 91 | " else:\n", 92 | " alpha_img = skimage.transform.resize(alphas[ii,0,:].reshape(14,14), [img.shape[0], img.shape[1]])\n", 93 | " \n", 94 | " plt.imshow(alpha_img, alpha=0.8)\n", 95 | " plt.set_cmap(cm.Greys_r)\n", 96 | " plt.axis('off')\n", 97 | "plt.show()" 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": 39, 103 | "metadata": { 104 | "collapsed": false 105 | }, 106 | "outputs": [ 107 | { 108 | "data": { 109 | "text/plain": [ 110 | "(224, 224)" 111 | ] 112 | }, 113 | "execution_count": 39, 114 | "metadata": {}, 115 | "output_type": "execute_result" 116 | } 117 | ], 118 | "source": [ 119 | "alpha_img.shape" 120 | ] 121 | }, 122 | { 123 | "cell_type": "code", 124 | "execution_count": 40, 125 | "metadata": { 126 | "collapsed": false 127 | }, 128 | "outputs": [ 129 | { 130 | "data": { 131 | "text/plain": [ 132 | "(10, 1, 196)" 133 | ] 134 | }, 135 | "execution_count": 40, 136 | "metadata": {}, 137 | "output_type": "execute_result" 138 | } 139 | ], 140 | "source": [ 141 | "alphas.shape" 142 | ] 143 | }, 144 | { 145 | "cell_type": "code", 146 | "execution_count": null, 147 | "metadata": { 148 | "collapsed": true 149 | }, 150 | "outputs": [], 151 | "source": [] 152 | } 153 | ], 154 | "metadata": { 155 | "kernelspec": { 156 | "display_name": "Python 2", 157 | "language": "python", 158 | "name": "python2" 159 | }, 160 | "language_info": { 161 | "codemirror_mode": { 162 | "name": "ipython", 163 | "version": 2 164 | }, 165 | "file_extension": ".py", 166 | "mimetype": "text/x-python", 167 | "name": "python", 168 | "nbconvert_exporter": "python", 169 | "pygments_lexer": "ipython2", 170 | "version": "2.7.10" 171 | } 172 | }, 173 | "nbformat": 4, 174 | "nbformat_minor": 0 175 | } 176 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, Taeksoo Kim 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 18 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 21 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # Neural Caption Generator with Attention 2 | * Tensorflow implementation of "Show, attend and Tell" http://arxiv.org/abs/1502.03044 3 | * Borrowed most of the idea from the author's source code https://github.com/kelvinxu/arctic-captions 4 | 5 | ## Code 6 | * make_flickr_dataset.py: Extracts conv5_3 layer activations of VGG Network for flickr30k images, and save them in 'data/feats.npy' 7 | * model_tensorflow.py: Main codes 8 | 9 | ## Usage 10 | * Download flickr30k Dataset. 11 | * Extract VGG conv5_3 features using make_flickr_dataset.py 12 | * Train: run train() in model_tensorflow.py 13 | * Test: run test() in model_tensorflow.py 14 | 15 | ![alt tag](https://github.com/jazzsaxmafia/show_attend_and_tell.tensorflow/blob/master/attend.jpg) 16 | -------------------------------------------------------------------------------- /acoustic-guitar-player.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazzsaxmafia/show_attend_and_tell.tensorflow/11b393cde82b21f165363c7e91e3337914f3346d/acoustic-guitar-player.jpg -------------------------------------------------------------------------------- /attend.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazzsaxmafia/show_attend_and_tell.tensorflow/11b393cde82b21f165363c7e91e3337914f3346d/attend.jpg -------------------------------------------------------------------------------- /cnn_util.py: -------------------------------------------------------------------------------- 1 | import caffe 2 | import ipdb 3 | import cv2 4 | import numpy as np 5 | import skimage 6 | 7 | def crop_image(x, target_height=227, target_width=227): 8 | image = skimage.img_as_float(skimage.io.imread(x)).astype(np.float32) 9 | 10 | if len(image.shape) == 2: 11 | image = np.tile(image[:,:,None], 3) 12 | elif len(image.shape) == 4: 13 | image = image[:,:,:,0] 14 | 15 | height, width, rgb = image.shape 16 | if width == height: 17 | resized_image = cv2.resize(image, (target_height,target_width)) 18 | 19 | elif height < width: 20 | resized_image = cv2.resize(image, (int(width * float(target_height)/height), target_width)) 21 | cropping_length = int((resized_image.shape[1] - target_height) / 2) 22 | resized_image = resized_image[:,cropping_length:resized_image.shape[1] - cropping_length] 23 | 24 | else: 25 | resized_image = cv2.resize(image, (target_height, int(height * float(target_width) / width))) 26 | cropping_length = int((resized_image.shape[0] - target_width) / 2) 27 | resized_image = resized_image[cropping_length:resized_image.shape[0] - cropping_length,:] 28 | 29 | return cv2.resize(resized_image, (target_height, target_width)) 30 | 31 | deploy = '/home/taeksoo/Package/caffe/models/bvlc_reference_caffenet/deploy.prototxt' 32 | model = '/home/taeksoo/Package/caffe/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel' 33 | mean = '/home/taeksoo/Package/caffe/python/caffe/imagenet/ilsvrc_2012_mean.npy' 34 | 35 | class CNN(object): 36 | 37 | def __init__(self, deploy=deploy, model=model, mean=mean, batch_size=10, width=227, height=227): 38 | 39 | self.deploy = deploy 40 | self.model = model 41 | self.mean = mean 42 | 43 | self.batch_size = batch_size 44 | self.net, self.transformer = self.get_net() 45 | self.net.blobs['data'].reshape(self.batch_size, 3, height, width) 46 | 47 | self.width = width 48 | self.height = height 49 | 50 | def get_net(self): 51 | caffe.set_mode_gpu() 52 | net = caffe.Net(self.deploy, self.model, caffe.TEST) 53 | 54 | transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape}) 55 | transformer.set_transpose('data', (2,0,1)) 56 | transformer.set_mean('data', np.load(self.mean).mean(1).mean(1)) 57 | transformer.set_raw_scale('data', 255) 58 | transformer.set_channel_swap('data', (2,1,0)) 59 | 60 | return net, transformer 61 | 62 | def get_features(self, image_list, layers='fc7', layer_sizes=[4096]): 63 | iter_until = len(image_list) + self.batch_size 64 | all_feats = np.zeros([len(image_list)] + layer_sizes) 65 | 66 | for start, end in zip(range(0, iter_until, self.batch_size), \ 67 | range(self.batch_size, iter_until, self.batch_size)): 68 | 69 | image_batch_file = image_list[start:end] 70 | image_batch = np.array(map(lambda x: crop_image(x, target_width=self.width, target_height=self.height), image_batch_file)) 71 | 72 | caffe_in = np.zeros(np.array(image_batch.shape)[[0,3,1,2]], dtype=np.float32) 73 | 74 | for idx, in_ in enumerate(image_batch): 75 | caffe_in[idx] = self.transformer.preprocess('data', in_) 76 | 77 | out = self.net.forward_all(blobs=[layers], **{'data':caffe_in}) 78 | feats = out[layers] 79 | 80 | all_feats[start:end] = feats 81 | 82 | return all_feats 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /guitar_player.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazzsaxmafia/show_attend_and_tell.tensorflow/11b393cde82b21f165363c7e91e3337914f3346d/guitar_player.npy -------------------------------------------------------------------------------- /make_flickr_dataset.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import numpy as np 3 | import os 4 | import cPickle 5 | from cnn_util import * 6 | 7 | vgg_model = '/home/taeksoo/Package/caffe/models/vgg/VGG_ILSVRC_19_layers.caffemodel' 8 | vgg_deploy = '/home/taeksoo/Package/caffe/models/vgg/VGG_ILSVRC_19_layers_deploy.prototxt' 9 | 10 | annotation_path = './data/results_20130124.token' 11 | flickr_image_path = '../show_attend_and_tell/images/flickr30k-images/' 12 | feat_path = './data/feats.npy' 13 | annotation_result_path = './data/annotations.pickle' 14 | 15 | cnn = CNN(model=vgg_model, deploy=vgg_deploy, width=224, height=224) 16 | 17 | annotations = pd.read_table(annotation_path, sep='\t', header=None, names=['image', 'caption']) 18 | annotations['image_num'] = annotations['image'].map(lambda x: x.split('#')[1]) 19 | annotations['image'] = annotations['image'].map(lambda x: os.path.join(flickr_image_path,x.split('#')[0])) 20 | 21 | unique_images = annotations['image'].unique() 22 | image_df = pd.DataFrame({'image':unique_images, 'image_id':range(len(unique_images))}) 23 | 24 | annotations = pd.merge(annotations, image_df) 25 | annotations.to_pickle(annotation_result_path) 26 | 27 | if not os.path.exists(feat_path): 28 | feats = cnn.get_features(unique_images, layers='conv5_3', layer_sizes=[512,14,14]) 29 | np.save(feat_path, feats) 30 | 31 | -------------------------------------------------------------------------------- /model_tensorflow.py: -------------------------------------------------------------------------------- 1 | #-*- coding: utf-8 -*- 2 | import math 3 | import os 4 | import ipdb 5 | import tensorflow as tf 6 | import numpy as np 7 | import pandas as pd 8 | import cPickle 9 | 10 | from tensorflow.models.rnn import rnn_cell 11 | import tensorflow.python.platform 12 | from keras.preprocessing import sequence 13 | 14 | class Caption_Generator(): 15 | 16 | def init_weight(self, dim_in, dim_out, name=None, stddev=1.0): 17 | return tf.Variable(tf.truncated_normal([dim_in, dim_out], stddev=stddev/math.sqrt(float(dim_in))), name=name) 18 | 19 | def init_bias(self, dim_out, name=None): 20 | return tf.Variable(tf.zeros([dim_out]), name=name) 21 | 22 | def __init__(self, n_words, dim_embed, dim_ctx, dim_hidden, n_lstm_steps, batch_size=200, ctx_shape=[196,512], bias_init_vector=None): 23 | self.n_words = n_words 24 | self.dim_embed = dim_embed 25 | self.dim_ctx = dim_ctx 26 | self.dim_hidden = dim_hidden 27 | self.ctx_shape = ctx_shape 28 | self.n_lstm_steps = n_lstm_steps 29 | self.batch_size = batch_size 30 | 31 | with tf.device("/cpu:0"): 32 | self.Wemb = tf.Variable(tf.random_uniform([n_words, dim_embed], -1.0, 1.0), name='Wemb') 33 | 34 | self.init_hidden_W = self.init_weight(dim_ctx, dim_hidden, name='init_hidden_W') 35 | self.init_hidden_b = self.init_bias(dim_hidden, name='init_hidden_b') 36 | 37 | self.init_memory_W = self.init_weight(dim_ctx, dim_hidden, name='init_memory_W') 38 | self.init_memory_b = self.init_bias(dim_hidden, name='init_memory_b') 39 | 40 | self.lstm_W = self.init_weight(dim_embed, dim_hidden*4, name='lstm_W') 41 | self.lstm_U = self.init_weight(dim_hidden, dim_hidden*4, name='lstm_U') 42 | self.lstm_b = self.init_bias(dim_hidden*4, name='lstm_b') 43 | 44 | self.image_encode_W = self.init_weight(dim_ctx, dim_hidden*4, name='image_encode_W') 45 | 46 | self.image_att_W = self.init_weight(dim_ctx, dim_ctx, name='image_att_W') 47 | self.hidden_att_W = self.init_weight(dim_hidden, dim_ctx, name='hidden_att_W') 48 | self.pre_att_b = self.init_bias(dim_ctx, name='pre_att_b') 49 | 50 | self.att_W = self.init_weight(dim_ctx, 1, name='att_W') 51 | self.att_b = self.init_bias(1, name='att_b') 52 | 53 | self.decode_lstm_W = self.init_weight(dim_hidden, dim_embed, name='decode_lstm_W') 54 | self.decode_lstm_b = self.init_bias(dim_embed, name='decode_lstm_b') 55 | 56 | self.decode_word_W = self.init_weight(dim_embed, n_words, name='decode_word_W') 57 | 58 | if bias_init_vector is not None: 59 | self.decode_word_b = tf.Variable(bias_init_vector.astype(np.float32), name='decode_word_b') 60 | else: 61 | self.decode_word_b = self.init_bias(n_words, name='decode_word_b') 62 | 63 | 64 | def get_initial_lstm(self, mean_context): 65 | initial_hidden = tf.nn.tanh(tf.matmul(mean_context, self.init_hidden_W) + self.init_hidden_b) 66 | initial_memory = tf.nn.tanh(tf.matmul(mean_context, self.init_memory_W) + self.init_memory_b) 67 | 68 | return initial_hidden, initial_memory 69 | 70 | def build_model(self): 71 | context = tf.placeholder("float32", [self.batch_size, self.ctx_shape[0], self.ctx_shape[1]]) 72 | sentence = tf.placeholder("int32", [self.batch_size, self.n_lstm_steps]) 73 | mask = tf.placeholder("float32", [self.batch_size, self.n_lstm_steps]) 74 | 75 | h, c = self.get_initial_lstm(tf.reduce_mean(context, 1)) 76 | 77 | # TensorFlow가 dot(3D tensor, matrix) 계산을 못함;;; ㅅㅂ 삽질 ㄱㄱ 78 | context_flat = tf.reshape(context, [-1, self.dim_ctx]) 79 | context_encode = tf.matmul(context_flat, self.image_att_W) # (batch_size, 196, 512) 80 | context_encode = tf.reshape(context_encode, [-1, ctx_shape[0], ctx_shape[1]]) 81 | 82 | loss = 0.0 83 | 84 | for ind in range(self.n_lstm_steps): 85 | 86 | if ind == 0: 87 | word_emb = tf.zeros([self.batch_size, self.dim_embed]) 88 | else: 89 | tf.get_variable_scope().reuse_variables() 90 | with tf.device("/cpu:0"): 91 | word_emb = tf.nn.embedding_lookup(self.Wemb, sentence[:,ind-1]) 92 | 93 | x_t = tf.matmul(word_emb, self.lstm_W) + self.lstm_b # (batch_size, hidden*4) 94 | 95 | labels = tf.expand_dims(sentence[:,ind], 1) 96 | indices = tf.expand_dims(tf.range(0, self.batch_size, 1), 1) 97 | concated = tf.concat(1, [indices, labels]) 98 | onehot_labels = tf.sparse_to_dense( concated, tf.pack([self.batch_size, self.n_words]), 1.0, 0.0) 99 | 100 | context_encode = context_encode + \ 101 | tf.expand_dims(tf.matmul(h, self.hidden_att_W), 1) + \ 102 | self.pre_att_b 103 | 104 | context_encode = tf.nn.tanh(context_encode) 105 | 106 | # 여기도 context_encode: 3D -> flat required 107 | context_encode_flat = tf.reshape(context_encode, [-1, self.dim_ctx]) # (batch_size*196, 512) 108 | alpha = tf.matmul(context_encode_flat, self.att_W) + self.att_b # (batch_size*196, 1) 109 | alpha = tf.reshape(alpha, [-1, self.ctx_shape[0]]) 110 | alpha = tf.nn.softmax( alpha ) 111 | 112 | weighted_context = tf.reduce_sum(context * tf.expand_dims(alpha, 2), 1) 113 | 114 | lstm_preactive = tf.matmul(h, self.lstm_U) + x_t + tf.matmul(weighted_context, self.image_encode_W) 115 | i, f, o, new_c = tf.split(1, 4, lstm_preactive) 116 | 117 | i = tf.nn.sigmoid(i) 118 | f = tf.nn.sigmoid(f) 119 | o = tf.nn.sigmoid(o) 120 | new_c = tf.nn.tanh(new_c) 121 | 122 | c = f * c + i * new_c 123 | h = o * tf.nn.tanh(new_c) 124 | 125 | logits = tf.matmul(h, self.decode_lstm_W) + self.decode_lstm_b 126 | logits = tf.nn.relu(logits) 127 | logits = tf.nn.dropout(logits, 0.5) 128 | 129 | logit_words = tf.matmul(logits, self.decode_word_W) + self.decode_word_b 130 | cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logit_words, onehot_labels) 131 | cross_entropy = cross_entropy * mask[:,ind] 132 | 133 | current_loss = tf.reduce_sum(cross_entropy) 134 | loss = loss + current_loss 135 | 136 | loss = loss / tf.reduce_sum(mask) 137 | return loss, context, sentence, mask 138 | 139 | def build_generator(self, maxlen): 140 | context = tf.placeholder("float32", [1, self.ctx_shape[0], self.ctx_shape[1]]) 141 | h, c = self.get_initial_lstm(tf.reduce_mean(context, 1)) 142 | 143 | context_encode = tf.matmul(tf.squeeze(context), self.image_att_W) 144 | generated_words = [] 145 | logit_list = [] 146 | alpha_list = [] 147 | word_emb = tf.zeros([1, self.dim_embed]) 148 | for ind in range(maxlen): 149 | x_t = tf.matmul(word_emb, self.lstm_W) + self.lstm_b 150 | context_encode = context_encode + tf.matmul(h, self.hidden_att_W) + self.pre_att_b 151 | context_encode = tf.nn.tanh(context_encode) 152 | 153 | alpha = tf.matmul(context_encode, self.att_W) + self.att_b 154 | alpha = tf.reshape(alpha, [-1, self.ctx_shape[0]] ) 155 | alpha = tf.nn.softmax(alpha) 156 | 157 | alpha = tf.reshape(alpha, (ctx_shape[0], -1)) 158 | alpha_list.append(alpha) 159 | 160 | weighted_context = tf.reduce_sum(tf.squeeze(context) * alpha, 0) 161 | weighted_context = tf.expand_dims(weighted_context, 0) 162 | 163 | lstm_preactive = tf.matmul(h, self.lstm_U) + x_t + tf.matmul(weighted_context, self.image_encode_W) 164 | 165 | i, f, o, new_c = tf.split(1, 4, lstm_preactive) 166 | 167 | i = tf.nn.sigmoid(i) 168 | f = tf.nn.sigmoid(f) 169 | o = tf.nn.sigmoid(o) 170 | new_c = tf.nn.tanh(new_c) 171 | 172 | c = f*c + i*new_c 173 | h = o*tf.nn.tanh(new_c) 174 | 175 | logits = tf.matmul(h, self.decode_lstm_W) + self.decode_lstm_b 176 | logits = tf.nn.relu(logits) 177 | 178 | logit_words = tf.matmul(logits, self.decode_word_W) + self.decode_word_b 179 | 180 | max_prob_word = tf.argmax(logit_words, 1) 181 | 182 | with tf.device("/cpu:0"): 183 | word_emb = tf.nn.embedding_lookup(self.Wemb, max_prob_word) 184 | 185 | generated_words.append(max_prob_word) 186 | logit_list.append(logit_words) 187 | 188 | return context, generated_words, logit_list, alpha_list 189 | 190 | 191 | def preProBuildWordVocab(sentence_iterator, word_count_threshold=30): # borrowed this function from NeuralTalk 192 | print 'preprocessing word counts and creating vocab based on word count threshold %d' % (word_count_threshold, ) 193 | word_counts = {} 194 | nsents = 0 195 | for sent in sentence_iterator: 196 | nsents += 1 197 | for w in sent.lower().split(' '): 198 | word_counts[w] = word_counts.get(w, 0) + 1 199 | vocab = [w for w in word_counts if word_counts[w] >= word_count_threshold] 200 | print 'filtered words from %d to %d' % (len(word_counts), len(vocab)) 201 | 202 | ixtoword = {} 203 | ixtoword[0] = '.' # period at the end of the sentence. make first dimension be end token 204 | wordtoix = {} 205 | wordtoix['#START#'] = 0 # make first vector be the start token 206 | ix = 1 207 | for w in vocab: 208 | wordtoix[w] = ix 209 | ixtoword[ix] = w 210 | ix += 1 211 | 212 | word_counts['.'] = nsents 213 | bias_init_vector = np.array([1.0*word_counts[ixtoword[i]] for i in ixtoword]) 214 | bias_init_vector /= np.sum(bias_init_vector) # normalize to frequencies 215 | bias_init_vector = np.log(bias_init_vector) 216 | bias_init_vector -= np.max(bias_init_vector) # shift to nice numeric range 217 | return wordtoix, ixtoword, bias_init_vector 218 | 219 | 220 | ###### 학습 관련 Parameters ###### 221 | n_epochs=1000 222 | batch_size=80 223 | dim_embed=256 224 | dim_ctx=512 225 | dim_hidden=256 226 | ctx_shape=[196,512] 227 | pretrained_model_path = './model/model-8' 228 | ############################# 229 | ###### 잡다한 Parameters ##### 230 | annotation_path = './data/annotations.pickle' 231 | feat_path = './data/feats.npy' 232 | model_path = './model/' 233 | ############################# 234 | 235 | 236 | def train(pretrained_model_path=pretrained_model_path): # 전에 학습하던게 있으면 초기값 설정. 237 | annotation_data = pd.read_pickle(annotation_path) 238 | captions = annotation_data['caption'].values 239 | wordtoix, ixtoword, bias_init_vector = preProBuildWordVocab(captions) 240 | 241 | learning_rate=0.001 242 | n_words = len(wordtoix) 243 | feats = np.load(feat_path) 244 | maxlen = np.max( map(lambda x: len(x.split(' ')), captions) ) 245 | 246 | sess = tf.InteractiveSession() 247 | 248 | caption_generator = Caption_Generator( 249 | n_words=n_words, 250 | dim_embed=dim_embed, 251 | dim_ctx=dim_ctx, 252 | dim_hidden=dim_hidden, 253 | n_lstm_steps=maxlen+1, # w1~wN까지 예측한 뒤 마지막에 '.'예측해야하니까 +1 254 | batch_size=batch_size, 255 | ctx_shape=ctx_shape, 256 | bias_init_vector=bias_init_vector) 257 | 258 | loss, context, sentence, mask = caption_generator.build_model() 259 | saver = tf.train.Saver(max_to_keep=50) 260 | 261 | train_op = tf.train.AdamOptimizer(learning_rate).minimize(loss) 262 | tf.initialize_all_variables().run() 263 | if pretrained_model_path is not None: 264 | print "Starting with pretrained model" 265 | saver.restore(sess, pretrained_model_path) 266 | 267 | index = list(annotation_data.index) 268 | np.random.shuffle(index) 269 | annotation_data = annotation_data.ix[index] 270 | 271 | captions = annotation_data['caption'].values 272 | image_id = annotation_data['image_id'].values 273 | 274 | for epoch in range(n_epochs): 275 | for start, end in zip( \ 276 | range(0, len(captions), batch_size), 277 | range(batch_size, len(captions), batch_size)): 278 | 279 | current_feats = feats[ image_id[start:end] ] 280 | current_feats = current_feats.reshape(-1, ctx_shape[1], ctx_shape[0]).swapaxes(1,2) 281 | 282 | current_captions = captions[start:end] 283 | current_caption_ind = map(lambda cap: [wordtoix[word] for word in cap.lower().split(' ')[:-1] if word in wordtoix], current_captions) # '.'은 제거 284 | 285 | current_caption_matrix = sequence.pad_sequences(current_caption_ind, padding='post', maxlen=maxlen+1) 286 | 287 | current_mask_matrix = np.zeros((current_caption_matrix.shape[0], current_caption_matrix.shape[1])) 288 | nonzeros = np.array( map(lambda x: (x != 0).sum()+1, current_caption_matrix )) 289 | 290 | for ind, row in enumerate(current_mask_matrix): 291 | row[:nonzeros[ind]] = 1 292 | 293 | _, loss_value = sess.run([train_op, loss], feed_dict={ 294 | context:current_feats, 295 | sentence:current_caption_matrix, 296 | mask:current_mask_matrix}) 297 | 298 | print "Current Cost: ", loss_value 299 | saver.save(sess, os.path.join(model_path, 'model'), global_step=epoch) 300 | 301 | def test(test_feat='./guitar_player.npy', model_path='./model/model-6', maxlen=20): 302 | annotation_data = pd.read_pickle(annotation_path) 303 | captions = annotation_data['caption'].values 304 | wordtoix, ixtoword, bias_init_vector = preProBuildWordVocab(captions) 305 | n_words = len(wordtoix) 306 | feat = np.load(test_feat).reshape(-1, ctx_shape[1], ctx_shape[0]).swapaxes(1,2) 307 | 308 | sess = tf.InteractiveSession() 309 | 310 | caption_generator = Caption_Generator( 311 | n_words=n_words, 312 | dim_embed=dim_embed, 313 | dim_ctx=dim_ctx, 314 | dim_hidden=dim_hidden, 315 | n_lstm_steps=maxlen, 316 | batch_size=batch_size, 317 | ctx_shape=ctx_shape) 318 | 319 | context, generated_words, logit_list, alpha_list = caption_generator.build_generator(maxlen=maxlen) 320 | saver = tf.train.Saver() 321 | saver.restore(sess, model_path) 322 | 323 | generated_word_index = sess.run(generated_words, feed_dict={context:feat}) 324 | alpha_list_val = sess.run(alpha_list, feed_dict={context:feat}) 325 | generated_words = [ixtoword[x[0]] for x in generated_word_index] 326 | punctuation = np.argmax(np.array(generated_words) == '.')+1 327 | 328 | generated_words = generated_words[:punctuation] 329 | alpha_list_val = alpha_list_val[:punctuation] 330 | return generated_words, alpha_list_val 331 | 332 | # generated_sentence = ' '.join(generated_words) 333 | # ipdb.set_trace() 334 | 335 | 336 | --------------------------------------------------------------------------------