in question_generation_model.py [0:0]
def test_model(self, test_image_url, model, decoder_algorithm, beam_size, keyword=None):
"""
Function to perform inference on model
:param test_image_url: Test image url
:param model: Model definition file
:param decoder_algorithm: Decoder algorithm: Greedy, simple beam search or diverse beam search
:param beam_size: Beam size to be used for decoding
:param keyword: Keyword to be used for some model architecture
:return:
"""
response = requests.get(test_image_url)
test_image_content = Image.open(BytesIO(response.content))
test_image_content = test_image_content.resize((224, 224))
self.logger.debug('Extracting image feature')
try:
test_image_feature = self.datasets.extract_features_from_image(test_image_content)
except:
self.logger.error('Error in extracting image feature')
test_image_content = test_image_content.convert('RGB')
test_image_feature = self.datasets.extract_features_from_image(test_image_content)
self.logger.debug('Succesfully extracted image feature')
test_image_feature = test_image_feature.reshape((1, self.input_shape))
if keyword is not None:
keyword_token_seq = [self.datasets.word_to_idx[word] for word in keyword.split(' ') if
word in self.datasets.word_to_idx]
keyword = pad_sequences([keyword_token_seq], maxlen=self.datasets.max_keyword_len, padding='post')[0]
keyword = array([keyword])
output = None
if decoder_algorithm == 'sbs':
self.logger.info('Simple beam search ---->')
output, candidates = self.beam_search(test_image_feature, model, beam_size)
elif decoder_algorithm == 'dbs':
try:
self.logger.info('Diverse beam search ---->')
output, candidates = self.diverse_beam_search(test_image_feature, model, beam_size, num_groups=2)
except:
self.logger.error('Failed to perform diverse beam search')
elif decoder_algorithm == 'greedy':
self.logger.info('Greedy search ---->')
output = self.greedy_search(test_image_feature, model, keyword)
#
# Perform all 3 below
#
# self.logger.info('Simple beam search ---->')
# output, candidates = self.beam_search(test_image_feature, model, beam_size, keyword)
# self.logger.info('Diverse beam search ---->')
# output, candidates = self.diverse_beam_search(test_image_feature, model, beam_size, num_groups=2, keyword=keyword)
self.logger.info('Final Output: ---->%s', output)
self.logger.info('\n')
return output