神经网络模型的训练方法、装置、电子设备及存储介质
技术领域
本公开涉及图像处理技术领域,具体而言,本公开涉及一种神经网络模型的训练方法、装置、电子设备及存储介质。
背景技术
现有技术中,对于原始图像,用户可能对图像会进行一些改变,比如,将图像进行旋转、在图像上加几个文字、将图像放大或缩小等简单的变换操作,变换后的图像与原始图像本质上是相同或相似的图像,理论上变换前后的图像的哈希码应该是尽可能相同。
但是,现有技术中得到图像的哈希码的方式,由于哈希算法的鲁棒性不强,会经常导致变换前后的图像的哈希码的鲁棒性较差,进而在根据图像哈希码确定重复图像时造成准确率比较低。
发明内容
本公开的目的旨在至少能解决上述的技术缺陷之一,提升用户的使用体验。本公开采用的技术方案如下:
第一方面,本公开实施例提供了一种神经网络模型的训练方法,该方法包括:
获取训练样本数据,训练样本数据中包括正样本图像集和负样本图像集,其中,正样本图像集包括原始图像和原始图像的变换图像,负样本图像集中的图像与原始图像的相似度小于设定值;
基于训练样本数据对初始的神经网络模型进行训练,直至神经网络模型的总损失函数满足预设条件;
其中,神经网络模型是以图像为输入并且以图像的哈希码为输出的模型,总损失函数包括基于原始图像的哈希码和负样本图像集中的图像的哈希码确定的第一损失函数、以及基于原始图像的哈希码和原始图像的变换图像的哈希码确定的第二损失函数。
第一方面可选的实施例中,该预设条件包括:
预测准确度不小于预设阈值,其中,预测准确度为每次训练所计算出的所有总损失函数的结果中小于设定值的结果的数量的占比。
第一方面可选的实施例中,该第一损失函数的取值表征了原始图像和负样本图像集中的图像的相似性,第二损失函数的取值表征了原始图像和原始图像的变换图像的差异性。
第一方面可选的实施例中,该第一损失函数包括第一子函数和第二子函数中的至少一项,其中,第一子函数的取值表征了原始图像的哈希码和负样本图像集中的图像的哈希码的随机独立性,第二损失函数的取值表征了原始图像的哈希码和负样本图像集中的图像的哈希码的相似度。
第二方面,本公开实施例提供了一种图像相似度的确定方法,该方法包括:
获取第一图像和第二图像;
通过神经网络模型确定第一图像的第一哈希码和第二图像的第二哈希码,该神经网络模型是通过第一方面任一项的方法训练得到的;
基于第一哈希码和第二哈希码,确定第一图像和第二图像的相似度。
第三方面,本公开实施例提供了一种神经网络模型的训练装置,该装置包括:
样本数据获取模块,用于获取训练样本数据,训练样本数据中包括正样本图像集和负样本图像集,其中,正样本图像集包括原始图像和原始图像的变换图像,负样本图像集中的图像与原始图像的相似度小于设定值;
模型训练模块,用于基于训练样本数据对初始的神经网络模型进行训练,直至神经网络模型的总损失函数满足预设条件;
其中,神经网络模型是以图像为输入并且以图像的哈希码为输出的模型,总损失函数包括基于原始图像的哈希码和负样本图像集中的图像的哈希码确定的第一损失函数、以及基于原始图像的哈希码和原始图像的变换图像的哈希码确定的第二损失函数。
第三方面可选的实施例中,该预设条件包括:
预测准确度不小于预设阈值,其中,预测准确度为每次训练所计算出的所有总损失函数的结果中小于设定值的结果的数量的占比。
第三方面可选的实施例中,第一损失函数的取值表征了原始图像和负样本图像集中的图像的相似性,第二损失函数的取值表征了原始图像和原始图像的变换图像的差异性。
第三方面可选的实施例中,第一损失函数包括第一子函数和第二子函数中的至少一项,其中,第一子函数的取值表征了原始图像的哈希码和负样本图像集中的图像的哈希码的随机独立性,第二损失函数的取值表征了原始图像的哈希码和负样本图像集中的图像的哈希码的相似度。
第四方面,本公开实施例提供了一种图像相似度的确定装置,该装置包括:
图像获取模块,用于获取第一图像和第二图像;
哈希码确定模块,用于通过神经网络模型确定第一图像的第一哈希码和第二图像的第二哈希码,该神经网络模型是通过第一方面中任一项的方法训练得到的;
相似度确定模块,用于基于第一哈希码和第二哈希码,确定第一图像和第二图像的相似度。
第五方面,本公开提供了一种电子设备,该电子设备包括处理器和存储器;
存储器,用于存储计算机操作指令;
处理器,用于通过调用计算机操作指令,执行如本公开实施例的第一方面和第二方面的任一实施例中所示的方法。
第六方面,本公开提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本公开实施例的第一方面和第二方面的任一实施例中所示的方法。
本公开实施例提供的技术方案带来的有益效果是:
在本公开实施例中,可以通过神经网络模型的总损失函数满足预设条件的设置,使通过训练结束后得到的神经网络模型得到的不同的图像的哈希码是不同的,相同的图像的哈希码是相同的,进而增强了图像的哈希码的鲁棒性;进一步的,在根据图像的哈希码确定图像之间的相似度时,由于图像的哈希码的鲁棒性得到增强,进而可以有效的提升准确率。
附图说明
为了更清楚地说明在本公开的实施例中的技术方案,下面将对本公开实施例描述中所需要使用的附图作简单地介绍。
图1为本公开的实施例中一种神经网络模型的训练方法的流程示意图;
图2为本公开的实施例中一种图像相似度方法的流程示意图;
图3为本公开的实施例中一种神经网络模型的训练装置的结构示意图;
图4为本公开的实施例中一种图像相似度的确定装置的结构示意图;
图5为本公开的实施例中一种电子设备的结构示意图。
具体实施方式
下面详细描述本公开的实施例,该实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本公开的技术感,而不能解释为对本公开的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本公开的说明书中使用的措辞“包括”是指存在该特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组合。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
下面以具体地实施例对本公开的技术方案以及本公开的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本公开的实施例进行描述。
本公开的实施例提供了一种神经网络模型的训练方法,如图1所示,该方法可以包括:
步骤S110,获取训练样本数据,训练样本数据中包括对应于至少一对正样本图像集和负样本图像集,其中,正样本图像集包括原始图像和原始图像的变换图像,负样本图像集中的图像与原始图像的相似度小于设定值。
其中,训练样本数据即用于对初始神经网络模型进行训练时所采用的样本数据,也可以称为训练数据集。本公开实施例中,该训练样本数据中对应于至少一对正样本图像集和负样本图像集。其中,正样本图像集包括原始图像和原始图像的变换图像,而变换图像指的是在主要内容上与原始图像相同,即原始图像和其变换图像的相似度大于设定值。比如,训练样本数据中图像A为原始图像,对于图像A而言,图像A的变换图像可以为图像A经过裁剪后形成的图像A1,经过放大后形成的图像A2,或经过缩小后形成的图像A3等。而负样本图像集中所包括的图像与原始图像的相似度小于设定值的,即与原始图像在主要内容上存在本质上的不同,如可以是与原始图像中的对象(如图像中的前景对象)不同。比如,正样本图像集中包括原始图像A,负样本图像集中的图像包括图像B和图像C,此时该图像A可以为熊猫的图像,图像B可以为山水图像,图像C可以为建筑图像。
当然,在实际应用中,为了提高结构的准确度,正样本集和负样本也可以是多个,也就是原始图像可以是多个,且一个原始图像对应一个正样本集和负样本集。
步骤S120,基于训练样本数据对初始的神经网络模型进行训练,直至神经网络模型的总损失函数满足预设条件;
其中,神经网络模型是以图像为输入并且以图像的哈希码为输出的模型,总损失函数包括基于原始图像的哈希码和负样本图像集中的图像的哈希码确定的第一损失函数、以及基于原始图像的哈希码和原始图像的变化图像的哈希码确定的第二损失函数。
图像的哈希码为图像的特征向量的一种形式,在实际应用中,图像的哈希码通常可以为K维的二进制序列,而每一维度中可以采用“0”或“1”表示,对于某一图像的哈希码可以通过神经网络模型已知。其中,神经网络模型可以为卷积神经网络模型,该卷积神经网络模型中每一层通常都可以包括卷积层、池化层和激活层。
损失函数是用来估量模型的预测结果与真实结果的不一致程度,它是一个非负实值函数,损失函数越小,则模型的鲁棒性就越好,损失函数是检验风险函数的核心部分,也是结构风险函数重要组成部分。在本公开实施例中,总损失函数可以包括基于原始图像的哈希码和负样本图像集中的图像的哈希码确定的第一损失函数、以及基于原始图像的哈希码和原始图像的变化图像的哈希码确定的第二损失函数,因此,可以通过总损失函数满足预设条件的设置,使得在通过训练结束后得到的神经网络模型得到图像的哈希码能够是多样化的,即不同的图像的哈希码是不同的,相同的图像的哈希码是相同的。
在实际应用中,在基于训练样本数据对初始的神经网络模型进行训练时,可以将训练样本数据中所包括的图像分别输入至神经网络模型,分别得到原始图像的哈希码、负样本图像集中的图像的哈希码以及原始图像的变图像的哈希码,然后基于原始图像的哈希码、负样本图像集中的图像的哈希码以及原始图像的变换图像的哈希码,确定神经网络模型的总损失函数是否满足预设条件,若本次训练得到的总损失函数不满足预设条件,则说明当前的神经网络模型的精度并未达到要求,此时可以优化神经网络模型,并再次将训练样本数据中所包括的图像分别输入至优化后的神经网络模型,再次分别得到原始图像的哈希码、负样本图像集中的以及原始图像的变图像的哈希码,基于再次得到的原始图像的哈希码、负样本图像集中的以及原始图像的变换图像的哈希码,确定优化后的神经网络模型的总损失函数是否满足预设条件,若本次训练得到的总损失函数仍不满足预设条件,则再次优化神经网络模型,并重复上述中所描述的步骤,直至神经网络模型的总损失函数满足预设条件。
作为一种可选的方式,在将训练样本数据中所包括的图像输入至神经网络模型,得到图像的哈希码之前,可以对训练样本数据中的图像进行预处理,以增加数据处理的效率。其中,预处理可以包括对图像进行裁剪、灰度处理等处理方式。比如可以将训练样本数据中所包括的各图像处理为相同尺寸的图像,如将各图像统一裁剪为224*224的图像,或将使训练样本数据中所包括的各图像变为灰度图像。
在本公开实施例中,可以通过神经网络模型的总损失函数满足预设条件的设置,使通过训练结束后得到的神经网络模型得到的不同的图像的哈希码是不同的,相同的图像的哈希码是相同的,进而增强了图像的哈希码的鲁棒性;进一步的,在根据图像的哈希码确定图像之间的相似度时,由于图像的哈希码的鲁棒性得到增强,进而可以有效的提升准确率。
在本公开可选的实施例中,该预设条件包括:
预测准确度不小于预设阈值,其中,预测准确度为每次训练所计算出的所有总损失函数的结果中小于设定值的结果的数量的占比。
在实际应用中,由于正样本图像集和负样本图像集均可以包括多张图像,因此总损失函数的取值可以存在多个。
基于此,作为一种可选的方式,可以将一张原始图像、一张负样本图像集中的图像和该原始图像的一张变换图像划分为一个图像集,此时训练样本数据可以被划分为多个图像集;在每次训练时,对于每个图像集,可以基于神经网络模型输出的该图像集中原始图像的哈希码和原始图像的变化图像的哈希码计算出第二损失函数的一个取值,以及基于该图像集中原始图像的哈希码和负样本图像集中的图像的哈希码计算得到第一损失函数的一个取值,从而得到该图像集对应的总损失函数的一个取值;由于训练样本数据可以被划分为多个图像集,并且每一个图像集可以对应于一个总损失函数的取值,所以总损失函数的结果是存在多个;进一步的,确定多个总损失函数的结果中小于设定值的结果的数量与所有总损失函数的结果的数量的占比,得到预测准确度,判断该预测准确度是否小于预设阈值,若没有小于阈值,则说明本次训练得到的总损失函数没有满足预设条件,可以进一步的优化神经网络模型,直至确定预测准确度不小于预设阈值。其中,预设阈值的具体数可以根据实际预先设置,本公开实施例不限定。
在一示例中,假如正样本图像集中可以包括原始图像A和原始图像A的变换图像A1,负样本图像集中包括图像B、图像C和图像D,并通过神经网络模型得到原始图像A的哈希码,图像B的哈希码、图像C的哈希码、图像D的哈希码和变换图像A1的哈希码,此时可以将图像A、第一图像B和变换图像A1划分为第一图像集,将图像A、图像C和变换图像A1划分为第二图像集,将图像A、图像D和变换图像A1划分为第三图像集,即本次训练中所有图像集合的数量为3个;进一步的,可以基于第一图像集的所包括的图像的哈希码,得到第一图像集对应的总损失函数,且第一图像集对应的总损失函数的结果小于设定值;基于第二图像集的所包括的图像的哈希码,得到第二图像集对应的总损失函数,且第二图像集对应的总损失函数的结果大于设定值;基于第三图像集的所包括的图像的哈希码,得到第三图像集对应的总损失函数,且第三图像集对应的总损失函数的结果小于设定值,也就是说,本次训练中所有总损失函数的结果的数量为3个,总损失函数的结果小于设定值的数量为2个,因此,本次训练中得到的预测准确度为2/3。
进一步的,可以判断本次训练所得到的预测准确度是否不小于预设阈值,若不是,则继续对神经网络模型进行优化,并判断下一次训练得到的预测准确度是否不小于预设阈值,若不是,则再次优化神经网络模型,直至得到的预测准确度不小于预设阈值。
在本公开实施例中,将预设条件设置为预测准确度不小于预设阈值的目的是希望基于该神经网络模型得到的图像的哈希码中,不同的图像(相似度低的图像)的哈希码是尽可能不同的,即相似度尽可能小,相同或相似的图像(相似度高的图像,如一张图像和该图像的变换图像)的哈希码是尽可能相同的,即相似度尽可能大。另外,为了使主要内容不同的图像的哈希码尽可能不同,那也就是希望基于神经网络模型的得到的不同的图像的哈希码是多样化的,也就是对于神经网络模型所能够输出的所有可能的哈希码(假设对于二维的哈希码,则所有可能的哈希码为22个,即00、01、10和11这四个哈希码),即每个哈希码被神经网络模型输出的概率是随机独立的,各哈希码中每一维度中出现“0”和“1”的概率是相同的,不同维度组合时出现“0”和“1”的概率也是相同的,如对于上述二维的哈希码,希望“0”和“1”出现的概率是相同的,00、01、10和11出现概率也是相同的。
在本公开可选的实施例中,第一损失函数的取值表征了原始图像和负样本图像集中的图像的相似性,第二损失函数的取值表征了原始图像和原始图像的变换图像的差异性。
在实际应用中,若从哈希码的汉明距离方面考虑两个图像的相似性和差异性时,当两个图像的相似程度越高时,说明两个图像的哈希码之间的汉明距离越小,两个图像的差异性越小;反之,当两个图像的相似程度越低时,则两个图像的哈希码之间的汉明距离越大,两个图像的差异性越大。
在本公开实施例中,第一损失函数包括第一子函数和第二子函数中的至少一项,其中,第一子函数的取值表征了原始图像的哈希码和负样本图像集中的图像的哈希码的随机独立性,第二损失函数的取值表征了原始图像的哈希码和负样本图像集中的图像的哈希码的相似度。
在实际应用中,第一子函数可以表示为:
Lost11=Lid(fa,fc)
第二子函数可以表示为:
Lost12=Ldiff(fa,fc)
其中,fa表示原始图像的哈希码,fc表示负样本图像集中的图像的哈希码,Lid(fa,fc)表示用于确定原始图像的哈希码和负样本图像集中的图像的哈希码的随机独立性的函数,Lost12=Ldiff(fa,fc)表示用于确定原始图像的哈希码和负样本图像集中的图像的哈希码的相似度的函数。
在实际应用中,希望原始图像的哈希码和负样本图像集中的图像的哈希码是尽可能不相同的,由于原始图像的哈希码和负样本图像集中的图像的哈希码均是随机向量,当希望原始图像的哈希码和负样本图像集中的图像的哈希码是尽可能不相同时,即是希望原始图像的哈希码和负样本图像集中的图像的哈希码彼此之间是互相独立的,彼此之间的取值互相不影响。其中,Lid可以理解为independent loss(独立损失),即如果原始图像的哈希码和负样本图像集中的图像的哈希码越随机,此时基于Lid(fa,fc)得到的值越小,反之则越大。
其中,Ldiff(fa,fc)表示用于确定原始图像的哈希码和负样本图像集中的图像的哈希码的相似度的函数,当原始图像的哈希码与样本图像集中的图像的的哈希码相似越大时,基于Ldiff(fa,fc)得到的值越大,反之则越小。
第二损失函数可以表示为:
Lost2=Lsam(fa,fb)
其中,fa表示原始图像的哈希码,fb表示原始图像的变换图像的哈希码,Lsam(fa,fb)表示用于确定原始图像的哈希码与原始图像的变换图像的哈希码的相似度的函数。
也就是说,在获知训练样本数据中的原始图像的哈希码和原始图像的变换图像的哈希码后,可以基于Lsam(fa,fb)确定原始图像的哈希码与原始图像的变换图像的哈希码的相似度,当始图像的哈希码与原始图像的变换图像的哈希码的相似度越大时,基于Lsam(fa,fb)得到的值越小,反之越大
需要说明的是,上述中代入函数中的原始图像的哈希码、负样本图像集中的图像的哈希码和变换图像的哈希码均是基于同一次训练后得出的数据,若进行了下一次训练,则是将下一次训练得出的数据代入函数。
在实际应用中,由于第一损失函数中可以包括第一子函数和第二子函数中的至少一项,也就是说,总损失函数的组成部分也是可以包括多种情况,因此,下面对总损失函数的多种情况进行详细说明。
1、总损失函数包括第一子函数和第二损失函数。
在实际应用中,当总损失函数中包括第一子函数Lost11和第二子函数Lost2时,则总损失函数Lost可以表示为:
Lost=Lost11+Lost2
即,Lost=Lid(fa,fc)+Lsam(fa,fb)
2、总损失函数包括第二子函数和第二损失函数。
当总损失函数中包括第二子函数Lost12和第二子函数Lost2时,则总损失函数Lost可以表示为:
Lost=Lost12+Lost2
即,Lost=Ldiff(fa,fc)+Lsam(fa,fb)
3、总损失函数包括第一子函数、第二子函数和第二损失函数。
当总损失函数中包括第一子函数Lost11、第二子函数Lost12和第二子函数Lost2时,则总损失函数Lost可以表示为
Lost=Lost11+Lost12+Lost2
即,Lost=Lid(fa,fc)+Ldiff(fa,fc)+Lsam(fa,fb)
基于此,本公开的实施例还提供了一种图像相似度的确定方法,如图2所示,该方法可以包括:
步骤210,获取第一图像和第二图像。
步骤220,通过神经网络模型确定第一图像的第一哈希码和第二图像的第二哈希码,神经网络模型是通过上述中所描述的训练神经网络模型的方法训练得到的。
在实际应用中,在需确定各图像之间的相似度时,可将每张图像分别输入训练后的神经网络模型,得到每张图像的哈希码。比如,需要判断图像A、图像B和图像C中是否存在相似图像,可以将图像A、图像B和图像C分别输入训练后的神经网络模型,得到图像A的哈希码、图像B的哈希码,以及图像C的哈希码。
当然,在实际应用中还可以预先通过训练后的神经网络模型得到每一张图像的哈希码,然后将每一张图像的哈希码保存在数据库中,当需要待图像的哈希码时直接从数据库中获取即可。
其中,得到训练后的神经网络模型的具体实现方法,可以参考本公开实施例中图1所示的方法,在此就不再赘述。
步骤230,基于第一哈希码和第二哈希码,确定第一图像和第二图像的相似度。
其中,基于第一哈希码和第二哈希码,确定第一图像和第二图像的相似度具体实现方式,本公开实施例不做限定。
作为一种可选的实施方式,在已知每张图像的哈希码后,可以基于每张图像的哈希码,确定各图像的哈希码之间的汉明距离,当两张图像的哈希码之间的汉明距离越大时,则说明两张图像的相似度越低,反之,当两张图像的哈希码之间的汉明距离越小时,则说明两张图像的相似度越高。
在一示例中,假如需要去除图像中的重复图像,此时可以通过神经网络模型得到各图像的哈希码,然后根据各图像的哈希码,确定各图像之间的相似度,若某两张图像的相似度大于设定值,则确定这两张图像为重复图像,可以将该两张图像中的某一张图像作为重复图像去除。
在本公开实施例中,由于训练后的神经网络模型可以使得到的不同的图像的哈希码是不同的,相同的图像的哈希码是相同的,增强了图像的哈希码的鲁棒性,因此,在根据图像的哈希码确定图像之间的相似度时,由于图像的哈希码的鲁棒性得到增强,所以可以有效的提升准确率。
基于与图1中所示方法相同的原理,本公开的实施例中还提供了一种神经网络模型的训练装置30,如图3所示,该神经网络模型的训练装置30可以包括样本数据获取模块310和模型训练模块320,其中:
样本数据获取模块310,用于获取训练样本数据,训练样本数据中包括正样本图像集和负样本图像集,其中,正样本图像集包括原始图像和原始图像的变换图像,负样本图像集中的图像与原始图像的相似度小于设定值;
模型训练模块320,用于基于训练样本数据对初始的神经网络模型进行训练,直至神经网络模型的总损失函数满足预设条件;
其中,神经网络模型是以图像为输入并且以图像的哈希码为输出的模型,总损失函数包括基于原始图像的哈希码和负样本图像集中的图像的哈希码确定的第一损失函数、以及基于原始图像的哈希码和原始图像的变换图像的哈希码确定的第二损失函数。
本公开可选的实施例中,该预设条件包括:
预测准确度不小于预设阈值,其中,预测准确度为每次训练所计算出的所有总损失函数的结果中小于设定值的结果的数量的占比。
本公开可选的实施例中,第一损失函数的取值表征了原始图像和负样本图像集中的图像的相似性,第二损失函数的取值表征了原始图像和原始图像的变换图像的差异性。
本公开可选的实施例中,第一损失函数包括第一子函数和第二子函数中的至少一项,其中,第一子函数的取值表征了原始图像的哈希码和负样本图像集中的图像的哈希码的随机独立性,第二损失函数的取值表征了原始图像的哈希码和负样本图像集中的图像的哈希码的相似度。
本公开实施例的神经网络模型的训练装置可执行本公开的实施例所提供的一种神经网络模型的训练方法,其实现原理相类似,本公开各实施例中的神经网络模型的训练装置中的各模块所执行的动作是与本公开各实施例中的神经网络模型的训练方法中的步骤相对应的,对于神经网络模型的训练装置的各模块的详细功能描述具体可以参见前文中所示的对应的神经网络模型的训练方法中的描述,此处不再赘述。
基于与图2中所示方法相同的原理,本公开的实施例中还提供了一种图像相似度的确定装置40,如图4所示,该图像相似度的确定装置40可以包括图像获取模块410、哈希码确定模块420和相似度确定模块430,其中:
图像获取模块,用于获取第一图像和第二图像;
哈希码确定模块,用于通过神经网络模型确定第一图像的第一哈希码和第二图像的第二哈希码,该神经网络模型是通过上述中所描述的训练神经网络模型的方法训练得到的;
相似度确定模块,用于基于第一哈希码和第二哈希码,确定第一图像和第二图像的相似度。
本公开实施例的图像相似度的确定装置可执行本公开的实施例所提供的一种图像相似度的确定方法,其实现原理相类似,本公开各实施例中的图像相似度的确定装置中的各模块所执行的动作是与本公开各实施例中的图像相似度的确定方法中的步骤相对应的,对于图像相似度的确定装置的各模块的详细功能描述具体可以参见前文中所示的对应的图像相似度的确定方法中的描述,此处不再赘述。
基于与本公开的实施例中所示的方法相同的原理,本公开的实施例中还提供了一种电子设备,该电子设备可以包括但不限于:处理器和存储器;存储器,用于存储计算机操作指令;处理器,用于通过调用计算机操作指令执行实施例所示的方法。
基于与本公开的实施例中所示的方法相同的原理,本公开的实施例中还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述实施例所示的方法,在此不再赘述。
本公开的实施例中的方案,下面参考图5,其示出了一种适用于实现本公开实施例的电子设备500的结构示意图,该电子设备500可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储装置508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从ROM 502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。