system: [SYSTEM]

user: 3. 融合GRU和非极大值抑制的视频摘要生成模型 本文所提模型包括特征提取模块、重要性得分生成模块和摘要生成模块，其整体结构如图1所示。特征提取模块负责对输入的原始视频下采样和特征提取，将获得的视频帧序列输出到下一模块；重要性得分生成模块负责分析并捕捉视频帧序列的上下文信息，生成帧级重要性得分；摘要生成模块根据重要性得分结果，使用非极大值抑制去除冗余帧，生成相应的关键帧序列和关键镜头序列。 图1. 融合GRU和非极大值抑制的视频摘要生成模型结构图 3.1. 特征提取模块 本文将GoogLeNet [ 19 ] 作为帧特征提取器，负责提取视频数据每一帧的图片特征。与其他卷积神经网络不同，GoogLeNet在网络层之间添加了多个inception块，一定程度上减少网络层数，在相同的计算量下具有更好的分类性能。GoogLeNet中的inception结构如图2所示，通过引入Inception块，GoogLeNet在相同尺寸的感受野中能叠加更多的卷积，提取到更丰富的帧特征；同时Inception中的多个1 × 1卷积层能有效降低模型的维度，防止训练阶段出现过拟合。 图2. Inception结构图 由于所用数据集中的部分视频数据包含较多冗余帧，相近的视频帧具有相近的特征，故本文首先需要对原始视频帧序列进行下采样。根据时间顺序生成原始视频的视频帧序列，记为V，则下采样后的视频帧序列 V ′ 由V每30帧中随机抽取2帧组成。然后将 V ′ 输入到经过预训练的GoogLeNet中，获得帧级图片特征序列，记为 Z = { F 0 ， F 1 ， F 2 ， ⋯ ， F n − 1 } ，其中 F i 表示下采样后第i帧的特征向量，n表示下采样后的总帧数。 3.2. 基于GRU的Seq2Seq模型计算重要性得分 本文将获取帧级重要性得分任务看成机器翻译任务，将获取帧级重要性得分过程按照机器翻译过程进行处理。获取帧级重要性得分模块的输入是视频帧特征序列 Z = { F 0 ， F 1 ， F 2 ， ⋯ ， F n − 1 } ，其中 F i 表示第i帧的图片特征向量。Z由上一模块的GoogleNet网络提取获得。获取帧级重要性得分模块的输出是重要性得分序列 P = { S 0 ， S 1 ， S 2 ， ⋯ ， S n − 1 } ，其中 S i 表示第i帧的重要性得分。 即便Seq2Seq模型善于处理序列数据，它仍然存在一些弊端。Seq2Seq模型的编码器将输入编码为固定大小状态向量的过程是一个信息有损压缩的过程，信息量越大，该转化向量的过程对信息的损失就越大；同时Seq2Seq模型中的循环神经网络(Recurrent Neural Network， RNN)在处理过长的序列时，若对当前状态有用的信息距当前状态的时间间隔较大，这些信息记录将变得模糊，导致在训练时出现梯度弥散问题且计算效率低下；除此之外，模型连接编码器和解码器的模块组件只有一个固定大小的状态向量，导致解码器无法直接去关注到输入信息的更多细节。 针对以上提到的问题，本文在下面分别对编码器和解码器做出相应的改进。 3.2.1. 编码器改进：双向GRU网络提取上下文信息 本文采用双向GRU网络提取视频帧的上下文信息。GRU (Gate Recurrent Unit) [ 20 ] 作为一种循环神经网络的变体结构，通过控制重置门(Reset Gate)和更新门(Update Gate)来处理当前节点的上一状态信息(即上一视频帧的有效信息)和上一层输入数据(即当前视频帧的图片特征)，并获得当前节点的状态信息(即当前视频帧的有效信息)。GRU网络可以解决RNN中存在的长期记忆模糊问题和反向传播中的梯度弥散问题；同时相较于包含3个门信息的LSTM单元，GRU具有更少的训练参数，在保证精度的情况下优化了训练中反向传播的计算效率。 在本文的编码器中，每个GRU的重置门有针对性地记忆当前视频帧图片特征的信息，更新门则调节上一视频帧有效信息的保留比例，最终输出当前视频帧的有效信息。图3展示了单个GRU的内部结构。图中 h t − 1 表示第 t − 1 帧的有效信息， x t 表示第t帧的图片特征， y t 和 h t 表示第t帧的有效信息，r和u分别表示重置门信息和更新门信息。 图3. GRU结构( ⊙ 表示点乘操作， ⊕ 表示相加操作) GRU的工作过程分为三步：首先，根据第t帧的图片特征 x t 和第 t − 1 帧的有效信息 h t − 1 来获取重置门信息r和更新门信息u： r = σ ( W r ⋅ c o n c a t ( x t ， h t − 1 ) ) (1) u = σ ( W u ⋅ c o n c a t ( x t ， h t − 1 ) ) (2) 其中 c o n c a t (   ) 表示将两个向量或矩阵进行拼接， W r 和 W u 是需要训练的权重参数， σ (   ) 表示使用sigmoid函数归一化。然后，使用重置门r筛选出上一视频帧对当前帧的有用数据 x ′ ： x ′ = tanh ( W x ⋅ c o n c a t ( x t ， h t − 1 ⋅ r ) ) (3) 其中 h t − 1 ⋅ r 表示将第 t − 1 帧的有效信息 h t − 1 和所得重置门信息r进行点乘， tanh (   ) 表示通过双曲正切函数将结果约束在(−1， 1)之间。最后，使用所得更新门信息u计算第t帧的有效信息 y t ： h t = u ⋅ h t − 1 + ( 1 − u ) ⋅ x ′ (4) y t = h t (5) 其中 u ⋅ h t − 1 进行遗忘操作，将第 t − 1 帧的信息选择性遗忘， ( 1 − u ) ⋅ x ′ 进行记忆操作，将第t帧的图片特征选择性记忆。最终得到的 h t 用于计算第 t + 1 帧的有效信息， y t 作为当前GRU的输出。 由公式(4)可以看出，每个GRU包含的其他帧的信息均以加算的形式保留在当前状态中，因此在反向传播时，每一个过去状态的相应影响权重不会趋向于0，避免梯度弥散问题。 针对视频帧序列的特性，本文不仅要考虑当前帧之前的视频帧对当前帧的影响，也要考虑当前帧之后的视频帧对当前帧的影响，故采用双向GRU网络作为获取帧级重要性得分模块的编码器。双向GRU网络包括forward层和backward层。经过特征提取的视频帧序列输入到双向GRU网络后，forward层从 F 0 到 F n − 1 正向计算并保存当前帧之前各帧对当前帧的影响信息，backward层从 F n − 1 到 F 0 反向计算并保存当前帧之后各帧对当前帧的影响信息。最后在每个时刻结合forward层和backward层的相应时刻输出的结果得到的当前帧最终的有效信息。在编码器中，通过GRU计算第t帧的有效信息 o t ： h f t = f G R U ( x t ， h t − 1 ) (6) y f t = h f t (7) h b t = f G R U ( x t ， h t + 1 ) (8) y b t = h b t (9) o t = σ ( W f o y f t + W b o y b t ) (10) 其中 f G R U (   ) 表示根据第t帧的图片特征和第 t − 1 帧的有效信息，经过使用公式(1)-(5)的过程计算获得第t帧的正向(或反向)有效信息。 y f t 和 h f t 表示forward层中第t帧的正向有效信息， y b t 和 h b t 则表示backward层中第t帧的反向有效信息，通过公式(10)对两层的输出加权求和，并使用sigmoid函数对结果进行归一化，获得第t帧的最终有效信息 o t 。 3.2.2. 解码器改进：结合注意力机制获得重要性得分 为了解决有损压缩的中间向量难以存储足够信息的问题，本文在解码器部分结合注意力机制对视频帧信息进行解码。 注意力机制 [ 21 ] 通过借鉴人类视觉注意力的工作原理，在序列中筛选出重要性更高的部分作为当前节点输出的判断依据。在本文中，注意力机制模块首先通过快速扫描全局视频帧，获得需要重点关注的几个目标帧，然后对上述目标帧投入更多注意力资源，以获取更多对当前帧的重要性评判的信息，同时抑制非目标帧的无用信息。除了加入注意力机制之外，本文在解码器部分同样采用GRU网络，进一步减少参数的数量，提高计算效率。 本文的解码器解码过程如图4所示。根据在编码器中获得的每一帧的有效信息 o i ，结合解码器每个时刻的状态 S j ，可以求得第j时刻的注意力信息 c o n t e x t j 。 图4. 结合GRU网络和注意力机制的获取视频帧重要性得分过程 α i ， j = exp ( e ( o i ， s j ) ) ∑ i exp ( e ( o i ， s j ) ) (11) c o n t e x t j = ∑ i α i ， j o i (12) 其中 α i ， j 表示其他每一帧i对第j帧的注意力权重， e ( o i ， s j ) 是相关度函数，衡量当前帧与解码器状态的相关度，本文采用的相关度函数是： e ( o ， s ) = X tanh ( Y h + Z s ) (13) 其中 X ， Y ， Z 是模型参数。 c o n t e x t j 反映了对当前视频帧最相关的信息。进一步地，利用所得 c o n t e x t j 可以计算出解码器 j + 1 时刻的状态 s j + 1 以及 j + 1 时刻的重要性得分 p j + 2 ： s j + 1 = f G R U ( p j + 1 ， c o n c a t ( s j ， c o n t e x t j ) ) (14) p j + 2 = s j + 1 (15) 通过将j时刻的状态 s j 和第j帧的注意力信息 c o n t e x t j 拼接后作为 j + 1 时刻的输入，解码器可以在解码的每一步查询最相关的原视频有效信息，避免中间向量信息不足问题。 3.3. 基于非极大值抑制生成视频摘要 现有方法通常使用DPP算法或动态规划的方法生成视频摘要，两者所选取的视频摘要均具有不错的概括能力，但是这些方法主要通过重要性得分的高低筛选关键帧，而没有关注所选取的关键帧之间的特征相似程度，因此在生成的视频摘要中仍存在一定程度的冗余。在视频摘要生成模块中，与现有模型不同，本文将去除冗余帧作为主要任务，基于非极大值抑制的思想设计算法方案，在筛选关键帧时，不仅考虑重要性得分更高的视频帧，同时根据帧与帧之间的图片相似度，过滤与已选视频帧相似度高于阈值的视频帧，使在关键帧序列中重要性得分总和尽可能高的前提下，保证关键帧之间的相似度尽可能低。 在生成关键帧序列的步骤中，按照算法1，遍历上一模块获得的帧级重要性得分序列，采用基于非极大值抑制的算法去除冗余帧，生成关键帧序列。 算法1的第2行将帧级重要性得分序列P重新排序，使遍历序列P时优先筛选得分更高的帧。在遍历序列P过程中，5~7行限制关键帧序列K的长度，保证K的长度不大于m；9~14行计算当前帧 c u r f r a m e 与关键帧序列K中每一帧之间的相似度并与阈值 α 比较，第10行中 s i m ( Z [ c u r f r a m e ] ， Z [ k f r a m e ] ) 表示根据 c u r f r a m e 和 k f r a m e 的特征向量采用余弦距离计算相似度；若上一步中与K中每一个关键帧的相似度均低于 α ，则将 c u r f r a m e 加入K中；20行将K按时间顺序重新排列，作为所提模型的静态视频摘要。 进一步地，根据上一模块得到的关键帧序列K和帧级重要性得分P，按照算法2，筛选出关键帧对应的关键镜头，并根据当前关键镜头序列的总时长情况，决定删减或扩充镜头时长。与文献 [ 14 ] 和文献 [ 15 ] 相同，本文采用基于核的时域分割(kernel temporal segmentation，KTS) [ 9 ] 镜头检测算法获取镜头序列P'，并且将最后生成的关键镜头序列总时长n限定在原视频长度的15%左右。 算法2的5~10行通过遍历关键帧序列K，将所有关键帧对应的镜头加入关键镜头序列S中；12~23行通过删减K中不含关键帧的镜头以解决K时长过长的情况；25~35行通过贪心算法补充镜头以解决K时长不足的情况，其中第26行的镜头级重要性得分由镜头中所有帧得分相加获得。 Algorithm 1. Algorithm for getting key frame sequence 算法1. 获取关键帧序列算法 Algorithm 2. Algorithm for getting key shot sequence 算法2. 获取关键镜头序列算法