域泛化的尺度对齐翻拍图片检测系统

文档序号:27831728发布日期:2021-12-07 22:27阅读:139来源:国知局
域泛化的尺度对齐翻拍图片检测系统

1.本发明涉及的是一种图像处理领域的技术,具体是一种域泛化的尺度对齐翻拍图片检测 系统。


背景技术:

2.数字图像取证中的一个分支为对翻拍图像(recaptured image)的鉴定。对直接拍摄得到 的图像,使用某种方式重现后,再次使用拍摄设备获取重现的图像称之为翻拍图像。现有的分 类方法通过综合多个来源,或者采用数据增强的手段解决数据量缺乏的问题。而不同来源的数 据集本身具有多种不同的特征的边缘分布,构成了迁移学习中的多个独立的域。使用与训练时 使用到的域不同的域的数据进行测试,称为域切换,这种测试方法更加贴近实际生产使用场景。 直接将多个不同的域合成为一个数据集的域的做法由于分布上的偏差,导致对算法学习到的特 征而言,其性能容易受域切换的影响。在实际应用场景中,通常其检测内容的分布等信息在训 练时是未知的,因而对翻拍检测算法的泛化能力提出了现实挑战。


技术实现要素:

3.本发明针对现有翻拍图像检测技术针对不同数据来源的分布偏差问题以及不同尺度下 决策函数分布不一致的问题,提出一种域泛化的尺度对齐翻拍图片检测系统,能够提升综合多 个小数据集训练时算法在未知数据上的翻拍检测准确度,可以大幅度提升实际应用场景下多数 据来源、未知应用场景、图像尺度不一致情况下的准确度。
4.本发明是通过以下技术方案实现的:
5.本发明涉及一种域泛化的尺度对齐翻拍检测系统,包括:预处理模块、对称的对抗学习 模块、任务模块、全局的尺度关系对齐模块以及局部特征三元损失挖掘模块,其中:预处理模 块对待测图像进行窗口提取并生成尺度金字塔,对抗学习模块在训练模式下接收尺度金字塔中 大小两级尺度一一对应的两种不同尺度级别的输入,将其分别嵌入特征空间,任务模块根据嵌 入的特征空间中的特征向量信息得到最终翻拍和直拍的概率值,全局的尺度关系对齐模块根据 任务模块对预处理模块产生的同一个图像的一大一小两个尺度级别上的尺度金字塔层级所计 算的向量值,即分类的打分进行对称的kl散度计算,得到kl散度值,局部特征三元损失挖掘 模块根据嵌入的特征空间中的特征向量信息,每次随机选取一个特征向量作为锚点,再从锚点 所属的类别中选取一个特征向量作为正样本,从另一类里面选取一个特征向量作为负样本,分 别计算锚点与正负样本的特征空间上的欧式距离之和作为三元组的损失,并穷举输入数据中的 所有三元组,对所有三元组的损失求平均值,得到总损失,训练过程中将该损失最小化从而在 特征空间进行局部的三元损失挖掘,提升特征嵌入的紧凑性,保证清晰的决策边界。
6.所述的尺度金字塔共两层且分别对应每张输入图像所产生的大小两级尺度。
7.所述的对称是指:同一张图像输入在预处理模块产生一大一小两个尺度级别,在
对抗学 习过程中不作区分;且对翻拍、直拍的类别也不进行区分。因此一大一小的尺度、翻拍直拍的 类别在该模块中计算的意义下是对称的,因此具有对称性。
8.所述的对抗学习模块包括:两个并联的resnet 18骨干网络构成的特征生成单元和一个 域判别器,其中:两个resnet 18骨干网络组成对称的两组特征嵌入网络,两部分通过一个梯 度反向层连接,最后使用分类损失单元计算域判别器的损失。
9.所述的对称的两组特征嵌入网络是指:两个骨干网络采用参数共享的策略对图像进行特 征提取,通过梯度反向层相连的域判别器与特征嵌入网络进行对抗,从而将不同域的数据分布 对齐,使特征嵌入网络学习共享的特征空间。
10.所述的任务模块包括:两个级联的线性层结点,其中:线性层结点根据嵌入的特征空间 中的特征向量信息得到一个向量值,作为分类的打分,再使用softmax函数进行向量值的归一 化,得到最终翻拍和直拍的概率值。
11.所述的翻拍和直拍的概率值,在测试或实际应用时直接按照概率值更大的一个判定为直 拍或翻拍的类别,训练时使用这两个概率值和真实的类别计算交叉熵,从而利用交叉熵指导网 络学习到翻拍和直拍类别的概念。
12.所述的三元组包括:锚点、正样本和负样本,其中:正样本包括当锚点恰好属于翻拍图 像的特征向量,则选择另一个翻拍图像的特征向量。
13.所述的kl散度值,在测试或实际使用时该模块不参与计算,训练过程中通过对该kl 散度值进行反向传播,将域之间和域之内的不同尺度的特征构成的分类的分布对齐,从而降低 不同尺度的差异对性能的影响,进一步提升泛化能力。技术效果
14.本发明通过两个resnet 18骨干网络分别接受预处理模块生成的一大一小两个尺度级别 上的图像窗口信息。且在对抗学习的过程中,每张图像在一大一小两个尺度上所嵌入的特征都 参与域分类器的训练,且数据集中的翻拍和直拍数据也全部参与域分类器的训练,因此对抗学 习模块具有对称性。
15.与现有技术相比,本发明能在多个不同来源数据集构成的训练集上训练、在分布信息未 知的翻拍检测测试或实际应用任务中达到更低的错误率(用hter衡量)和更强的泛化能力(用 auc衡量);同时解决了图像尺度分布差异导致的检测错误率升高的问题。
附图说明
16.图1为本发明系统整体结构示意图;
17.图2为实施例训练过程示意图;图3为实施例测试使用过程示意图。
具体实施方式
18.如图1所示,为本实施例涉及一种域泛化的尺度对齐翻拍图片检测系统,包括:预处理 模块、对称的对抗学习模块、任务模块、全局的尺度关系对齐模块以及局部特征三元损失挖掘 模块,其中:预处理模块对图像进行窗口提取并生成尺度金字塔,作为后面对称的对抗学习模 块的输入;对称的对抗学习模块在训练模式下接收两种不同尺度级别的输入,将其分别嵌入特 征空间,(测试和实际应用时只使用一侧网络接收输入)对称的两组特
征嵌入网络采用参数共享 的策略对图像进行特征提取,通过梯度反向层相连的域判别器与特征嵌入网络进行对抗,从而 将不同域的数据分布对齐、使特征嵌入网络学习共享的特征空间;任务模块即传统的分类线性 层结点和交叉熵损失,指导网络学习到翻拍和直拍类别的概念;全局的尺度关系对齐模块将域 之间和域之内的不同尺度的特征构成的分类的分布对齐,从而降低不同尺度的差异对性能的影 响,进一步提升泛化能力;局部特征三元损失挖掘模块在特征空间进行局部的三元损失挖掘, 提升特征嵌入的紧凑性,保证清晰的决策边界。
19.所述的预处理模块包括:整理单元、小尺度级别单元和大尺度级别单元,其中:整理单 元将数据集的每个域中全部图片、翻拍图片、直拍图片、测试图片、训练图片分类存放到json 文件中,文件中每一条记录保存图片的绝对路径以及图片翻拍、直拍的标签,小尺度级别单元 将图片读取为pilimage数据,并对齐进行1:2降采样,再从中间位置截取256*256*3大小的 窗口作为小尺度图片,该窗口构成一个小尺度级别窗口,之后通过以[0.485,0.456,0.406], [0.229,0.224,0.225]的参数对其进行归一化得到最终的对称的对抗学习模块的小尺度级别输入, 大尺度级别单元将图片分别读取为pilimage数据,并从中间位置截取256*256*3大小的窗口 作为大的尺度级别上的统一格式的输入图片,然后通过以[0.485,0.456,0.406],[0.229,0.224, 0.225]的参数对其进行归一化得到最终的对称的对抗学习模块的大尺度级别输入。
[0020]
所述的整理是指:将数据集的每个域中全部图片、翻拍图片、直拍图片、测试图片、训 练图片分类存放到json文件中,文件中每一条记录保存图片的绝对路径以及图片翻拍、直拍的 标签。在训练或验证过程中,预处理模块读取源域,即参与训练的域翻拍和直拍的json记录, 并随机选取相同数量的图片作为测试集,即目标域。
[0021]
大小两个尺度的输入和对应的标签被提供给后面所有的模块用于计算。在测试过程中, 小尺度级别的输入被屏蔽,只留下大尺度级别的输入用于分类。
[0022]
所述的尺度指任意目标对象在图片中的相对大小。同一目标在大尺度级别的图片中占据 的比例更大,在小尺度级别的图片中占据的比例更小。
[0023]
所述的对称的对抗学习模块测试和实际应用时只使用一侧网络接收输入,包括:两个并 联的resnet 18骨干网络构成的特征生成单元、梯度反向层、域识别单元和分类损失单元,其 中:特征生成单元的两个输入口分别与两组resnet

