一种基于公私钥对的深度学习模型水印的嵌入和提取方法与流程

文档序号:21718948发布日期:2020-08-05 01:08阅读:552来源:国知局
一种基于公私钥对的深度学习模型水印的嵌入和提取方法与流程

本发明涉及计算机视觉、深度学习、模型水印、医学影像、模型安全等领域,具体涉及一种基于公私钥对的深度学习模型水印的嵌入和提取方法。



背景技术:

随着深度学习技术在近十年的快速发现,越来越多的传统计算机视觉任务逐渐被深度神经网络模型方法所取代,无论在传统的自然图像或是医学图像相关的分类,检测,分割等任务上,深度卷积神经网络在性能表现上有着非常明显的提升。在这个过程中,对于深度学习框架,模型,数据等方面的开源发挥了极其关键的作用,开源资源的轻松获取使得开发相关深度学习模型变得简单。尽管如此,在特定的图像任务上训练一个性能表现优异,能达到实际产品使用标准的深度学习模型仍然不是一件轻而易举的事情,主要的困难有以下几个方面:

(1)需要大量标注良好的带标签的数据,尤其对于复杂的任务而言,例如医学图像分割,需要专业的医生来完成,是一个十分耗时耗力的工作,因此标注的成本往往十分的高昂;

(2)需要充足的计算资源来完成深度学习模型的训练工作,对于商业级别的深度学习模型的训练往往需要大量的gpu资源以及较长的训练周期才能完成;

(3)对于一个出色的模型往往还需要研究开发人员对于模型的参数设置进行反复的调参以得到最优的参数结构,这个过程同样需要耗费大量的时间。

由于以上原因的存在使得深度学习模型的开发仍然是一个成本高昂的过程,然而目前一种可行的操作通常通过对已有预训练模型进行小规模数据集上的微调或者迁移学习,预训练模型往往构建在超大规模数据集上。这种操作所需要的数据规模小,时间、计算成本更低,微调之后的模型同样能够近似预训练模型的效果。这种方式的存在对于模型开发者往往是把双刃剑,既能够加快模型的开发,同时又需要考虑如何保护自己的知识产权。目前深度学习模型也逐渐成为很多商业公司的重要产品,因此对于这些模型的保护就会变得至关重要,一旦发生盗用或者在其基础上的二次开发就可能会产生较为严重的经济损失。因此为了保证整个领域的健康快速发展,鼓励大家的开源分享,这种深度学习模型知识产权的保护就显得格外重要。

对于目前常用的深度卷积神经网络模型,例如vggnet,resnet等,其模型本身不含有任何包含身份的信息,因此如果部署的模型发生了未经授权的拷贝或者窃取盗用的情况也很难及时发现,存在发现难、举证难的困境。很多公司机构希望分享的模型仅仅用于科研目的,避免被竞争对手所盗用,目前的模型特点往往很难满足这一点。为了保证深度学习模型不被窃用或者低成本的二次开发,需要实现以下两点:(1)模型在未经授权的情况下不可用;(2)模型在发生盗用时能够对模型的所有权进行举证。

参考在多媒体内容中被广泛使用的数字水印技术,可以尝试对深度学习模型添加同样的数字水印以实现身份的证明。目前关于深度学习模型的数字水印技术的研究还处于初始阶段,现有的一些方法往往存在身份认证模糊的问题,即如果未经授权的第三方获取到了模型,如果发现了其中存在水印,可以通过一系列逆向工程的方法仿造水印,或者通过一些去除攻击的方法来去除存在的水印,从而造成了模型的归属性上的认证困难。



技术实现要素:

本发明所要解决的技术问题是:弥补上述技术的不足,提出一种基于公私钥对的深度学习模型水印的嵌入和提取方法,保证了模型在未经授权的条件下不可用,即使在发生窃用的情况下可以通过对水印中包含的身份信息的提取实现所有权的举证。

为实现上述目的,本发明采用以下技术方案:

一种基于公私钥对的深度学习模型水印的嵌入方法,包括:通过将深度卷积神经网络模型中的批归一化层转换成水印层,将鉴权信息通过水印嵌入损失函数在模型的训练过程中嵌入模型的任意一层或者任意几层,形成特异性水印,其中,将所述批归一化层中的缩放因子变成公钥和私钥,所述私钥为不可学习的缩放因子,在模型初始化阶段随机选取特征图生成,所述公钥为可学习的缩放因子,在训练过程中所述公钥随着所述私钥的改变而产生同步变化。

进一步地:

对要嵌入的所述信息先进行格式上的转换,由字符串转为asci工码再转成二进制编码,根据嵌入损失函数的特点选择使用{0,1}编码或者{1,-1}编码。

