Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何将图像输入神经网络?_Image Processing_Computer Vision_Neural Network_Pattern Recognition - Fatal编程技术网

Image processing 如何将图像输入神经网络?

Image processing 如何将图像输入神经网络?,image-processing,computer-vision,neural-network,pattern-recognition,Image Processing,Computer Vision,Neural Network,Pattern Recognition,我知道神经网络是如何工作的,但如果我想将它们用于图像处理,比如实际的字符识别,我不知道如何将图像数据输入神经网络 我有一个非常大的字母图像。也许我应该尝试从图像中获取一些信息/规格,然后使用该规格值的向量?它们将成为神经网络的输入 谁做过这样的事,你能解释一下怎么做吗 您试图解决的问题的名称为“”。这绝对不是一件小事,也是一个积极研究的课题 实现这一点的简单方法是将图像的每个像素映射到相应的输入神经元。显然,这只适用于大小相同的图像,并且通常效果有限 除此之外,你还可以做很多事情。。。Gabor

我知道神经网络是如何工作的,但如果我想将它们用于图像处理,比如实际的字符识别,我不知道如何将图像数据输入神经网络

我有一个非常大的
字母图像。也许我应该尝试从图像中获取一些信息/规格,然后使用该规格值的向量?它们将成为神经网络的输入


谁做过这样的事,你能解释一下怎么做吗

您试图解决的问题的名称为“”。这绝对不是一件小事,也是一个积极研究的课题

实现这一点的简单方法是将图像的每个像素映射到相应的输入神经元。显然,这只适用于大小相同的图像,并且通常效果有限


除此之外,你还可以做很多事情。。。Gabor滤波器、类Haar特征、PCA和ICA、稀疏特征,仅举几个流行的例子。我的建议是选一本关于神经网络和模式识别的教科书,特别是光学字符识别。

最简单的解决方案是对所有图像进行标准化,无论是用于训练还是测试,使其具有相同的分辨率。此外,每个图像中的字符大小应该大致相同。使用灰度图像也是一个好主意,因此每个像素只会给出一个数字。然后,您可以使用每个像素值作为网络的一个输入。例如,如果您有大小为16x16像素的图像,您的网络将有16*16=256个输入神经元。第一个神经元在(0,0)处看到像素值,第二个在(0,1)处看到像素值,依此类推。基本上,您将图像值放入一个向量,然后将该向量输入网络。这应该已经奏效了


通过首先从图像中提取特征(例如,边缘),然后在这些特征上使用网络,您可能会提高学习速度,并使检测更加稳健。在这种情况下,你要做的是结合先前的知识。对于字符识别,您知道某些相关特征。因此,通过提取这些特征作为预处理步骤,网络不必学习这些特征。但是,如果您提供了错误的(即不相关的)功能,网络将无法学习图像-->字符映射。

您可以使用实际像素作为输入。这就是为什么有时最好使用较小分辨率的输入图像

ANN的优点在于,它们能够以某种方式进行特征选择(通过为这些输入节点分配接近零的权重来忽略不重要的像素)

以下是一些步骤: 确保您的彩色/灰度图像是二值图像。为此,请执行一些阈值操作。然后进行某种特征提取。对于OCR/NN内容,此示例可能会有所帮助,尽管在ruby中:

关于将NNs应用于图像的所有这些注意事项都包含在我们的 (基于特征、基于像素、尺度不变性等)

你最大的挑战是所谓的“维度诅咒”


我会将NN的性能与支持向量机(使用哪些内核比较棘手)进行比较。

您已经有了neuronet吗?如果不是,这是一个奇怪的问题。如果是-至少发布界面。这不是一个奇怪的问题。实际上,如果我有一个接口,那就意味着我首先要决定如何将图像输入神经网络。问题是——我能把像字母A这样的图像数据输入神经网络吗,即使它非常大或很小,或者我应该把它分解成一些唯一决定字母A的参数!如果我把它分解成参数,我应该使用什么样的参数?我解决这个问题的步骤好吗?1.二值化图像。2.分割。查找图像的连接部分。可能正在使用轮廓。3.对于每个区段,将其与其他区段分开进行。3.1从图像片段中提取一些信息。3.2与某些模式进行比较或将其输入神经网络。所以我有一些问题。1.如果我分割图像,并且我在那里得到一个字母“I”,它周围的点将从片段中分离出来。那么如何处理这种情况呢?可能会添加一些特殊情况。2.如果片段非常大或太小,我应该调整其大小吗?我可以将不同大小的图像输入到我的神经网络吗?我想我不能,但我不确定。所以图像可以包含一些不同大小的字母,如何处理?您的预处理步骤听起来像这样可以工作,但是,我建议从我在第一段中建议的开始。在我看来,你在神经网络或字符识别方面没有那么多经验。因此,为了了解什么是有效的,它是如何工作的,你应该从一个简单的案例开始。一次添加过多的步骤会增加出错的几率,如果不真正了解每个步骤的预期效果,您将很难调试代码。您不应该使用不同的大小,至少不能作为第一步。从理论上讲,神经网络将能够识别它在训练过程中看到的一切,只要它经过足够的数据训练,并且网络足够大。然而,在实践中,您几乎总是希望首先规范化输入图像。有一些方法试图学习尺度不变量,比如Yann LeCun的卷积网络(参见,例如,字符识别)。然而,我真的建议你从最简单的方法开始,可能不是字母,而是数字。不要使用包含不同字符的图像。使用仅包含一个字符且大小相同的图像,并且图像中的字符也应具有相同的大小。为了节省所有的预处理工作,请从(页面底部)获取邮政编码数据,并使用该数据训练您的网络。在这里,您不必处理规范化和在向量中组织像素值,这一切都已经完成