18骨干网络相连,对应接收两个尺度级别, 提取相同类别、相同内容、但是不同尺度级别的特征后将二者按顺序在批量维度上合并并批量 地分别输出至任务模块、全局的尺度关系对齐模块、局部特征三元损失挖掘模块以及对称的对 抗学习模块的梯度反向层;梯度反向层在不同时间分别进行前向传播时将输入直连到输出且不 作任何运算和修改或后向传播时将输出的梯度值与

1相乘,再乘以反向以降低训练初期噪声的 影响;域识别单元对特征生成单元所嵌入的特征进行域的分类,其输出的结点数量为总的使用 数据集数量;分类损失单元计算交叉熵损失。
[0024]
所述的反向系数其中:exp为指数函数,后向传播的次数与总次数 的比值其中:current_iteration为当前后向传播轮次,在本实施例中从1增 长到4000,total_iteration为设置的总的后向传播轮次,在本实施例中total_iteration设置为 4000。
[0025]
所述的任务模块包括:平均值单元、具有两个线性层结点的分类单元和损失单元,其中: 平均值单元对翻拍、直拍的嵌入特征求平均值得到两组平均特征值,分类单元对嵌入的特征进 行翻拍、直拍的分类任务,损失单元在训练过程中将分类单元输出的类别与实际类别进行比较, 并按照正确、错误数量的统计进行计算得到一个损失值,作为最终的综合损失的一部分进行后 向传播。
[0026]
所述的线性层结点接收512维的嵌入的特征,输出为2维的浮点数,经过softmax函数 处理为归一化的翻拍、直拍的概率置信度。按照置信度更大的类别作为最终的类别输出。
[0027]
所述的任务模块通过2个结点的线性层结点torch.nn.linear(in_features=512, out_features=2)进行分类,将特征生成器嵌入的512维特征分类到翻拍图片和直拍图片两个类 别中,具体为:将线性层结点的2维输出使用softmax函数进行概率的归一化操作,在最终得 到直拍、翻拍两种类别的概率,按概率更大的为最终的列别作为分类原则,并且在任务模块中 对数据的域,即输入的数据以及输入的数据的边缘分布构成的二元组不作区分,其中:翻拍图 片和直拍图片分别指使用拍摄器材对显示器拍摄的图片,以及使用拍摄器材对自然场景中的对 象拍摄的图片。
[0028]
所述的源域指参与训练的域,目标域指用于测试的域。
[0029]
所述的尺度关系对齐模块包括:与任务模块的分类单元相连的kl散度计算单元,该kl 散度计算单元的输入为大、小两个尺度级别的分类的置信度分布,即维度(b,2,2)的张量使用对 称化的kl散度衡量每一对同样内容不同尺度的图片在翻拍、直拍的特征的差异,并取二者在 任务模块的分类单元输出值的对称化的kl散度作为这一对图片的尺度损失;将批量中所有尺 度损失平均值作为最终该尺度关系对齐模块的输出值,其中:b为在训练或测试时设置的批量 大小,输出为维度为1的损失数值。
[0030]
所述的全局的尺度关系对齐模块通过将与翻拍、直拍无关的尺度差异引起的最终分类单 元输出的分布的差异最小化,做到将两种分布进行对齐,从而增强嵌入的特征空间的泛化能力, 使其对全局的尺度差异不敏感。
[0031]
所述的局部特征三元损失挖掘模块对嵌入的特征空间进行进一步的局部的限制,该模块 包括:三元损失计算单元,该三元损失计算单元穷举数据集中所有三元组,并计算其损失,再 将所有三元组的三元损失求平均值作为最终结果。
[0032]
所述的损失的计算方式为:先选取一个特征作为锚点,再在其同一类别中的特征中选取 一个作为正样本,计算二者的距离,再从与其不同类别中的特征中选取一个作为负样本,计算 二者的距离。将锚点与正样本的距离减去锚点与负样本的距离作为一个三元组上的三元组损失。 通过穷举所有的三元组损失加和平均得到最终的三元组损失。局部特征三元损失挖掘模块在特 征空间的局部进行约束,提升特征表示的紧致性,有助于优化特征空间上的决策边界,从而帮 助提升泛化能力。
[0033]
本实施例涉及一种基于上述系统的域泛化的尺度对齐翻拍检测方法,具体步骤包括:
[0034]
s1)训练域泛化的尺度对齐翻拍检测模型。
[0035]
s1.1)预处理选中的3个数据集,使用generate_label.py生成全部训练数据和对应标签的 json列表文件。具体为:逐个处理3个训练用数据集,取出所有图片的绝对路径,
并将对应的 标签(翻拍:1,直拍:0)一并存入json文件;
[0036]
s1.2)在3个训练用数据集中分别随机选取等量数据用于训练,采用每个数据集、每个类 别随机选取608张图片,随机数种子选取666,将其路径和标签写入训练的json文件备查;
[0037]
s1.3)按照批量b对3个数据集中的图片进行分批读入,每一个轮次一个批量,b=8,3 个数据集共24张图片构成一个批量。使用pilimage库读取图片为pil格式,然后保留一份, 复制一份;
[0038]
s1.4)将保留的一份图片不作任何resize操作,直接在中心裁剪256*256的窗口,转换 为tensor格式,然后以[0.485,0.456,0.406],[0.229,0.224,0.225]的参数对其进行归一化得到大 尺度图片输入;
[0039]
s1.5)将复制的一份图片转换为tensor格式,然后降采样,横向、纵向都隔一个像素取 一个,得到1:2降采样tensor,再转换回pil格式,再在中心裁剪256*256的窗口,转换为tensor格式,然后以[0.485,0.456,0.406],[0.229,0.224,0.225]的参数对其进行归一化得到小尺 度图片输入;
[0040]
s1.6)将s1.4和s1.5中得到的图片在批量维度上合并,得到一个批量为48的输入,每 一个成员都为256*256*3的归一化的彩色图片,将合并后的批量输入到对称的对抗学习模块中 的特征生成单元;
[0041]
s1.7)使用resnet在imagenet上训练好的公开模型resnet18

