基于卷积神经网络的深度图像描述方法技术

技术编号:22330204 阅读:42 留言:0更新日期:2019-10-19 12:17
本发明专利技术公开了一种基于卷积神经网络的深度图像描述方法,涉及计算机视觉与自然语言处理的交叉领域,涉及图像处理、自然语言理解、深度学习、机器学习等技术领域,解决了以往基于长短时神经网络的图像描述方法无法并行训练的问题。同时,本发明专利技术能够更好地捕捉到生成单词之间的长距依赖以及学习到如何自适应地关注图像和语言特征。

【技术实现步骤摘要】
基于卷积神经网络的深度图像描述方法
本专利技术涉及计算机视觉与自然语言处理的交叉领域,涉及图像处理、自然语言理解、深度学习、机器学习等
,尤其涉及一种基于卷积神经网络的深度图像描述方法。
技术介绍
近年来,图像描述任务在学术界受到广泛的研究。该任务的主要目的在于构建一种机器学习算法,在接收自然图片输入后,生成对该输入的语言描述。这一任务旨在对视觉环境进行语义解释,是视觉感知的高级任务。当前,主要的图像描述算法均基于编码器-解码器(Encoder-Decoder)的结构,这类框架使用一个深度卷积神经网络作为图像的编码器,将输入的原始图像编码为一个高维的特征向量。然后再使用长短时记忆网络(Long-Short-Term-MemoryNetwork,LSTM)作为解码器,接收编码后的图像特征向量,并将其解码为自然语言。这种基于长短时记忆网络的解码器模型有其固有缺陷。首先,训练数据必须按照前后顺序输入神经网络之中,以至于其不能进行并行计算,导致模型的优化时间较长。其次,这类模型在面对较长的输入数据时,不善于建模长句依赖,同时易产生梯度消失等问题。为了解决这一问题,有研究者提出完全基于卷积神经网络(ConvolutionalNeuralNetwork)的语言解码器,使得网络的训练能够并行化。基于卷积神经网络的语言解码器存在以下几个问题。首先,该模型的注意力机制(attention)仅应用于图像特征和语言特征两个模态之间,忽略了语言局部特征之间的关联。其次,该模型在训练时是基于交叉熵损失来训练的,而在测试模型的过程中,我们需要用专用的指标来评价模型的好坏。因此,基于交叉熵损失训练的模型不一定能够使得生成的结果达到最优。最后,这种基于交叉熵的训练方式在训练时需要图像对应的真实文本标签,而在测试时,我们无法获得图像对应的真实文本标签,这将导致训练与测试出现偏差。
技术实现思路
本专利技术所要解决的技术问题是针对
技术介绍
中所涉及到的缺陷,提供一种基于卷积神经网络的深度图像描述方法。本专利技术为解决上述技术问题采用以下技术方案:基于卷积神经网络的深度图像描述方法,包含以下步骤:对MSCOCO训练数据集中的所有真实描述句子进行预处理,在所有真实描述句子的首部添加起始标识单词,在所有真实描述句子的结尾添加结尾标识单词;记录所有出现次数大于等于预设的第一次数阈值的单词,并将所有出现次数小于预设的第一次数阈值的单词替换为未知标识单词;为所有单词标记索引,形成词汇表,将所有真实描述句子用单词的索引表示,即“one-hot”表示;对于MSCOCO训练数据集中每一幅原始图像:步骤1),将原始图像经过深度学习库的resize函数调整后,输入至预训练好的深度卷积神经网络,得到原始图像的特征图表示;使用深度学习库中的网络构建函数构建两层的全连接神经网络M1,将原始图像的特征图表示输入全连接神经网络M1中,得到原始图像的图像特征表示;将原始图像图像特征表示经过深度学习库中的维度调整函数,将其由三维调整为二维,得到调整过后的图像特征表示、记为m;步骤2),使用深度学习库中的词嵌入网络构建函数构建词嵌入表示层,输入原始图像对应的真实描述句子的“one-hot”表示,对真实描述句子中的每个词做词嵌入操作,得到由词向量表示的真实描述句子的特征,记为x;步骤3),使用深度学习库中的卷积网络构建函数构建一维卷积神经网络,输入真实描述句子的特征x,并将一维卷积神经网络的前一半通道输入深度学习库的GLU函数中,得到特征图s;将一维卷积神经网络的后一半通道输入深度学习库的GLU函数中,得到特征图c;步骤4),使用深度学习库中的线性网络层构建函数构建四个全连接神经网络M2、M3、M4、M5,将s分别输入全连接神经网络M2、M3、M4中,得到3个输出,记为q,k,v;用深度学习库中的维度调整函数,将q,k,v调整为sent_len*d1*d2的张量,d1为预设的第一二维长度阈值,d2为预设的第一三维长度阈值;利用深度学习库中的矩阵相乘函数,将q和k的转置进行乘积,并除以d1,得到d1个大小为sent_len*sent_len的张量后将其输入深度学习库中的softmax函数,对该张量的最后一个维度做softmax操作,得到大小为d1*sent_len*sent_len的张量,将该结果标记为word_score;将word_score与v通过深度学习库中的矩阵相乘函数进行相乘,得到大小为sent_len*d1*d2的张量,通过深度学习库中的维度调整函数,调整为sent_len*dm大小的张量,dm=d1*d2,输入全连接神经网络M5中,得到大小为sent_len*dm的张量,重新记为s;步骤5),使用深度学习库中的线性网络层构建函数构建四个全连接神经网络M6、M7、M8、M9,将c输入全连接神经网络M6中,得到大小为sent_len*dm的张量,记为q’;将m分别输入全连接神经网络M7、M8中,得到2个输出,记为k’,v’,大小均为feat_len*dm;用维度调整函数,将q’调整为sent_len*d3*d4的张量,将k’,v’调整为feat_len*d3*d4的张量,d3为预设的第二二维长度阈值,d4为预设的第二三维长度阈值;利用矩阵乘法函数,将q和k的转置进行乘积,并除以d3,得到大小为d3*sent_len*feat_len的张量后将其输入深度学习库中的softmax函数,对该张量的最后一个维度做softmax操作,得到大小为d3*sent_len*feat_len的张量,标记为image_score;将image_score与v通过矩阵乘法函数进行相乘,得到大小为sent_len*d3*d4的张量,通过维度调整函数,调整为sent_len*dm大小的张量,输入全连接神经网络M9中,得到大小为sent_len*dm的张量,重新记为c;步骤6),利用深度学习库中的求均值函数对word_score的第二、三维度求平均,得到大小为sent_len*1的张量,利用求均值函数对image_score的第三个维度求平均得到大小为sent_len*feat_len的张量,利用深度学习库中的拼接函数将得到的大小为sent_len*1的张量和大小为sent_len*feat_len的张量在第二个维度上进行拼接,得到大小为sent_len*(feat_len+1)的张量;利用softmax函数对大小为sent_len*(feat_len+1)的张量的第二个维度进行操作,得到sent_len*(feat_len+1)大小的张量,取其第二个维度的最后一个元素、大小为sent_len*1的张量记为β,根据公式β*s+(1-β)*c进行计算,得到大小为sent_len*dm维,记为x;步骤7),重复步骤3)到步骤6),重复次数为预设的第二次数阈值,得到大小维sent_len*d_m的张量,记为h;步骤8),利用深度学习库中的线性网络层构建函数,构建全连接神经网络M10,输入为大小为dm的维,输出为大小为dv的维;将h输入全连接神经网络M10,得到输出dm*dv大小的张量,将该张量输入pytorch中的softmax函数,得到dm*dv大小的张量,记为y;步骤9),利用深度网络学习库中本文档来自技高网
...

