代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主,接实验技术指导1对1
实验要求布置请看http://t.csdnimg.cn/6vI2P
Model 说明
编码器(
Encoder
)和带有循环神经网络(
RNN
)的解码器(
DecoderWithRNN
)。
以下是对这两部分的实现原理进行说明:
1,编码器(Encoder,使用 ResNet-101):
编码器接受输入图像并提取图像的特征。
它使用一个在
ImageNet
数据集上预训练的
ResNet-101
模型,并移除了最后的线性层和池化层。
编 码 器 的 输 出 是 一 个 特 征 向 量 的 空 间 网 格 , 维 度 为
(batch_size,2048,encoded_image_size, encoded_image_size)。
2,带有 RNN 的解码器(Decoder):
解码器用于为输入图像生成标注文本。它由一个基于 LSTM
的循环神经网络(
RNN
)组成。解码器的输入是来自编码器的图像特征。解码器逐步、逐词地生成标注文本。它使用嵌入层将词索引转换为密集向量。解码器的工作流程如下:
-
首先,对输入的标注文本进行嵌入操作,将词索引转换为词向量,维度为
(batch_size, max_caption_length, embed_dim)
。
-
解码长度是每个标注文本的实际长度减去
1
,因为在生成标注时不需要预测标注的结束符。
-
模型创建一个用于存储词预测分数的张量,其维度为
(batch_size,max_decode_length, vocab_size)。
-
初始化
LSTM
的隐藏状态,并将图像特征经过线性变换初始化成
LSTM
的输入。然后,模型通过迭代时间步来生成标注文本中的每个词。
-
在每个时间步,模型使用强制学习来生成下一个词的预测分数。
-
预测分数经过线性层和丢弃层后,得到每个词的概率分布。