所述私钥的生成过程包括:在网络模型的初始化阶段,从训练数据集中随机选取一定数量的图像作为生成私钥的随机种子,然后输入到预训练网络中分别得到每一层的特征图,若选定某一层作为水印层,则从该层的特征图中随机选择一定数量的特征图作为私钥产生源,然后经过平均操作后,将得到的缩放因子作为所述私钥。

在所述私钥的生成过程中,保留深度卷积神经网络模型卷积块中正常的卷积层、relu激活层不变,仅将所述批归一化层中的可学习缩放因子和平移因子变成不可学习参数,通过所述平均操作得到与所述可学习缩放因子和平移因子相同形状的特征,其中的缩放因子即为所述私钥水印。

通过教师-学生模型的训练策略训练得到公私钥对水印,在训练过程中,使用两个除水印层外其余层均参数共享的子网络进行协同训练,来得到成对的公私钥;其中,私钥和公钥成对产生,分别位于两个子网络中,所述公钥与所述私钥相对应,在训练过程中与私钥保持近似的更新程度以保证得到的公私钥对在网络中能够使网络实现同样的性能。

在训练过程中对公私钥对加入额外的监督损失函数。

嵌入损失函数包括余弦相似性损失函数lcs,如下:

其中γ,分别为对应的公钥和私钥水印,γi和分别表示水印表示向量的第i个元素,c表示模型中通道的数目,∈为设定的常量;

对于分类任务模型使用交叉熵损失函数作lce为分类损失函数,模型的整体损失函数l如下:

lce(y,p)=-∑yilogpi

其中,y表示样本的标记,p表示样本预测的概率分布;yi对应第i个样本标记,pi则为第i个样本预测为正的概率,lid(w)表示网络参数w时候的嵌入水印识别的损失函数,w表示网络的卷积层对应权重λ1,λ2均为超参数,用于平衡不同损失函数。

还将水印添加到深度卷积神经网络的卷积层,其中水印添加在模型训练阶段,或者在模型后续的微调阶段。

一种基于公私钥对的深度学习模型水印的提取方法,对使用所述的基于公私钥对的深度学习模型水印的嵌入方法在模型中嵌入的特异性水印进行提取,其中,在验证模型所有权时,通过将模型中的公钥替换成私钥,使得替换后的模型既能够保持性能一致又能够通过私钥提取到所述鉴权信息,从而完成模型归属权的认证。

可以对水印层使用符号函数从嵌入水印的模型提取所述鉴权信息。

本发明与现有技术对比的有益效果是:

1)本发明提出了一种用于深度学习模型的公私钥水印的嵌入和提取方法。该方法在不影响模型原有性能的情况下能够实现高效的嵌入,通过对模型水印中的鉴权信息(通常为包括模型创造者身份的信息)进行提取,能够实现模型所有权的认证;2)将深度卷积神经网络中的批归一化成转变成水印层,得到成对的公私钥水印,能够有效的保证嵌入水印的安全;3)不同数据集上的实验表明这种深度学习模型中嵌入的水印能够具有很好的保证性和较强的鲁棒性,安全性,有助于保护深度学习模型的知识产权,促进相关方向的健康有序的发展。

附图说明

图1是本发明实施例中公私钥对的模型水印嵌入方法中正常的深度学习模型中卷积块结构图,其中的批归一化层中的可学习缩放因子为公钥水印;

图2是本发明实施例中公私钥对的模型水印嵌入方法中将批归一化层改造成私钥水印层的卷积块结构图;

图3是本发明实施例中公私钥对的模型水印嵌入方法中包含公私钥水印层的深度学习模型结构示意图。

具体实施方式

以下对本发明的实施方式作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。

参阅图1至图3,本发明实施例提供一种基于公私钥对的深度学习模型水印的嵌入方法,包括:通过将深度卷积神经网络模型中的批归一化层转换成水印层,将鉴权信息(如包含模型创造者身份的信息)通过水印嵌入损失函数在模型的训练过程中嵌入模型的任意一层或者任意几层,形成特异性水印,其中,将所述批归一化层中的缩放因子变成公钥和私钥,所述私钥为不可学习的缩放因子,在模型初始化阶段随机选取特征图生成,所述公钥为可学习的缩放因子,在训练过程中所述公钥随着所述私钥的改变而产生同步变化。公私钥对作为模型参数的一部分,能够保证模型正常的推理性能,一旦缺失,模型就不能实现正常的测试效果,因此能够作为模型所有权的重要判断依据。并且,嵌入的水印在包括模型微调,模型剪枝等常用模型修改方法时仍然能够保持很强的鲁棒性。

