随机裁剪数据增强卷积神经网络

Posted

技术标签:

【中文标题】随机裁剪数据增强卷积神经网络【英文标题】:Random cropping data augmentation convolutional neural networks 【发布时间】:2016-04-07 02:17:29 【问题描述】:

我正在训练一个卷积神经网络,但数据集相对较小。所以我正在实施技术来增强它。现在这是我第一次研究核心计算机视觉问题,所以对它比较陌生。对于增强,我阅读了许多技术,其中一个在论文中提到很多的技术是随机裁剪。现在我正在尝试实现它,我已经搜索了很多关于这种技术的信息,但找不到合适的解释。所以有几个问题:

随机裁剪实际上如何帮助数据增强? python中是否有任何库(例如OpenCV、PIL、scikit-image、scipy)隐式实现随机裁剪?如果没有,我应该如何实现它?

【问题讨论】:

【参考方案1】:

在我看来,随机裁剪有助于数据增强的原因是,虽然图像的语义得到了保留(除非您选择了一个非常糟糕的裁剪,但我们假设您设置了随机裁剪,因此这种可能性非常低)您在转换网络中获得的激活值是不同的。因此,实际上我们的卷积网络学会了将更广泛的空间激活统计信息与某个类标签相关联,因此通过随机裁剪的数据增强有助于提高卷积网络中特征检测器的鲁棒性。同样,随机裁剪产生不同的中间激活值并产生不同的前向传递,因此它就像一个“新的训练点”。

这也不是微不足道的。请参阅最近关于神经网络中对抗性示例的工作(相对于 AlexNet 大小而言相对较浅)。语义上看起来或多或少相同的图像,当我们将它们通过顶部带有 softmax 分类器的神经网络时,我们可以获得截然不同的类别概率。因此,从语义的角度来看,细微的变化最终可能会导致不同的正向通过卷积网络。有关详细信息,请参阅Intriguing properties of neural networks。

回答您问题的最后一部分:我通常只是制作自己的随机裁剪脚本。假设我的图像是 (3, 256, 256)(3 个 RGB 通道,256x256 空间大小),您可以编写一个循环,只需随机选择一个有效的角点,即可对图像进行 224x224 随机裁剪。所以我通常会计算一个有效角点的数组,如果我想随机裁剪 10 个,我会从这个集合中随机选择 10 个不同的角点,比如我选择 (x0, y0) 作为左上角点,我会选择作物 X[x0:x0+224, y0:y0+224],类似这样。我个人喜欢从预先计算的一组有效角点中随机选择,而不是一次随机选择一个角点,因为这样我保证我不会得到重复的裁剪,尽管实际上它可能无论如何都是低概率的。

【讨论】:

嗨。谢谢。也只是想问一下,您说您将 256x256 图像裁剪为 224x224 以增强选择一些重要点。但卷积网络通常采用固定大小的输入。所以说我的图像是 125x138,而我使用的 conv-net 需要 224x224。如何在这里进行随机裁剪?我是否必须将整个图像调整为 256x256,然后随机裁剪?这不影响分类吗? 假设我的图像数据大小为 125x138。假设我想做数据增强并采用 96x128 的随机裁剪。然后我会将我的 conv 网络参数化为输入大小为 96x128。因此,我们选择的卷积网络输入大小通常设置为裁剪大小。随机裁剪和数据增强通常是一个预处理步骤,因此我们通常在配置分类器之前执行此操作。 谢谢。但是如果一张图像变得比卷积网络输入大小更小(数据集没有固定分辨率的图像)怎么办?在这种情况下如何随机裁剪,在裁剪回输入大小之前,我是否先将其重新缩放到更高分辨率?同样在裁剪(实时增强)时,如果主要对象被部分裁剪(因为我们无法每次都控制它)怎么办?这会影响分类吗? 那么在这种情况下,您可能会将所有图像的大小调整为通用大小(如果您使用 Linux,则可以使用 ImageMagick),例如 NxM,然后裁剪说 nxm,然后 nxm 将是您的转换净输入大小,按此顺序。如果主要对象被裁剪,那肯定会发生。你可以做一些探索性的数据分析,对随机图像进行一些测试,看看它是否通过了眼睛测试。这些东西都不是一成不变的,这一切都有点艺术。希望这会有所帮助。 没问题,这里有一个 Kaggle 糖尿病图像分类挑战的链接:Kaggle Diabetes。数据集很大,充满了不同大小和分辨率的图像。这里有一些漂亮的图像预处理技巧,如果你浏览论坛,我记得有人分享他们的代码。你也可以看看那里,看看人们是如何处理这个问题的。我相信获胜的提交是一个使用各种数据增强和预处理技巧的卷积网络。【参考方案2】:

要回答“如何实现裁剪”问题,您可能需要探索https://github.com/aleju/imgaug。有一个Crop 增强器可以让你进行随机裁剪。还有很多其他有趣的增强器。

【讨论】:

以上是关于随机裁剪数据增强卷积神经网络的主要内容,如果未能解决你的问题,请参考以下文章

数据增强

gan如何做图像增强

深度学习课程笔记卷积神经网络

卷积神经网络不同隐藏层卷积核都是一样的吗

卷积神经网络 - 改变图像数据范围的原因

卷积神经网络