5c106cde初始化特征生成 单元;
[0042]
s1.8)对resnet的layer4后面的池化层修改为nn.adaptiveavgpool2d(output_size=1), 并修改bottleneck_layer为nn.linear(512,512),输出的嵌入特征维度为512维;
[0043]
s1.9)将合并的批量图片输入到特征生成单元,得到(48,512)维的特征;
[0044]
s1.10)将这个(48,512)维的特征复制3份备用,第一份输入对称的对抗学习模块的梯度 反向单元,第二份输入任务模块,第三份输入局部特征三元损失挖掘模块;
[0045]
s1.11)在梯度反向单元,前向传播时对训练轮次计数,后向传播时对梯度乘以一个系数其中:k为前向传播所计数的轮次和总轮次的比值,总轮次设置为4000;
[0046]
s1.12)域识别单元设置为两层线性层结点和一个dropout层的级联,其中:线性层结点 分别为512个结点和domains个结点,domains为训练时用到的数据集数量,设置为3;dropout 层的概率设置为0.5,插在两个线性层结点中间;
[0047]
s1.13)前向传播时,按照图片来自的数据集对其标签进行编码0,1,2,传入分类损失单 元进行交叉熵的计算,得到对抗学习损失l1;
[0048]
s1.14)在任务模块,使用一层线性层结点作为分类器,结点数为2,分别对应翻拍、直 拍两个类别,输出两个类别上的得分,每一张图片都有两个得分用于评估两个类别上的概率, 这部分的输出维度为(48,2);将翻拍、直拍图像的特征值分别求平均值,同样进行两个类别的 打分,这部分的输出维度为(2,2);将第一个(48,2)维度的输出直接输入到softmax函数对得分 进行归一化,然后输入到交叉熵损失,得到任务损失l2;
[0049]
s1.15)将任务模块的第二份(2,2)维度的输出传入全局的尺度关系对齐模块,将输出的2 对概率按照尺度级别划分为2部分,得到维度为(1,2,2)的得分张量;在其第二个维度上进行逐 对计算对称的kl散度,得到1个kl散度值,即全局的尺度关系对齐损失l3;
[0050]
s1.16)在局部特征三元损失挖掘模块,将特征进行按照类别的划分,并穷举所有的成员 作为锚点,取其同类作为正样本,异类作为负样本,计算与锚点的距离之和作为一个三元组上 的损失,将所有的三元组上的三元组损失取平均值作为局部特征三元损失l4;
[0051]
s1.17)在每个轮次的最后,将l1~l4线性组合,得到总损失l;取l=0.1l1+l2+0.1l3 +0.2l4;
[0052]
s1.18)使用autograd功能自动求导后向传播,完成一轮训练;
[0053]
s1.19)冻结模型中的所有参数,对剩余的一个数据集进行s1.2~s1.17的步骤而不进行 后向传播,如果计算得到的l2降低,则更新checkpoint,保存当前所有的参数;
[0054]
s1.20)重复s1.2~s1.19中间的步骤4000次;
[0055]
s2)使用域泛化的尺度对齐翻拍检测模型进行翻拍检测。
[0056]
s2.1)预处理选中的测试数据集,使用generate_label.py生成全部训练数据和对应标签的 json列表文件。具体为:取出所有图片的绝对路径,并将对应的标签(翻拍:1,直拍:0)一并 存入json文件;
[0057]
s2.2)随机选取608张图片,随机数种子选取666,将其路径和标签写入训练的json文 件备查;
[0058]
s2.3)按照批量b对个数据集中的图片进行分批读入,每一个轮次一个批量,b=8构成 一个批量。使用pilimage库读取图片为pil格式,然后保留一份,复制一份;
[0059]
s2.4)将保留的一份图片不作任何resize操作,直接在中心裁剪256*256的窗口,转换 为tensor格式,然后以[0.485,0.456,0.406],[0.229,0.224,0.225]的参数对其进行归一化得到大 尺度图片输入;
[0060]
s2.5)将复制的一份图片转换为tensor格式,然后降采样,横向、纵向都隔一个像素取 一个,得到1:2降采样tensor,再转换回pil格式,再在中心裁剪256*256的窗口,转换为 tensor格式,然后以[0.485,0.456,0.406],[0.229,0.224,0.225]的参数对其进行归一化得到小尺 度图片输入;
[0061]
s2.6)将s2.4和s2.5中得到的图片在批量维度上合并,得到一个批量为48的输入,每 一个成员都为256*256*3的归一化的彩色图片,将合并后的批量输入到对称的对抗学习模块中 的特征生成单元;
[0062]
s2.7)使用resnet在imagenet上训练好的公开模型resnet18

