[0052] 为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。应当明确,所描述的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0053] 本发明实施例给出一种基于深度学习的视频对象移除篡改时空域定位方法,如图1所示,该方法包括以下步骤:
[0054] 步骤101,将数据集随机划分出用于制作训练集、验证集和测试集的视频序列,其中,用于制作训练集、验证集和测试集的视频数量之比为6:2:2。
[0055] 步骤102,将分出的用于制作训练集和验证集的视频按照时域定位算法的输入要求制作出训练集和验证集,由于数据集中原始帧的数量是篡改帧的几倍,所以采用裁剪采样策略,对原始帧进行欠采样操作,对篡改区域进行过采样操作,以达到正负样本的均衡化。具体的裁剪策略如图2所示,针对数据集尺寸为1280×720,在连续5帧的原始帧中按照均匀步长裁剪出3份5×(720×720)尺寸的数据;在含有篡改区域的连续5帧中,在5帧中的篡改区域周围对齐均匀裁剪出13份5×(720×720)尺寸的数据。所有裁剪出的数据块的label为中间帧的label,这样就获得了大量的正负样本数量相当的数据集,以适合本发明中的深度学习算法。其中验证集与训练集的裁剪方式保持一致。
[0056] 步骤103,时空三叉戟网络,如图3所示,其包含三个数据预处理操作。具体地,对于输入的连续五帧三通道视频图像数据,首先经过最大池化层进行空域尺寸的降维,以减小计算量,然后经过SRM层,提取视频帧高频信号。在时域定位算法中的数据预处理层最大池化层步长设置为1×3×3,在空域定位算法中的数据预处理层最大池化层步长设置为1×2×2。 SRM层是由三个参数固定的卷积核构成的三维卷积层,分别输出三种不同的视频帧高频残差信号,如图3中三种不同颜色所示,三种不同颜色的卷积核分别对应三种不同颜色的高频残差特征图。其中,SRM层的三个卷积核如图4所示。
[0057] 其中,时空三叉戟网络对不同输入情况下的判断机制如图5所示,在视频移除篡改时域定位中,对于不同的输入,如图5所示,连续五帧中,以中间帧frame2为主帧,以frame0, frame1,frame3,frame4为辅助帧,可以列出以下10种情况(此处假设连续篡改帧不少于5 帧,通常,连续篡改帧数会远大于此)。其中水鸭色块表示原始帧,橙红色块表示被篡改帧。对于每一种情况,若连续三帧均为篡改帧,其对应分支用0表示;若连续三帧均为篡改帧,其对应分支用1表示;若连续三帧中同时包含篡改帧和原始帧,则用X表示。可以得出结论:三个分支中,若至少有一个分支为1,则中间帧必为1,即篡改帧,如图3中红色虚线框中所示;
相似的,三个分支中,若至少有一个分支为0,则中间帧必为0,即原始帧;三个分支中若存在X,表示连续五帧中同时包含原始帧和篡改帧。由于数据集中情况1和情况6是最多的输入类型,因此,为了加强对篡改帧和原始帧过渡区域帧的检测能力,将三个分支中存在 X的情况设置一个帧权重:X_weight设置为1,其他情况设置为0,用于在loss函数增加一个惩罚项。
在实际的时域定位算法中,在本发明中并不会输出0/1/X这样具体的结果来进行判断,而是将三个分支最后输出为3个向量,并使用双向长短期记忆网络BiLSTM来进行解码判断,三个时间步相当于三个“裁判员”来综合三个分支的输出进行最终的帧类别判定。在视频移除篡改空域定位中,假设时域定位算法已经将图3中输入情况4~8的中间帧分类为篡改帧,且假设空域定位算法在三个分支中都具有独立进行空域定位的能力,则对于输入情况 4~8,空域定位算法至少有一个3D CNN分支是可以正常工作的,可以正常工作的分支将输出高置信度的预测区域,不能正常工作的分支将提供低置信度的预测区域。因此,将三个分支的输出结果通过对置信度进行非极大值抑制操作,筛选出置信度高的预测区域来作为最终的篡改区域空域定位预测结果。
[0058] 步骤104,帧分类神经网络,其与步骤103的时空三叉戟网络共同构成时域定位算法。时域定位算法的网络结构如图6所示。输入为裁剪出的尺寸为5×(720×720)×3的数据块,其中3表示图像的通道数。输入数据经过图3中时空三叉戟结构的数据处理层,数据处理层将数据切片为3个分支的数据块。3个分支的数据块流入3个权值共享的3D CNN网络结构中,同时提取连续3帧在时空域高频区域的特征,最后统一编码为128维的向量。使用双向长短期记忆网络BiLSTM来作为解码器,以解码器两个方向的输出状态之和作为解码输出,最后使用全连接层和softmax层将结果转化为二分类问题,以达到对篡改帧在视频时域进行定位的目的。
[0059] 作为编码器的3D CNN网络各层的含义如图6右上角虚线框中所示,不同的颜色代表不同的操作层。其中卷积层中的数字表示卷积核的个数,所有的卷积操作后均使用批标准化操作BN和激活函数ReLu。其前两层为3D卷积层,卷积核大小均为3×3×3,3D卷积层后均进行3D平均池化操作,步长均为2×5×5。时域维度为3的数据经过两次池化操作后维度降为1,通过reshape操作将特征图变换为2D,然后再进行3次2D卷积操作,2D卷积操作后均使用2D平均池化操作,池化操作步长均为5×5。第一次2D卷积使用尺寸为3×3的卷积核,后面2次2D卷积使用尺寸为1×1的卷积核,将特征图升维到128,最后使用全局平均池化,将特征图简化编码为128维的向量。
[0060] 作为解码器的双向长短期记忆网络BiLSTM是由前向LSTM与后向LSTM组合而成。 LSTM可以捕捉较长距离的依赖关系,而BiLSTM可以更好的捕捉双向的语义依赖,两者在自然语言处理任务中都常用来建模上下文信息。在发明中,使用双向长短期记忆网络BiLSTM 来实现对篡改帧与原始帧的分类“投票机制”,通过分析3个分支的编码信息来进行解码操作,最后达到分类的目的。LSTM的总体框架如图7所示,而本发明中的BiLSTM的具体解码方式如图8所示,对于视频帧分类任务来说,本发明采用的解码方案是[hL2,hR2]。即将前向LSTM和反向LSTM最后一步的隐状态进行向量相加后作为解码输出,最后经过全连接层和SoftMax层转换为分类问题。在本发明中,使用堆叠了两层的BiLSTM,两层的神经元数量均设置为64。
[0061] 时域定位算法的Loss函数定义为:
[0062]
[0063] 其中,N为输入数据的批大小,FL为Focal loss函数,用于主要的视频帧分类任务,其参数为预测结果序列preds,真实值标注序列labels,用于调节类别不平衡的参数α和用于调节难易样本不平衡的参数γ;CE为交叉熵函数,frame_weights为在图3中定义的X‑weight 参数序列,用来针对输入数据块中既包含原始帧又包含篡改帧的情况,仅当这种情况下Loss 的第二部分才不为0,β为额外惩罚项的权重。由于我们已经对正负样本进行了均衡化,所以实验中设置α为0.5,γ设置为的2。其中使用的focal loss函数的原型为:
[0064] FL(pt)=‑αt(1‑pt)γlog(pt)
[0065] 其中,pt为预测为正样本的置信度,αt为预测为正样本的损失权重,用来调节正负样本数量的不均衡,γ为调节难易样本不均衡的超参数。
[0066] 步骤105,时域定位算法在训练阶段的批大小设置为64,即每次喂入神经网络的图像块维度为64×5×(720×720)×3。根据训练过程中验证集的表现挑选出精确度最高的模型来作为时域定位模型。
[0067] 步骤106,将分出的用于制作训练集和验证集的视频按照篡改区域空域定位算法的输入要求制作出训练集和验证集。由于需要在篡改帧的整个帧内进行区域定位,所以训练数据集只需要对连续的整帧数据进行定位训练,且只需要训练连续的篡改帧。因此,扩充数据集的方法不再采用裁剪操作,而是对连续5帧的篡改帧采取水平翻转、垂直翻转和水平垂直翻转的操作来扩充数据集,篡改区域标注也应做相应变换。与时域定位中数据标注相似,中间帧的区域标注作为每连续五帧的数据块的篡改区域标注。
[0068] 步骤107,与步骤103的作用相同,不同之处为三维池化层池化步长为1×2×2。
[0069] 步骤108,其与步骤107的时空三叉戟网络共同构成空域定位算法。空域定位算法的网络结构图如图9所示。输入为进行翻转操作扩充后的连续5帧的篡改帧数据集,输入数据块尺寸大小为5×(720×1280)×3。输入数据经过图3中时空三叉戟网络结构的数据处理层,使用切片操作,把数据分为三个分支流。与时域定位算法相似,三个分支数据流通过权值共享的骨干网络3D‑ResNet12(见图10)将特征图在时域空间进行合并操作。三个分支的特征图流分别经过三个相互独立的RPN网络进行篡改区域回归定位训练。空域定位算法在训练阶段的批大小设置为2,即每次喂入神经网络的图像块维度为2×5×(720×1280)×3。
[0070] 3D‑ResNet12是本发明设计的骨干网络,具有12层的3D残差网络结构,如图10所示。将各层意义和参数按照不同的颜色块定义在图10的上半部分,骨干网络色块中的数字表示卷积核的个数。骨干网络包含3个block和一个特征图切片操作,其中每个block内部都有从第一层到最后一层的短接层,block之间有从前一个block第三层到下一个卷积层第二层的短接层。短接层和要进行连接的层都提供一半的特征层数,拼接后再使用激活函数ReLu进行激活操作。所有的短接层均使用1×1×1的卷积核,主干网路的3D卷积层均使用3×3×3的卷积核。在每个block中,前3层3D卷积层使用参数为5的空洞卷积,第4层3D卷积层采用1×2×2的卷积步长来代替池化层在特征图空域进行降维操作。如图中所示,骨干网络的输入数据尺寸为3×(360×640)×3,其中第一个3表示连续三帧的时间维度,第二个3表示图像通道数;则Block3输出尺寸为3×(45×80)×32,其中3依然表示时间维度,32表示特征图数量,45×80表示特征图尺寸。将时间维度为3的特征图进行切片操作,然后将3个时间维度的特征图进行堆叠降维,最后输出尺寸为(45×80)×96的特征图。将输出的特征图作为RPN网络的“原材料”。
[0071] 在RPN算法中,使用尺寸为1×1的2D卷积层来对建议框进行分类和回归的训练,输出预测框编码序列及其分类置信度。为了降低目标区域误检率,设定每一帧中参与训练的前景框与背景框数量之比为1:λ,约束公式为:
[0072]
[0073] bg_num=min(roi_num‑fg_num,fg_num×λ)
[0074] 其中,fg_num为前景框的总数;roi_num为一个常数,其大小控制着训练密度。在实验过程中,设置roi_num为128,设置λ为5。
[0075] RPN算法先验框尺寸的设定方法:使用K‑mean聚类方法分别在训练集所有篡改区域宽度和高度中迭代出3个值做为先验框的宽度、3个值做为先验框的高度。然后就可能获得9(3 ×3)种尺寸的先验框。
[0076] 空域定位算法的Loss函数为三个分支分类和回归的loss之和,定义如下:
[0077]
[0078] 其中,FL为focal loss函数,用于分类单帧内的区域建议框为前景框(篡改区域)还是背景框(原始区域),其参数preds为建议框的分类预测结果,labels为通过建议框boxAnchor与真实篡改区域boxGroundTruth的交并比iou与所设置阈值比较得到的结果:
[0079]
[0080] α是用来调节参与训练的前景框与背景框数量不均衡的参数;γ是条件难易样本不均衡的参数,仅设置为2。GIoU_loss为框回归定位loss函数,其参数须是预测框坐标和真实框坐标,因此,经过与锚框编码后的预测框坐标bboxpreds和真实框坐标bboxtargs需要先进性解码操作,再计算定位的误差值,其中GIoU_loss算法如下:
[0081]
[0082] 步骤109,类似于步骤105,在测试阶段设置批大小为1,即每次喂入神经网络的图像块维度为1×5×(720×1280)×3,测试结果取三个分支预测序列中置信度最高的预测框作为最终预测区域。选取在验证集上精确度最高的模型来作为空域定位模型。
[0083] 步骤110,将分出的用于制作测试集的视频按照时域定位算法的输入要求制作出测试集,测试集中全部采用原始帧的裁剪方式,如图2的(a)所示。
[0084] 步骤111,将时域定位模型加载到时域定位算法中测试步骤110产生的测试数据,在测试阶段设置批大小为3,即每次喂入神经网络的图像块维度为3×5×(720×720)×3,它们是每连续五帧中裁剪出来的三份数据,三份数据的结果共同判断中间帧是否为篡改帧。判断的依据是:三份全部预测为原始帧,则结果预测为原始帧;否则预测为被篡改帧。
[0085] 步骤112,此步骤检测出的篡改帧序列是由步骤111对测试视频的每一帧进行分类得到的。
[0086] 步骤113,将篡改帧序列按照篡改区域定位算法的输入要求制作打包数据集,测试数据集不需要翻转操作来扩充数据集。
[0087] 步骤114,类似于步骤111,将空域定位模型加载到空域定位算法中测试步骤113产生的测试数据,在测试阶段设置批大小为1,即每次喂入神经网络的图像块维度为1×5×(720× 1280)×3,测试结果取三个分支预测序列中置信度最高的预测框作为最终预测区域。
[0088] 步骤115,通过步骤114得到所有篡改帧中篡改区域的定位结果,效果图如图11所示。
[0089] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。