【问题标题】:Training set to train artificial neural network训练集训练人工神经网络
【发布时间】:2014-03-27 16:37:27
【问题描述】:

我是这个网站的新手。好吧,我正在做一个使用 ANN emgucv、C# 和 Visual Studio 2010 识别苹果的项目。我有 4000 张包含不同颜色和苹果旋转的图像。我有 2 个类,这意味着我在输出层有 1 个神经元(它是苹果而不是苹果)。第一堂课我将使用 4000 张苹果图像,但我不知道必须使用哪些图像来训练第二堂课。我想使用房间、卧室等背景图片。这是一个好主意吗?我的项目是关于分类是不是一个苹果,我不想识别葡萄或其他水果。我给出一个图像,我想确定这些图像是否包含苹果。

【问题讨论】:

    标签: c# neural-network emgucv


    【解决方案1】:

    一些cmets: 关于归一化,它很有用,因为它使图片对光照不那么敏感(没有归一化,相同的苹果在更好的光照下看起来会更白,并且网络会采用不同的值作为输入。你不希望这样)。但是,您使用的公式将变量的值限制在区间 [a, b] 内。在图片中,数字的值通常已经在 [0, 255] 中,因此需要另一种类型。您需要的具体归一化类型取决于您从图片中提取的特征(最常见的特征之一是histogram equalization

    但是,您的主要问题是您无法将图像直接输入网络。网络必须将一些描述图片的向量作为输入,而不是图片本身(想一想:如果你将图片输入网络,它会逐像素比较。如果同一个苹果向右移动一个像素,尽管图片本质上是相同的,但所有像素值都是不同的)。

    创建这样的向量可能非常困难,具体取决于您要如何使用它。一种简单(但有限)的方法是裁剪苹果,获取每张图片的直方图,并将描述每张图片直方图的向量输入网络。通过这种方式,网络很可能会正确分类图像。如果这是一个学校项目,或者你刚刚开始进行图像处理,试试这个。但是,如果你想在图片中的某个地方找到只包含一个苹果的图像,那就复杂得多了,你应该看看opencv关于二维特征提取的教程。

    【讨论】:

    • 我了解到,简单的方法是向 ANN 提供图像像素。但是你有你的力量。如果我使用灰度强度的直方图,你怎么看?我猜它叫颜色直方图,或者我读到了梯度直方图!
    • 你对这个项目的 hog 有什么看法?
    • 你最好使用颜色直方图。灰度直方图仅测量图像的亮度或暗度。但是,应该考虑到苹果是红色的事实。如果仅使用灰度直方图,则会丢失此信息。您尝试识别的对象无关紧要,您可以坚持使用苹果。
    • 嘿,我是否需要裁剪图像以便只留下我想识别的对象?或者我可以使用没有裁剪的原始图像(每张图像只包含我可以识别的对象)吗?因为我不明白。我用我裁剪的苹果图像和非苹果的背景训练我的 ANN。但是当我输入带有一些背景的苹果图像时,ANN 告诉我该图像不是苹果,但是当我裁剪图像并只留下苹果图像时, ANN 告诉我那是一个苹果,我不知道为什么?
    • 因为您的网络采用颜色值。图像中被苹果覆盖的部分越少,分类错误的可能性就越大。但是,这完全是错误的方法,您无法将图像输入网络。
    【解决方案2】:

    对于第二类,您需要使用不包含苹果的图片。理想情况下,它应该是不包含苹果的图像的混合,即宇宙飞船、足球比赛、笑脸、动物和任何你能想到的东西的集合。

    但是,您根本没有提到的真正问题是您将如何提取特征:如果这是您第一次尝试此操作并认为您只会逐个像素地输入整个图片像素,进入神经网络并得到答案,你运气不好。

    最重要的过程是如何创建描述图像的向量。即如何从图像中创建一个向量,使得包含苹果的图像的向量与不包含苹果的图像的向量有很大的不同。

    然而,这根本不是小事。事实上,这可能是一项非常困难的任务,具体取决于图像的性质。如果第一类包含显示占据大部分图片的苹果的图像,而第二类仅显示卧室,则仅使用颜色直方图即可。

    但是,如果图像显示可能包含或不包含苹果的随机场景,则非常困难。要开始使用,请查看 opencv 2d 特征 + 单应性以查找已知对象

    【讨论】:

    • 嘿,我是否需要裁剪图像以便只留下我想识别的对象?或者我可以使用没有裁剪的原始图像(每张图像只包含我可以识别的对象)吗?因为我不明白。我用我裁剪的苹果图像和非钢笔的背景训练我的 ANN。但是当我输入带有一些背景的苹果图像时,ANN 告诉我该图像不是苹果,但是当我裁剪图像并只留下钢笔图像时, ANN 告诉我那是一个苹果而我不知道为什么?我用我裁剪的图像训练了 ANN,只有我留下了 conatians apple 的图像
    • 我正在使用这个公式来标准化输入到 ann data_normalize=(x-min)/(max-min) 其中 x 是像素值,min 是图像的最小像素值和 max是图像的最大值像素。你怎么看?我将图像转换为灰度
    猜你喜欢
    • 2013-04-27
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2010-11-20
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多