#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Sample code to generate caption
'''
import numpy as np
from image_reader import Image_reader
from caption_generator import Caption_generator

#Instantiate image_reader with GoogleNet mean image
mean_image = np.array([104, 117, 123]).reshape((3, 1, 1))
image_reader = Image_reader(mean=mean_image)

#Instantiate caption generator
caption_model_place = '../models/caption_model.chainer'
cnn_model_place = '../data/bvlc_googlenet_caffe_chainer.pkl'
index2word_place = '../work/index2token.pkl'
caption_generator = Caption_generator(caption_model_place=caption_model_place,
                                      cnn_model_place=cnn_model_place,
                                      index2word_place=index2word_place)

#The preparation is done
#Let's ganarate caption for a image

#First, read an image as numpy array
image_file_path = '../images/test_image.jpg'
image = image_reader.read(image_file_path)

#Next, put the image into caption generator
#The output structure is
#	[caption,caption,caption,...]
parser.add_argument("-v", "--vocab",default=index2word_file, type=str, help=u" vocaburary file")
parser.add_argument("-i", "--image",default=image_file_name, type=str, help=u"a image that you want to generate capiton ")
parser.add_argument("-b", "--beam",default=beamsize, type=int, help=u"a image that you want to generate capiton ")

args = parser.parse_args()
gpu_id=args.gpu
model_place= args.model
index2word_file = args.vocab
image_file_name = args.image
caffe_model_place = args.caffe
beamsize = args.beam


#Instantiate image_reader with GoogleNet mean image
mean_image = np.array([104, 117, 123]).reshape((3,1,1))#GoogleNet Mean
image_reader=Image_reader(mean=mean_image)

#Instantiate caption generator
caption_generator=Caption_generator(caption_model_place=model_place,cnn_model_place=caffe_model_place,index2word_place=index2word_file,beamsize=beamsize,gpu_id=gpu_id)

#Read Image
image=image_reader.read(image_file_name)

#Generate Catpion
captions=caption_generator.generate(image)

#print it
for caption in captions:
    sentence=caption['sentence']
    probability=caption['probability']
    print " ".join(sentence),probability
#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''
Sample code to generate caption
'''
import numpy as np
from image_reader import Image_reader
from caption_generator import Caption_generator

#Instantiate image_reader with GoogleNet mean image
mean_image = np.array([104, 117, 123]).reshape((3,1,1))
image_reader=Image_reader(mean=mean_image)

#Instantiate caption generator
caption_model_place='../models/caption_model.chainer'
cnn_model_place='../data/bvlc_googlenet_caffe_chainer.pkl'
index2word_place='../work/index2token.pkl'
caption_generator=Caption_generator(caption_model_place=caption_model_place,cnn_model_place=cnn_model_place,index2word_place=index2word_place)


#The preparation is done
#Let's ganarate caption for a image

#First, read an image as numpy array
image_file_path='../images/test_image.jpg'
image=image_reader.read(image_file_path)


#Next, put the image into caption generator
#The output structure is 
                    "--beam",
                    default=beamsize,
                    type=int,
                    help=u"a image that you want to generate capiton ")

args = parser.parse_args()
gpu_id = args.gpu
model_place = args.model
index2word_file = args.vocab
image_file_name = args.image
caffe_model_place = args.caffe
beamsize = args.beam

#Instantiate image_reader with GoogleNet mean image
mean_image = np.array([104, 117, 123]).reshape((3, 1, 1))  #GoogleNet Mean
image_reader = Image_reader(mean=mean_image)

#Instantiate caption generator
caption_generator = Caption_generator(caption_model_place=model_place,
                                      cnn_model_place=caffe_model_place,
                                      index2word_place=index2word_file,
                                      beamsize=beamsize,
                                      gpu_id=gpu_id)

#Read Image
image = image_reader.read(image_file_name)

#Generate Catpion
captions = caption_generator.generate(image)

#print it