2. 河南省电子商务大数据处理与分析重点实验室, 洛阳 471934
2. Henan Key Laboratory for Big Data Processing & Analytics of Electronic Commerce, Luoyang 471934, China
图像描述涉及了计算机视觉和自然语言处理两部分的内容, 它是利用模型把一张图片转化成与之对应的自然语言描述. 图像描述在多个领域都具有重要的作用, 例如导盲、自动生成图片标签等, 这不仅方便了人们的生活, 也为大数据时代随之而来的海量图片标注减少了大量的人力.
图像描述生成[1]主要经历了3个发展阶段: 基于模板的图像描述生成[2-4], 该方法通过检测得到物体及物体属性之间的关系, 之后将单词填入固定的句子模板, 但该模型过于死板; 基于检索的图像描述生成[5], 该方法先检索与当前图像相似的图像作为模板, 在检索图像关系前需要调整, 这个步骤增加了算法的复杂度; 基于深度学习的图像描述生成[6,7], 通过构建编码器-解码器框架, 采用端到端的方法对模型进行训练. 相对前两种方法, 后者在图像描述的准确性上有较大的提升. Vinyals等提出NIC (Neural Image Caption)模型[8], 其思路来源于机器翻译通过最大化源语言S转化成目标语言T的概率p(T/S), 将第一个循环神经网络(Recurrent Neural Networks, RNN)替换成卷积神经网络(Convolutional Neural Networks, CNN)[9], 用于提取图片的特征. Xu等[10]在NIC模型的基础上引入注意力机制, 提取图片的重要信息, 提升了模型的准确率. 大多数的视觉注意力机制只建模空间注意力机制(spatial attention). Chen等提出了SCA-CNN模型[11], 该模型同时建模空间注意力机制和通道注意力机制(channel-wise attention), 较大的提升了模型的性能, 但该模型不够轻便、灵活. Woo等在SCA-CNN的基础上提出了一种轻量级通用卷积块注意力机制模块(Convolutional Block Attention Module, CBAM)[12]. 该注意力机制结合空间注意力机制和通道注意力机制, 并且两种注意力机制都使用平均池化和最大池化技术, 使模型的效果更好.
考虑到注意力机制在图像描述生成中的有效性, 在文献[12]的基础上提出了一种基于CBAM的图像描述生成模型. 该模型将CBAM模块应用到Inception-v4[13]网络中, 用于提取图片特征, 并送入长短期记忆网络(Long Short-Term Memory, LSTM)[14], 生成符合图像内容描述的自然语言. 模型使用dropout和正则化技术防止过拟合, 利用Word2Vec[15]技术对自然语言进行编码处理, 以避免维度灾难等问题.
1 模型架构 1.1 Inception-v4网络结构卷积神经网络是深度学习的核心技术, 目前性能接近的两个网络为Inception-v4和Inception-ResNet-v2. 本文选取Inception-v4网络作为基准网络, 结构如图1.
Inception-v4网络与Inception-v3网络相比具有更多的Inception模块, 可以弥补Inception-v3网络的缺点. 在Inception模块和ResNet模块不混合的情况下, Inception-v4网络达到了较好的性能. 针对数据集中图片大小不一致的问题, 首先对图片的尺寸进行规范化, 规范化后图片的大小为299×299. 在Stem模块中使用并行结构, 在保证损失最小的情况下, 使得模型计算量最小. 网络中使用4层Inception-A、7层Inception-B和3层Inception-C结构, 使得网络结构加深, 分别在最后一个Inception-A和Inception-B模块后面添加Reduction模块, 用来降低计算量, 从而降低模型的复杂度. 为了降低特征维度, 更好地提取图像特征信息, 加入平均池化模块. 引入dropout模块, 防止模型在训练中过拟合, 提升模型的泛化能力.
1.2 长短期记忆网络模型采用LSTM网络作为解码器处理时序信息, 生成对应图片的描述语句. LSTM能够在一定程度上解决梯度消失和难以捕捉远距离时间信号的问题. LSTM网络主要包括了4个模块, 分别是遗忘门(ft)、输入门(it)、输出门(Ot)和细胞状态(Ct), 如图2所示. 从细胞状态Ct−1到Ct的信息传输线中完成了Ct的更新. 遗忘门、输入门和输出门用Sigmoid层表示, tanh层分别表示细胞状态的输入与输出. LSTM首先通过Sigmoid层控制遗忘层, 对上一时刻的输出结果选择性的通过. 更新公式为:
${f_t} = \sigma ({W_f}*[{h_{t - 1}},{x_t}] + {b_f})$ | (1) |
其中, σ表示Sigmoid函数, ht−1表示上一个LSTM的输出, xt表示此刻LSTM的信息输入, Wf为权重矩阵, bf是偏置向量, [ht−1, xt]表示两个矩阵的拼接.
接下来决定在细胞中保存哪些重要信息, 包括两部分, 一部分是通过it更新数值, 另一部分是通过tanh层得到新的候选值. 给上一时刻的状态乘ft, 遗忘掉之前不重要的信息, 再用it×t加上前者得到Ct. 公式如下:
${i_t} = \sigma ({W_i}*[{h_{t - 1}},{x_t}] + {b_i})$ | (2) |
${C_t} = {f_t}*{C_{t - 1}} + {i_t}*{\tilde C_t}$ | (3) |
其中, Wi表示权重矩阵, bi表示偏置向量,
最后一步先计算得到Ot, 然后使用tanh函数对细胞状态Ct进行处理, 乘上Ot的值得到LSTM单元的输出ht. 公式如下所示:
${O_t} = \sigma ({W_o}*[{h_{t - 1}},{x_t}] + {b_o})$ | (4) |
${h_t} = {O_t}*\tanh ({C_t})$ | (5) |
其中, Wo表示权重矩阵, bo表示偏置向量.
1.3 CBAM模块为了提高模型提取图像特征的准确性, 在Inception-v4网络的基础上加入CBAM模块, 从空间注意力机制和通道注意力机制两方面获取图像更多的关键信息. 与文献[11]中的SCA-CNN模型相比, CBAM模块可移植性强, 轻便灵活, CBAM模块如图3所示.
CBAM模块包括两部分内容, 分别是空间注意力模块和通道注意力模块. CBAM的输入是特征矩阵, 首先经过通道注意力机制生成新的特征矩阵, 再和保留的特征矩阵进行卷积操作, 所得矩阵作为空间注意力机制模型的输入, 通过空间注意力机制模块的特征再和未通过的特征卷积, 就得到了新的特征矩阵. 在卷积网络的每个卷积模块上, 通过CBAM自适应地调整特征矩阵. 为了提高网络的表示能力, 在通道注意力机制模块和空间注意力机制模块中加入最大池化和平均池化操作. 两种注意力机制模块分别如图4和图5所示.
对于输入的特征F, 分别经过最大池化和平均池化, 接着经过共享多层感知器, 将得到的两个特征相加, 再经过Sigmoid函数, 最终生成通道注意力特征映射Mc, 公式如下:
$\begin{split} {M_c}(F) &= \sigma (MLP(AvgPool(F)) + MLP(MaxPool(F))) \\ & = \sigma ({W_1}({W_0}(F_{\rm avg}^c)) + {W_1}({W_0}(F_{\max }^c))) \end{split} \!\!\!\!\!\!\!\!\!\!\!\!\!\!\!$ | (6) |
式中, σ表示Sigmoid函数, MLP表示共享多层感知器, AvgPool表示平均池化, MaxPool表示最大池化. W0和W1都表示权重矩阵, r表示缩减率. 首先使用平均池化和最大池化聚合通道特征信息, 生成
将通道注意力特征和输入特征进行一个基于对应元素逐个相乘的乘法操作, 生成空间注意力机制的输入特征
$\begin{split} {M_s}({F’}) & = \sigma \left( {{f^{7\times{\rm{7}}}}([AvgPool({F’});MaxPool({F’})])} \right) \\ & = \sigma \left( {{f^{7\times 7}}([F_{\rm avg}^s;F_{\max }^s])} \right) \end{split} $ | (7) |
式中,
本文模型采用编码器-解码器(encoder-decoder)框架. 编码器部分选用Inception-v4网络作为特征提取的基准网络. 解码器部分选取LSTM网络, 该网络能够较好的处理序列类型的结构数据, 解决梯度消失等问题. 通过将CBAM融入Inception-v4网络提取图像特征, 并和LSTM网络共同构建图像描述模型, 生成与图像对应的自然语言描述. 通过最大化p(T/S)完成图片T到目标句子S的转化任务. 模型框架如图6所示. 输入图像经过预处理之后尺寸大小为299×299, 并作为模型的输入. 在Inception-v4网络中加入CBAM注意力机制作为模型提取图片特征的网络, 分别在每个Inception-A、Inception-B、Inception-C模块后面加入CBAM, 共加入14个CBAM模块. 改变Inception-v4的原有结构, 去掉Softmax层, 在最底层加入全连接层, 目的是将1536维特征向量转化为512维, 便于图片特征向量与词向量映射到同一向量空间. 同时, 为了避免维度灾难问题, 对标注语句S用Word2Vec进行编码, 将编码后的矩阵We与上一时刻LSTM单元生成的单词St−1相乘, 并将乘积送入此刻LSTM单元, 按时序逐步得到与目标图片内容相符的句子S. 使用Adam优化模型, 使模型概率之和达到最优. 模型使用LSTM作为解码模块, 可以较好的处理时序问题, 提升整体模型的准确性.
对于图像描述生成模型, 模型中所有参数训练更新可以概括如下:
${\theta ^*} = \arg \mathop {\max }\limits_\theta \sum\nolimits_{(I,S)} {\log p(S|I;\theta )} $ | (8) |
其中,
LSTM网络按照时间序列处理数据, 每个时刻生成一个单词, 选取概率最大的单词加入句子, 逐步生成对应的描述语句. 生成句子概率公式如下:
$\log p(S|I) = \sum\limits_{t = 0}^N {\log p({S_t}|I,{S_0},\cdots,{S_{t - 1}})} $ | (9) |
使用随机梯度下降算法对式(9)进行优化. 用固定长度的隐藏层状态ht表示S0,S1,…, SN, 当输入xt时, ht可以按照如下公式进行更新:
${h_{t - 1}} = f({h_t},{x_t})$ | (10) |
其中, f是一个函数, 为了更好地解决问题, 选取LSTM网络作为f.
2 实验过程 2.1 实验环境采用微软MSCOCO 2014版本的数据集. 该数据集实际共有80类, 例如Bottle、Sofa、Car类等, 包括训练集、验证集和测试集, 分别放在train2014、val2014和test2014文件夹中, 其中训练集共有82783张图片, 验证集有40504张, 测试集有40775张, 每张图片共有5句标注, 并分别存放在相应的JSON文件中. 模型训练过程中并没有沿用划分测试集加入训练集的重新构造的方式, 而是把原训练集所有类型的所有图片全部用于训练整个模型, 验证集所有类型的所有图片全部用于模型评价准则的评估. 测试集可以选取少部分验证模型的有效性. 该数据集能够较好地完成图像描述生成模型的实验. 采用Tensorflow框架, 使用GPU (TITAN XP)进行训练.
2.2 评价指标实验采用Bleu-1[16]、Bleu-4[16]、METEOR[17]和CIDEr[18]作为模型的评价指标. Bleu主要是用来测试两个句子之间的相似程度, 最初, Bleu通过一个句子出现在另一个句子中单词的数量来判定两个句子的相似度, 之后, 经过几次不断的改进, 引入惩罚值和最佳匹配长度计算语句之间的精度. METEOR测试精度主要是考虑准确率和召回率, 它的出现是为了弥补Bleu中的不足. Bleu和向量空间模型结合产生了CIDEr, 可以用来评价图像描述生成模型是否提取到图片的关键信息.
2.3 实验设置本文模型对不同参数设置了两个实验, 分别称为Model1和Model2. Model1首先对标注语句进行处理, 限定句子的长度为20, 不足的位置补0. 语句开始标志为<S>, 结束标志为</S>. 设置batch_size=27, LSTM随机失活因子lstm_dropout_keep_prob=0.5, Inception-v4模型参数的学习率train_inception_learn_rate=0.0003, 梯度裁剪clip_gradients=5. 模型训练时设置迭代次数为60万步. 初始化learn_rate值为2, 使用tf.train.exponential_decay(其为Tensorflow中的方法)创建训练步数衰减的学习速率, 设置staircase为true, 表示阶梯衰减, 如图7所示. 使用集束搜索(beamsearch)方法逐步生成描述语句, 每个时间序列保留概率p最大的几个句子, 迭代操作这个步骤, 将beam大小设置为3. 初始化后图像尺寸为299×299, 长短期记忆网络输入输出均为512维. 将词汇字典尺寸大小设置为12000, 将频率出现4次以上的单词存入词汇表. 利用Adam计算并得到频率最高的单词.
由图7可以看出, 学习率在450 k步的时候受超参数设置影响而趋于稳定, 考虑到这些超参数影响因子的问题, 重新设置了个别超参数的值并进行实验, 称为Model2. 设置batch_size=32, 向上调整每次批处理数据的大小, 对Inception-v4模型参数的学习率重新设置, 即train_inception_learn_rate=0.0005, 将梯度裁剪clip_gradients设置为8. Learn_rate的值仍然初始化为2, 变化如图8所示. 其他超参数及方法不变.
由图8可见, 使超参数值都向上增加之后的模型Model2的学习率在900 k的时候趋于稳定. 说明Model1过早拟合, Model2的学习结果较好.
2.4 实验办法
Model1和Model2均采用以下实验方法: 为了提高模型的准确性和训练速度, 预先加载在ImageNet上预训练好的Inception-v4网络参数文件. 训练集图像初始化尺寸为299×299, 并作为模型的输入, 经过改进后特征提取网络的各层之后, 图片特征为512维. 将图像特征和采用Word2Vec技术编码的词向量矩阵作为LSTM网络的输入, 每个时刻, LSTM单元都会生成单词. 按照beamsearch方法保留概率最大的3个, 逐步生成描述语句S.
3 实验结果与分析 3.1 模型的损失率Model1和Model2均采用本文模型进行实验, 模型的损失细化为每个步骤产生的正确单词的概率之和的负数, 公式如下所示:
$L(I,S) = - \sum\limits_{t = 1}^N {\log {p_t}({S_t})} $ | (11) |
其中, I表示输入模型的训练集图像, St为每个时刻生成的单词, S表示图片的标注语句.
为了提高模型的准确率, 在Inception-v4网络中融合CBAM注意力机制, 更加精确地提取图片重要部分的信息. 使用Word2Vec技术对标注语句进行编码, 相对于one-hot编码而言, Word2Vec可以指定维度, 对特征矩阵进行压缩, 减少了特征矩阵的存储空间, 提升了模型的准确性. 图9给出了Model1的损失图, 可以看出Model1的损失稳定在2.2左右. 图10给出了Model2的损失图, 可以看出, 重新设置超参数之后的模型的损失稳定在2到2.1之间, Model2比Model1损失更少, 算法性能更好. 为了更好的降低误差, 采用随机梯度下降算法更新参数, 优化模型. 模型的损失度明显呈下降趋势, 最终趋于稳定.
3.2 模型的实验效果
为了展示Model1和Model2的实验效果, 在验证集中选取了4张图片, 如图11所示. Moedl1在对图11(a)生成的描述是: a row of motorcycles parked next to each other (一排并排停放着的摩托车), Model2对图11(a)生成的描述是: A motorcycle parked in front of a garage (停在车库前的摩托车), 可以发现Model2的概率高于Model1, 并且根据人工标注 (a motorcycle parked in front of a building)和图片本身内容发现Model2描述更加准确. 图11(b)中, Model1生成的描述语句是: A black and white dog sitting on a bench (一只黑白相间的狗坐在长凳上), Model2生成的描述语句是: A dog sitting on a sidewalk next to a bike (一只狗坐在人行道上, 旁边是一辆自行车), 人工标注语句是: A dog sitting on a sidewalk next to a bicycle (一只狗坐在人行道上, 旁边是一辆自行车), 可以看出Model2比Model1描述效果更好. 图11(c)中Model1的描述语句为: A baseball player holding a bat on top of a field (球场上棒球手拿着球棒), Model2和人工标注语句是一致的: A baseball player swinging a bat at a ball (球场上挥击棒球的运动员), 结合图片内容, Model1、Model2和人工标注均能准确描述图片内容并且语句基本相同. 图11(d)中描述差异较大, Model1的描述是: A brown bear standing on top of a rock (一只熊站在岩石上), 而图片内容中并没有出现岩石, 描述不准确, Moedl2 (a brown bear standing on top of a grass covered field)和人工标注 (a brown bear is sitting in a field)均表达正确. 综合以上所诉, Model2能够很好地表达出图片的属性以及属性之间的关系.
3.3 客观评价准则对比
为了进一步验证Model1和Model2两个实验的有效性, 采用Bleu-1、Bleu-4、METEOR和CIDEr这4个评价准则进行评估, 并与Google NIC[8]、Multimodal RNN[19]、Hard-Attention[10]和SCA-CNN-ResNet[11]比较, 结果如表1所示.
可以看出, Model2的性能明显优于其他模型. Model2在Bleu-4的数值与SCA-CNN-ResNet模型相同, 在METEOR上的分数高出0.009. 在CIDEr上比Multimodel RNN高0.266, 该值说明了Model2更好的提取到了图像重要部分信息. Mdel2在Bleu-1上的分数接近SCA-CNN-ResBet模型, 比Multimodal RNN高0.091. Model1的性能在四个评价指标上略低于Model2, 分别低于Model1 0.007、0.009、0.009和0.005, Model2的性能优于Model1. 从模型评价准则得分表可以得出, Model2的综合性能优于其他模型.
4 结论与展望
模型采用Inception-v4网络作为基准网络. 为了进一步增强模型提取特征的能力, 在每个Inception模块之后加入CBAM模块. CBAM是一个轻量级的模块, 它的计算量可以忽略不计, 它可以嵌入到任何一个卷积神经网络中, 提升卷积神经网络的准确性, 更好地提取图片重要信息. SCA-CNN模型中空间注意力机制和通道注意力机制的应用与CBAM相比较为复杂. 采用LSTM网络弥补循环神经网络的缺点, 更好地处理远距离信号问题. 在图像的关键信息提取方面仍有很大的进步空间, 需要进一步研究.
[1] |
楼佳珍. 基于深度学习的图像描述生成[硕士学位论文]. 西安: 西安电子科技大学, 2018.
|
[2] |
Farhadi A, Hejrati M, Sadeghi MA, et al. Every picture tells a story: generating sentences from images. 11th European Conference on Computer Vision. Heraklion, Crete, Greece. 2010. 15−29.
|
[3] |
Kuznetsova P, Ordonez V, Berg AC, et al. Collective generation of natural image descriptions. Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics: Long Papers. Stroudsburg, PA, USA. 2012. 359−368.
|
[4] |
Mitchell M, Han XF, Dodge J, et al. Midge: Generating image descriptions from computer vision detections. Proceedings of the 13th Conference of the European Chapter of the Association for Computational Linguistics. Avignon, France. 2012. 747−756.
|
[5] |
Socher R, Karpathy A, Le QV, et al. Grounded compositional semantics for finding and describing images with sentences. Transactions of the Association for Computational Linguistics, 2014, 2(1): 207−218.
|
[6] |
黄友文, 游亚东, 赵朋. 融合卷积注意力机制的图像描述生成模型. 计算机应用, 2020, 40(1): 23-27. |
[7] |
孔锐, 谢玮, 雷泰. 基于神经网络的图像描述方法研究. 系统仿真学报, 2020, 32(4): 601-611. |
[8] |
Vinyals O, Toshev A, Bengio S, et al. Show and tell: A neural image caption generator. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Boston, MA, USA. 2015. 3156−3164.
|
[9] |
李彦冬, 郝宗波, 雷航. 卷积神经网络研究综述. 计算机应用, 2016, 36(9): 2508-2515, 2565. DOI:10.11772/j.issn.1001-9081.2016.09.2508 |
[10] |
Xu K, Ba JL, Kiros R, et al. Show, attend and tell: Neural image caption generation with visual attention. Proceedings of the 32nd International Conference on International Conference on Machine Learning. Lile, France. 2015. 2048−2057.
|
[11] |
Chen L, Zhang HW, Xiao J, et al. SCA-CNN: Spatial and channel-wise attention in convolutional networks for image captioning. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, HI, USA. 2017. 6298−6306.
|
[12] |
Woo S, Park J, Lee JY, et al. CBAM: Convolutional block attention module. 15th European Conference on Computer Vision. Munich, Germany. 2018. 3−19.
|
[13] |
Szegedy C, Ioffe S, Vanhoucke V, et al. Inception-v4, inception-ResNet and the impact of residual connections on learning. Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence. San Francisco, CA, USA. 2017. 4278−4284.
|
[14] |
Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735 |
[15] |
Liu Y, Liu ZY, Chua TS, et al. Topical word embeddings. Proceedings of the Twenty-Ninth AAAI Conference on Artificial Intelligence. Austin, TX, USA. 2015. 2418−2424.
|
[16] |
You QZ, Jin HL, Wang ZW, et al. Image captioning with semantic attention. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA. 2016. 4651−4659.
|
[17] |
Lin CY. Rouge: A package for automatic evaluation of summaries. Proceedings of the Workshop on Text Summarization Branches Out, Post-Conference Workshop of ACL 2004. Barcelona, Spain. 2004. 74−81.
|
[18] |
Vedantam R, Lawrence Zitnick C, Parikh D. CIDEr: Consensus-based image description evaluation. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Boston, MA, USA. 2015. 4566−4575.
|
[19] |
Karpathy A, Li FF. Deep visual-semantic alignments for generating image descriptions. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(4): 664-676. DOI:10.1109/TPAMI.2016.2598339 |