应用本发明实施例,将公钥水印随模型参数分发给用户,其中不包含任何身份信息,因而保证了水印的安全性;私钥中包含了身份信息,一般私钥由模型开发者或所有者保存,用于之后的模型的所有权认证。在模型验证过程中,可以通过将模型中的公钥替换成模型中的私钥,对私钥中的信息进行提取实现模型所有权的举证。通过这种基于公私钥的模型水印方法,保证了在未经授权的情况下第三方用户如果没有或者伪造公钥,模型便不能实现正常的推理性能。同时在模型发生盗用或者在此基础上的修改时通过对嵌入水印中的信息进行提取,能够完成对模型归属的证明。基于公私钥对的深度学习模型水印的嵌入和提取方法具有很高的保真性,水印模型在经过去除攻击(包括模型微调,模型剪枝等)时能够保持水印具有较强的鲁棒性,同时公私钥对的形式保证了水印的安全性。该种方法适用于绝大多数主流的深度卷积神经网络模型,通过添加这种水印,保护了模型开发者的智慧财产权,一定程度上避免了深度学习模型盗用、滥用的现象,有助于领域的良性健康发展。

在优选的实施例中,为了保护嵌入水印的安全性,通过教师-学生模型的训练方式,使用两个除水印层以外其余层均权重共享的子网络进行水印的嵌入,来生成公私钥水印对。在训练过程中,使用两个除水印层外其余层均参数共享的子网络进行协同训练,得到成对的公私钥,保证两组参数下模型能够实现同样的性能表现。

在一些实施例中,通过使公私钥对水印在数值上相近但在正负号上存在一定的区别,可保证公钥即使在公开的情况下也很难发现其中嵌入的水印信息。

在一些实施例中,通过在训练过程中使用额外的水印嵌入函数实现私钥中身份信息的嵌入,如同深度学习模型中的正则项。嵌入水印的模型通过对水印层使用符号函数提取其中的身份信息,从而完成模型身份的认证。

在不同的实施例中,模型中的水印可以选择模型中的任意层进行嵌入,嵌入的数量可以是一层,也可以是几层,这样在一定程度上也能够保证了水印的安全性。

在一些实施例中,为了保证公私钥好而不同,在训练过程中对公私钥对加入额外的监督损失函数。

在一些实施例中,还可以通过相同的方法将水印添加到卷积层,水印添加的过程可以在模型训练阶段,也可以在模型后续的微调阶段。

该种水印嵌入方法能够适用于使用深度学习模型的分类,检测,分割等计算机视觉任务中。

根据本发明的优选实施例,将深度卷积神经网络中常用的批归一化层变成水印层,通过将批归一化层中中可学习的缩放因子和平移因子替换成不可学习的私钥。私钥的生成步骤是在网络模型的初始化阶段,从训练数据集中随机选取一定数量的图像作为生成私钥的随机种子,然后输入到预训练网络中分别得到每一层的特征,如果选用某一层作为水印层,需要从该层的特征图中随机选择一定数量的特征图作为私钥产生源,然后经过平均操作得到最终的私钥。私钥和公钥成对产生,分别位于两个子网络中,公钥与私钥相对应,在训练过程中与私钥保持近似的更新程度,保证得到的这一对公私钥在网络中能够使网络实现相同的性能。公私钥对水印在数值上相近但在正负号上存在一定的区别,保证了公钥即使在公开的情况下也很难发现其中嵌入的水印信息。为此,在模型训练过程中在公私钥之间加入损失函数,使其能够实现好而不同的特点。

公私钥对的生成是在训练过程中使用两个除水印层外其余层均参数共享的子网络进行协同优化,使用教师-学生模型的训练策略,在训练过程中当私钥通过卷积层参数的改变而产生变化之后公钥也随之改变。

完成水印嵌入的过程后,将包含公钥的子网络分发给用户使用,在公钥中很难提取到完整的身份信息,从而保证了嵌入水印的安全性。在模型所有权验证的时候,通过将模型中的公钥参数替换成私钥,使用私钥的模型既能够保证性能一致又能够通过私钥提取到包含模型开发者的身份信息,从而完成了模型归属权的认证。公私钥对作为模型参数的一部分,能够保证模型正常的推理性能,一旦缺失,模型就不能实现正常的测试效果,模型的保证性同样作为模型所有权的重要判断依据。

此外,模型中的公私钥水印可以选择模型中的任意层进行嵌入,嵌入的数量可以是一层,也可以是几层,这样在一定程度上也能够保证了水印的安全性。

通过在不同数据集上的实验表明该种形式的水印嵌入不影响模型的原有性能,同时嵌入的水印在包括模型微调,模型剪枝等常用模型修改方法时仍然能够保持很强的鲁棒性。

