没有源发布图像

时间:2019-04-24 06:49:28

标签: opencv tensorflow keras conv-neural-network machine-learning-model

我有超过一百万张我想用作训练数据的图像。如何在不损害安全性的情况下免费提供这些数据?

我希望用户能够快速将其用于培训目的,而又不给黑客提供机会从开源数据重建图像。同时,我不希望培训质量受到任何影响。

换句话说,我如何安全地开源图像?


例如此代码生成numpy数组。在这种情况下,我只想让从ndarray“ x”重建原始图像变得非常困难。

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
i = load_img('some_image.jpg' )
x = img_to_array(i)
x = x.reshape((1,) + x.shape)

一旦我知道黑客无法使用数据并创建相同的映像,我就可以共享数组x。

2 个答案:

答案 0 :(得分:6)

如果您打算发布开源图片,那么一个很好的开始就是了解WikiCommons的工作方式。他们曾经并且必须面对许多挑战,那里有很多东西可以学习。

如果您的听众需要提供完整的图片来使他们的模型正常工作,那么无论您如何尝试使包含数据的数组都变得模糊不清。具有足够时间和创造力的聪明人将能够重建原始图片。这不是一个可行的解决方案,只能提供一种错误的安全感。

如果您选择破坏性的方法,而不是提供实际的图片,而是对其进行一些摘要/哈希/指纹处理,那么您可能会降低重建原始图片的风险(请注意,有非常聪明的人具有很强的加密技能)。但是随后您的听众将无法从图片本身中学习,因此您可能无法实现目标。

破坏性较小,可能不符合您的要求:增加噪音。它不会阻止敏感材料的泄漏(人眼和大脑在某种程度上可以很好地进行分类),并且是AI confusion的一种众所周知的技术。也不是一个好的解决方案。

无论如何,如果您在没有护理的情况下提供了不适合开源的敏感材料,那么您可能会给自己和其他人带来麻烦。这不是一个好选择。

我的建议

  • 如果您的图片确实适合开放源代码政策,那么就照此服务,而不用担心黑客,他们也是客户;
  • 如果您的图片很敏感,请不要将其用作开放源代码。取而代之的是提供一个具有一层安全性的框架并实施您必须考虑的必需法规(ToS,IP,版权,GDPR)。

答案 1 :(得分:0)

所有机器学习算法都会拍摄真实图像,并将图像转换为张量,然后分批处理(一次处理多个图像)。

为您提供的选项组合:

  • 您可以与队友分享您的图片并通过信任来传递。
  • 您可以以某种方式将图像混淆为一堆文件,或者可以创建算法将其转换为numpy数组(或张量),对其进行混淆,并提供将其恢复回原样的过程而不会造成任何损失。

但是在所有这些情况下,不想要的人都可以以某种方式猜测您的程序/混淆。

理想的做法是根据您的图像创建机器学习模型(例如VGG,ResNet,Inception),然后分发您的模型,以便从图像中学习计划。

最重要的是,在ML中,您需要图像来向他们学习一些东西,而不是图像本身。

从这个document可以看到,隐私确实是一个问题,涉及版权如何导致公共数据集的衰败。

由于隐私确实很重要,因此没有很多解决方案。但是,带有GANs的想法可能令人鼓舞。

如果您不使用GAN,则很难说出您需要进行哪些正确的转换才能摆脱隐私政策的顾虑。

仅当您尝试翻转图像,缩放图像,删除元数据,对其进行规范化或变换一个像素是不够的。您需要使它们与原件没有区别。