1

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

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

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


例如,此代码生成 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。

4

2 回答 2

6

如果您的目标是发布开源图片,那么了解WikiCommons 的工作原理是一个好的开始。他们已经并且必须面对许多此类挑战,从中可以学到很多东西。

如果您的受众需要提供完整的图片以使他们的模型正常工作,那么无论您如何尝试混淆包含数据的数组。有足够时间和创造力的聪明人将能够重建原始画面。这不是一个可行的解决方案,它只会提供一种虚假的安全感。

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

破坏性较小且可能不符合您的要求:添加噪音。它不会阻止敏感材料的泄露(人眼和大脑在某种程度上很适合分类),而且它是一种众所周知的人工智能混淆技术。也不是很好的解决方案。

无论如何,如果你不小心提供不适合开源的敏感材料,那么你可能会给自己和其他人带来麻烦。这不是一个好的选择。

我的建议,

  • 如果你的图片真的符合开源政策,那就这样服务吧,不用担心黑客,他们也是客户;
  • 如果您的图片很敏感,请不要将它们作为开源。而是提供一个具有一层安全性的框架并实施您必须考虑的必要法规(ToS、IP、版权、GDPR)。
于 2019-04-30T09:23:54.833 回答
0

所有机器学习算法都获取真实图像并将图像转换为张量,并分批处理(一次多张图像)。

几个选项供您选择:

  • 您可以与您的队友分享您的图像,并在信任的基础上进行转发。
  • 您可以以某种方式将图像混淆为一堆文件,或者您可以创建将它们转换为 numpy 数组(或张量)的算法,对它们进行混淆,并提供将它们还原为无损失的过程。

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

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

归根结底,在 ML 中,您需要图像来从中学习一些东西,而不是图像本身。

隐私确实是一个问题,正如我们从这份处理版权如何导致公共数据集衰减的文档中看到的那样。

这个问题没有很多解决方案,因为隐私真的很重要。然而,GAN的这个想法可能是令人鼓舞的。

如果您不使用 GAN,则很难说出您需要进行哪些正确的转换才能避免隐私政策问题。

仅仅尝试翻转图像、缩放它们、删除元数据、标准化它们或变换一个像素是不够的。您需要使它们与原件无法区分。

于 2019-05-02T08:09:47.470 回答