【技术保护点】
1.基于卷积神经网络的深度图像描述方法,其特征在于,包含以下步骤:对MSCOCO训练数据集中的所有真实描述句子进行预处理,在所有真实描述句子的首部添加起始标识单词,在所有真实描述句子的结尾添加结尾标识单词;记录所有出现次数大于等于预设的第一次数阈值的单词,并将所有出现次数小于预设的第一次数阈值的单词替换为未知标识单词;为所有单词标记索引,形成词汇表,将所有真实描述句子用单词的索引表示,即“one‑hot”表示;对于MSCOCO训练数据集中每一幅原始图像:步骤1),将原始图像经过深度学习库的resize函数调整后,输入至预训练好的深度卷积神经网络,得到原始图像的特征图表示;使用深度学习库中的网络构建函数构建两层的全连接神经网络M1,将原始图像的特征图表示输入全连接神经网络M1中,得到原始图像的图像特征表示;将原始图像图像特征表示经过深度学习库中的维度调整函数,将其由三维调整为二维,得到调整过后的图像特征表示、记为m;步骤2),使用深度学习库中的词嵌入网络构建函数构建词嵌入表示层,输入原始图像对应的真实描述句子的“one‑hot”表示,对真实描述句子中的每个词做词嵌入操作,得到由词向量表示的真实描述句子的特征,记为x;步骤3),使用深度学习库中的卷积网络构建函数构建一维卷积神经网络,输入真实描述句子的特征x,并将一维卷积神经网络的前一半通道输入深度学习库的GLU函数中,得到特征图s;将一维卷积神经网络的后一半通道输入深度学习库的GLU函数中,得到特征图c;步骤4),使用深度学习库中的线性网络层构建函数构建四个全连接神经网络M2、M3、M4、M5,将s分别输入全连接神经网络M2、M3、M4中,得到3个输出,记为q,k,v;用深度学习库中的维度调整函数,将q,k,v调整为sent_len*d1*d2的张量,d1为预设的第一二维长度阈值,d2为预设的第一三维长度阈值;利用深度学习库中的矩阵相乘函数,将q和k的转置进行乘积,并除以d1,得到d1个大小为sent_len*sent_len的张量后将其输入深度学习库中的softmax函数,对该张量的最后一个维度做softmax操作,得到大小为d1*sent_len*sent_len的张量,将该结果标记为word_score;将word_score与v通过深度学习库中的矩阵相乘函数进行相乘,得到大小为sent_len*d1*d2的张量,通过深度学习库中的维度调整函数,调整为sent_len*dm大小的张量,dm=d1*d2,输入全连接神经网络M5中,得到大小为sent_len*dm的张量,重新记为s;步骤5),使用深度学习库中的线性网络层构建函数构建四个全连接神经网络M6、M7、M8、M9,将c输入全连接神经网络M6中,得到大小为sent_len*dm的张量,记为q’;将m分别输入全连接神经网络M7、M8中,得到2个输出,记为k’,v’,大小均为feat_len*dm;用维度调整函数,将q’调整为sent_len*d3*d4的张量,将k’,v’调整为feat_len*d3*d4的张量,d3为预设的第二二维长度阈值,d4为预设的第二三维长度阈值;利用矩阵乘法函数,将q和k的转置进行乘积,并除以d3,得到大小为d3*sent_len*feat_len的张量后将其输入深度学习库中的softmax函数,对该张量的最后一个维度做softmax操作,得到大小为d3*sent_len*feat_len的张量,标记为image_score;将image_score与v通过矩阵乘法函数进行相乘,得到大小为sent_len*d3*d4的张量,通过维度调整函数,调整为sent_len*dm大小的张量,输入全连接神经网络M9中,得到大小为sent_len*dm的张量,重新记为c;步骤6),利用深度学习库中的求均值函数对word_score的第二、三维度求平均,得到大小为sent_len*1的张量,利用求均值函数对image_score的第三个维度求平均得到大小为sent_len*feat_len的张量,利用深度学习库中的拼接函数将得到的大小为sent_len*1的张量和大小为sent_len*feat_len的张量在第二个维度上进行拼接,得到大小为sent_len*(feat_len+1)的张量;利用softmax函数对大小为sent_len*(feat_len+1)的张量的第二个维度进行操作,得到sent_len*(feat_len+1)大小的张量,取其第二个维度的最后一个元素、大小为sent_len*1的张量记为β,根据公式β*s+(1‑β)*c进行计算,得到大小为sent_len*dm维,记为x;步骤7),重复步骤3)到步骤6),重复次数为预设的第二次数阈值,得到大小维sent_len*d_m的张量,记为h;步骤...

