【问题标题】:Altering trained images to train neural network改变训练图像以训练神经网络
【发布时间】:2017-05-28 06:33:13
【问题描述】:

我目前正在尝试制作一个程序,仅根据外观来区分腐烂的橙子和可食用的橙子。为此,我计划使用卷积神经网络对烂橙子和正常橙子进行训练。经过一番搜索,我只能找到一个大约的数据库。黑色背景上的 150 个烂橙子和 150 个普通橙子 (http://www.cofilab.com/downloads/)。显然,机器学习模型至少需要几千个橙子才能达到 90% 以上的准确度。但是,我可以以某种方式更改这 150 个橙子以生成更多橙子​​照片吗?通过改变,我的意思是在柑橘类水果上添加不同深浅的橙色来制作“不同的橙色”。这会是训练神经网络的有效方法吗?

【问题讨论】:

    标签: machine-learning computer-vision neural-network conv-neural-network training-data


    【解决方案1】:

    这是增加约会次数的好方法。您将做什么取决于您的数据。例如,如果您正在对从传感器获得的数据进行训练,您可能希望在训练数据中添加一些噪声,以便增加数据集。毕竟,您可以预料到稍后传感器会发出一些噪音。

    假设您将在图像上对其进行训练,这里有一个非常好的 github 存储库,它提供了使用这些技术的方法。这个 Python 库可帮助您为机器学习项目增加图像。它将一组输入图像转换为一组新的、更大的、稍微改变的图像。 链接:https://github.com/aleju/imgaug

    特点:

    • 大多数可用的标准增强技术。

    • 技术可以应用于图像和关键点/地标 图片。在开始时定义一次增强序列 实验,然后多次应用。

    • 为每个增强定义灵活的随机范围,例如“旋转 每个图像由 -45 到 45 度之间的值”或“旋转每个图像 图像由从正态分布 N(0, 5.0) 中采样的值"。

    • 轻松将所有随机范围转换为确定性值 以完全相同的方式增加不同批次的图像 (例如图像及其热图)。

    【讨论】:

      【解决方案2】:

      数据增强正是您所寻找的。在你的情况下,你可以做不同的事情:

      1. 应用滤镜以获得略有不同的图像,正如前面所说,您可以使用高斯模糊。

      2. 剪下橘子,放在不同的背景中。

      3. 用不同的比例因子缩放橙子。

      4. 旋转图像。

      5. 制作合成的烂橙子。

      6. 混合前面提到的所有不同组合。通过这种增强,您可以轻松创建数千种不同的橙子。

      我用 12000 张图像的数据集做了类似的事情,我可以创建 630000 个样本

      【讨论】:

        【解决方案3】:

        这确实是增加数据集的好方法。例如,您可以对图像应用高斯模糊。它们会变得模糊,但与原来的不同。您也可以反转图像。或者,在最后一种情况下,寻找新图像并应用所引用的技术。

        【讨论】:

          【解决方案4】:

          数据增强确实是提升训练集的好方法,但仍然不足以单独训练深度网络,因为它可能会过度拟合。您应该查看域适应,在其中采用预训练模型(例如在 imagenet 数据集上训练的 inception)并针对您的问题对其进行微调。由于您只需学习对用例进行分类所需的参数,因此可以使用相对较少的可用训练数据来实现良好的准确性。我已经使用这种技术here 主持了一个分类演示。用你的数据集试试看它是否有帮助。该演示负责预训练模型以及您将上传的数据集的数据增强。

          【讨论】:

            猜你喜欢
            • 2011-04-07
            • 1970-01-01
            • 1970-01-01
            • 2010-11-20
            • 2019-09-15
            • 1970-01-01
            • 1970-01-01
            • 2015-06-02
            • 2011-05-11
            相关资源
            最近更新 更多