5c106cde初始化特征生成 单元;
[0063]
s2.8)对resnet的layer4后面的池化层修改为nn.adaptiveavgpool2d(output_size=1), 并修改bottleneck_layer为nn.linear(512,512),输出的嵌入特征维度为512维;
[0064]
s2.9)将合并的批量图片输入到特征生成单元,得到(48,512)维的特征;
[0065]
s2.10)将这个(48,512)维的特征输入任务模块;
[0066]
s2.11)在任务模块,使用一层线性层结点作为分类器,结点数为2,分别对应翻拍、直 拍两个类别,输出两个类别上的得分,每一张图片都有两个得分用于评估两个类别上的
概率, 总的输出维度为(48,2);将输出传入到softmax函数对得分进行归一化,然后输入到交叉熵损 失,得到任务损失l2;
[0067]
s2.12)统计s2.11中分类的正确率和置信度;
[0068]
s2.13)使用s2.12中统计的置信度计算假阳性比例和假阴性比例的均值hter,绘制roc 曲线,并根据roc曲线计算auc。
[0069]
本实施例在4个公开的数据集icl

commsp(简记为i)、ntu

rose(简记为n)、mturk(简 记为m)和bjtu

iis(简记为b)上进行四组训练和测试,其中m和n中的数据尺度差异最大,i 和b中的数据尺度差异最小,每次选用一个数据集作为测试集,剩余三个作为训练集,将四组 实验分别记为b&i&m to n,b&i&n to m,b&m&n to i和i&m&n to b,以l=0.1l1+l2+0.1l3+ 0.2l4参数运行上述方法训练。
[0070]
本实施例通过将域之间的分布差异最小化、将全局的尺度关系进行对齐、并且在局部进 行三元损失挖掘,显著地提升算法的泛化能力,使翻拍检测算法更具有实用价值。
[0071]
本实施例选取了四个公开数据集进行了四组泛化训练和测试实验,本实施例的hter在 四组实验(b&i&m to n,b&i&n to m,b&m&n to i和i&m&n to b)上的表现分别为18.43%、 23.68%、16.93%、15.12%,该错误率明显优于现有技术中的32.81%、35.16%、36.88%、18.25%。 本实施例的auc在四组实验上的表现分别为85.98%,83.16%,91.44%,91.87%,该auc明 显优于现有技术的74.41%,69.32%,73.32%和85.88%。
[0072]
与现有技术相比,本实施例能够解决多数据集综合训练的难题,从而简化了数据收集工 作的难度;同时也解决了不同尺度下同样内容的图片的检测结果分布不一致的缺陷,使翻拍检 测技术能够把握不同尺度的特征进行识别;且本实施例能够在源域数量极度受限的情况下,保 证最高的泛化能力,使系统可以更好地适应目标域上的实际应用场景。各模块模型可根据使用 情况定期进行强化训练,提高系统性能。
[0073]
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式 对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围 内的各个实现方案均受本发明之约束。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1