【技术特征摘要】
1.基于卷积神经网络的深度图像描述方法,其特征在于,包含以下步骤:对MSCOCO训练数据集中的所有真实描述句子进行预处理,在所有真实描述句子的首部添加起始标识单词,在所有真实描述句子的结尾添加结尾标识单词;记录所有出现次数大于等于预设的第一次数阈值的单词,并将所有出现次数小于预设的第一次数阈值的单词替换为未知标识单词;为所有单词标记索引,形成词汇表,将所有真实描述句子用单词的索引表示,即“one-hot”表示;对于MSCOCO训练数据集中每一幅原始图像:步骤1),将原始图像经过深度学习库的resize函数调整后,输入至预训练好的深度卷积神经网络,得到原始图像的特征图表示;使用深度学习库中的网络构建函数构建两层的全连接神经网络M1,将原始图像的特征图表示输入全连接神经网络M1中,得到原始图像的图像特征表示;将原始图像图像特征表示经过深度学习库中的维度调整函数,将其由三维调整为二维,得到调整过后的图像特征表示、记为m;步骤2),使用深度学习库中的词嵌入网络构建函数构建词嵌入表示层,输入原始图像对应的真实描述句子的“one-hot”表示,对真实描述句子中的每个词做词嵌入操作,得到由词向量表示的真实描述句子的特征,记为x;步骤3),使用深度学习库中的卷积网络构建函数构建一维卷积神经网络,输入真实描述句子的特征x,并将一维卷积神经网络的前一半通道输入深度学习库的GLU函数中,得到特征图s;将一维卷积神经网络的后一半通道输入深度学习库的GLU函数中,得到特征图c;步骤4),使用深度学习库中的线性网络层构建函数构建四个全连接神经网络M2、M3、M4、M5,将s分别输入全连接神经网络M2、M3、M4中,得到3个输出,记为q,k,v;用深度学习库中的维度调整函数,将q,k,v调整为sent_len*d1*d2的张量,d1为预设的第一二维长度阈值,d2为预设的第一三维长度阈值;利用深度学习库中的矩阵相乘函数,将q和k的转置进行乘积,并除以d1,得到d1个大小为sent_len*sent_len的张量后将其输入深度学习库中的softmax函数,对该张量的最后一个维度做softmax操作,得到大小为d1*sent_len*sent_len的张量,将该结果标记为word_score;将word_score与v通过深度学习库中的矩阵相乘函数进行相乘,得到大小为sent_len*d1*d2的张量,通过深度学习库中的维度调整函数,调整为sent_len*dm大小的张量,dm=d1*d2,输入全连接神经网络M5中,得到大小为sent_len*dm的张量,重新记为s;步骤5),使用深度学习库中的线性网络层构建函数构建四个全连接神经网络M6、M7、M8、M9,将c输入全连接神经网络M6中,得到大小为sent_len*dm的张量,记为q’;将m分别输入全连接神经网络M7、M8中,得到2个输出,记为k’,v’,大小均为feat_len*dm;用维度调整函数,将q’调整为sent_len*d3*d4的张量,将k’,v’调整为feat_len*d3*d4的张量,d3为预设的第二二维长度阈值,d4为预设的第二三维长度阈值;利用矩阵乘法函数,将q和k的转置进行乘积,并除以d3,得到大小为d3*sent_len...

【专利技术属性】
技术研发人员:张道强陈若煜
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1