本发明实施例提供的基于公私钥对的深度学习模型水印的嵌入和提取方法,将模型创作者的身份信息嵌入到深度学习模型中,保证模型在未经授权的条件下不可用,即使在发生窃用的情况下可以通过对水印中包含的身份信息的提取实现所有权的举证。

下面结合附图通过具体实施例进一步说明。

图1中展示的是包括正常的批归一化层的卷积块结构示意图,包括卷积层,批归一化层,relu激活层,为深度卷积神经网络中基本的组成单元。其中批归一化层正常的处理流程是将经过卷积层得到的特征先进行归一化操作,即减去一批特征的均值然后除以该批特征的标准差,为了防止分母为0,会在分母上添加一个非常小的常数项。归一化之后的特征会乘以一个缩放因子γ然后加上一个平移因子β以增加网络的非线性的表达能力。这部分的缩放因子和平移因子均为可学习参数,在模型训练的过程中是不断进行更新的。在之后的双分支子网络中将可学习的缩放因子称之为公钥水印。

之后,将正常的批归一化层转换成一个水印层,如图2所示,具体的操作是保留卷积块中正常的卷积层,relu激活层不变,仅仅改变批归一化层中的可学习缩放因子和平移因子,将其变成不可学习参数。在模型开始训练之前,从训练数据集中随机抽出一定数量的图片作为私钥的生成种子,将其输入到预训练的网络中得到每一层的特征图。之后若选定某一层为水印层,则在该层特征图n*c1*h*w中随机选取c1张特征图1*c1*h*w,然后通过平均操作得到与缩放,平移因子相同形状的特征1*c2*1*1,其中的缩放因子即为所需要的私钥水印。私钥水印在模型的训练过程中随着卷积层参数的更新而更新,为不可学习的标量。

对于想要嵌入水印中的身份信息,首先将字符串中的字符分别转换成对应的ascii码,然后转成对应的二进制编码,之后再根据嵌入函数的具体要求对得到的二进制字符串进行转换。以英文单词‘hi’为例,首先得到每个字符对应的ascii码‘72,105’,然后转换成对应的8位二进制数‘0100100001101001’。使用折页损失函数,如下所示,由于该损失函数所需要的标签形式为{-1,1},因此将得到的字符串转换成‘-11-1-11-1-1-1-111-11-1-11’,这个字符串d便是在训练过程中的标签,其中的γ为私钥。

对于水印模型的训练策略使用教师-学生模型的框架,如图3所示,将教师网络中的水印层通过水印嵌入函数嵌入模型开发者的身份信息,学生网络中对应的层为正常的批归一化层,教师网络中的不可学习的缩放因子成为私钥水印,学生网络中的可学习缩放因子成为公钥水印。在完成模型训练之后,学生网络会分发给用户使用。两个子网络除对应的水印层不同外其余层的网络权重均相互共享。为了保证公钥水印和私钥水印能够使网络实现相同的性能表现,但同时两者又有所差异,在对应的层之间加入翻转余弦相似性损失函数来实现这一效果。余弦相似性损失函数如下所示:

其中γ,分别为对应的公钥和私钥水印,γi和分别表示水印表示向量的第i个元素,c表示模型中通道的数目,∈为常量,避免分母为0,优选为10-8

对于分类任务模型使用交叉熵损失函数作lce为分类损失函数,模型的整体损失函数l如下:

lce(y,p)=-∑yilogpi

其中,y表示样本的标记,p表示样本预测的概率分布;yi对应第i个样本标记,pi则为第i个样本预测为正的概率,lid(w)表示网络参数w时候的嵌入水印识别的损失函数,w表示网络的卷积层对应权重λ1,λ2均为超参数,用于平衡不同损失函数。

训练完成之后的学生水印模型分发给用户之后可能会面临着第三方对模型进行一定的修改,其中包括在小规模数据集上对模型的微调,为了使模型的参数量降低而是用的模型剪枝。通过对水印模型进行了一些列图像数据集(cifar-10,cifar-100,oct2017,ham10000)上的实验表明,本发明所提出的基于公私钥的深度学习模型水印嵌入方法能够在保证模型准确性的基础上,在各种破坏模型水印的攻击下仍然能够保持很强的鲁棒性。水印模型在经过微调之后水印仍然能够获得100%的检测率,在经过模型权重60%剪枝之后,水印中的身份信息仍然能够达到99%的检测准确率。

本发明的背景部分可以包含关于本发明的问题或环境的背景信息,而不一定是描述现有技术。因此,在背景技术部分中包含的内容并不是申请人对现有技术的承认。

以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。在本说明书的描述中,参考术语“一种实施例”、“一些实施例”、“优选实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管已经详细描述了本发明的实施例及其优点,但应当理解,在不脱离专利申请的保护范围的情况下,可以在本文中进行各种改变、替换和变更。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1