如果我理解正确的话,当训练神经网络来识别图像中的对象时,通常会将单个像素映射到单个输入层节点。然而,有时我们可能有一个大的图景,只有很小的兴趣领域。例如,如果我们训练一个神经网络来识别交通标志,我们可能会看到交通标志只覆盖其中一小部分的图像,而剩下的则是道路、树木、天空等。创建一个神经网络,试图从每个位置找到一个交通标志似乎是非常昂贵的。
我的问题是,除了对图像进行预处理之外,还有什么特殊的策略可以用神经网络来处理这种情况呢?
谢谢。
发布于 2014-02-17 17:24:59
每个输入节点使用一个像素通常是,而不是。进入您的网络的是特征向量,因此您应该输入实际的特性,而不是原始数据。输入原始数据(包括所有的噪声)不仅会导致错误的分类,而且训练所需的时间也会超过需要。
简而言之,预处理是不可避免的。您需要对数据进行更抽象的表示。有数以百计的方法来处理你所要求的问题。让我给你一些流行的方法。
1)图像处理,寻找感兴趣的区域。
在检测交通标志时,常用的策略是使用边缘检测(即与某些滤波器的卷积)、应用启发式算法、使用阈值滤波器和隔离感兴趣区域(blobs、强连通分量等)作为网络输入。
( 2)在没有任何先验知识或图像处理的情况下应用特征。
维奥拉/琼斯使用一种特定的图像表示,它们可以用非常快速的方式计算特征。他们的框架已经被证明是实时的。(我知道他们最初的工作并没有说明NNs,但我在论文中将他们的特性应用于多层感知器,所以你真的可以和任何分类器一起使用。)
3)深度学习。
学习更好的数据表示可以融入神经网络本身。这些方法是最流行的研究自动取款机。因为这是一个很大的话题,我只能给你一些关键字,让你可以自己研究它。自动编码器是学习高效表示的网络。可以将它们与传统的ANNs结合使用。卷积神经网络乍一看似乎有点老练,但值得一看。在对神经网络进行实际分类之前,它们有交替层的子窗口卷积(边缘检测)和重采样。CNN目前能够在OCR方面取得一些最好的结果。
在每一种情况下,您都必须问自己:我是否给我的ANN一个包含它完成工作所需的所有数据的表示(一种不太抽象的表示)和2)避免太多的噪音(从而保持足够的抽象)。
发布于 2019-02-22 17:10:29
我们通常不使用完全连接的网络来处理图像,因为输入层中的单元数量会很大。在神经网络中,我们有专门的神经网络来处理图像,即卷积神经网络(CNN)。然而,CNN扮演着特征提取器的角色。编码后的特征将最终输入到一个完全连接的网络中,该网络充当分类器。在你的例子中,我不知道你的物体和整个图像相比有多小。但是如果感兴趣的对象很小,即使使用CNN,图像分类的性能也不会很好。然后,我们可能需要使用对象检测(使用滑动窗口)来处理它。
发布于 2014-02-16 17:10:22
如果你想识别大尺寸图像上的小物体,你应该使用“扫描窗口”。
对于“扫描窗口”,可以应用降维方法:
https://stackoverflow.com/questions/21813997
复制相似问题