gpt4 book ai didi

python - 图像字幕给出较弱的结果

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:03 25 4
gpt4 key购买 nike

我正在尝试构建图像字幕模型。

modelV = createVGG16()
modelV.trainable = False
# DISCARD LAST 2 LAYERS
modelV.layers.pop()
modelV.layers.pop()

print 'LOADED VISION MODULE'

modelL = Sequential()
# CONVERTING THE INPUT PARTIAL CAPTION INDEX VECTOR TO DENSE VECTOR REPRESENTATION
modelL.add(Embedding(self.vocab_size, 256, input_length=self.max_cap_len))
modelL.add(LSTM(128,return_sequences=True))
modelL.add(TimeDistributed(Dense(128)))

print 'LOADED LANGUAGE MODULE'

# REPEATING IMAGE VECTOR TO TURN INTO A SEQUENCE
modelV.add(RepeatVector(self.max_cap_len))

print 'LOADED REPEAT MODULE'

model = Sequential()
model.add(Merge([modelV, modelL], mode='concat', concat_axis=-1))
# ENCODING THE VECTOR SEQ INTO A SINGLE VECTOR
# WHICH WILL BE USED TO COMPUTE THE PROB DISTRIB OF THE NEXT WORD
# IN THE CAPTION
model.add(LSTM(256,return_sequences=False))
model.add(Dense(self.vocab_size))
model.add(Activation('softmax'))

if(ret_model==True):
return model

model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

print 'COMBINED MODULES'
# OUTPUT WILL BE OF SHAPE (samples, max_caption_len, 128)
return model

我已经尝试在 FLickr8k 测试数据集的前 100 张图像的所有 5 个字幕上运行这个模型 50 个时期。所有字幕都以 开头并与 连接。为了生成标题,我将输入图像作为初始词。在每次迭代中,我都会预测词汇表的概率分布并获得下一个单词。在下一次迭代中,我将 PredictedWord 作为输入并再次生成概率分布。

发生的事情是我在每个时间步得到相同的概率分布。

我的问题是:

  1. 我的模型是否太小而无法生成字幕?
  2. 训练数据是否太小?
  3. epoch 的数量是否太少?
  4. 我的整个方法是错误的吗?

最佳答案

在回答您的问题之前,我想问一下,您在下面的语句中所说的迭代是什么意思?

What happens is that I get the same probability distribution in every iteration.

给定一个图像和初始单词,您应该得到下一个单词,该单词应该作为输入给出以生成下一个单词,这个过程应该继续下去,直到您得到一个代表结束的特殊标记(例如,EOC)的标题。

  1. Is my model too small to generate captions?

我会说不,但可能这个模型很小,无法生成好的字幕。

  1. Is the training data too small?

是的,只有 100 张图像不足以训练图像描述生成神经网络。

  1. Is the number of epochs too small?

不,50 个 epoch 并不算小。您或许可以尝试调整其他参数,例如学习率!

  1. Is my entire approach wrong?

不,你的做法没有错。您可以增强您的方法来为图像生成好的说明文字。你应该在网上找到好的例子,通过它们,我相信你会从中得到灵感。

关于python - 图像字幕给出较弱的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com