我得到了一个使用神经网络识别车辆类型的项目,这就是我如何了解神经技术的伟大之处的。
我是这个领域的初学者,但我有足够的材料来学习它。我只想知道一些开始这个项目的好地方,因为我最大的问题是我没有太多的时间。我真的很感谢任何人的帮助。最重要的是,我想学习如何将模式与图像(在我的例子中,是车辆)进行匹配。
我还想知道python是不是一个好的开始语言,因为我对它最满意。
我有一些汽车的图像作为输入,我需要将这些汽车按型号分类。
Eg: Audi A4,Audi A6,Audi A8,etc发布于 2013-07-24 13:30:34
您没有说是否可以使用现有的框架,或者是否需要从头开始实现解决方案,但无论哪种方式,Python都是编写神经网络的优秀语言。
如果您可以使用框架,请查看Theano,它是用Python编写的,是所有语言中最完整的神经网络框架:
http://www.deeplearning.net/software/theano/
如果您需要从头开始编写您的实现,请参阅Stephen Marsland的“机器学习,算法视角”一书。它包含实现基本多层神经网络的示例Python代码。
至于如何继续,您需要将图像转换为一维输入向量。不要担心丢失2-D信息,网络会自己学习提取2-D特征的“接受域”。将像素强度归一化为-1到1的范围(或者更好,0平均值,标准差为1)。如果图像已经居中并归一化到大致相同的大小,那么一个简单的前馈网络应该就足够了。如果汽车与摄像头的角度或距离变化很大,您可能需要使用卷积神经网络,但实现起来要复杂得多( Theano文档中有示例)。对于基本的前馈网络,尝试使用两个隐藏层,每层中的像素数在0.5到1.5倍之间。
将数据集分为单独的训练集、验证集和测试集(可能分别具有0.6、0.2、0.2的比率),并确保每个图像只出现在一个集中。只在训练集上训练,并且在接近100%的训练实例正确之前不要使用任何正则化。您可以使用验证集来监控未进行训练的实例的进度。验证集的性能应该比训练集的性能差。当验证集上的性能停止提高时,停止训练。一旦你做到了这一点,你可以尝试不同的正则化常量,并选择一个能带来最佳验证集性能的常量。测试集将告诉您最终结果的执行情况(但不要基于测试集结果更改任何内容,否则您也有过度拟合的风险!)。
如果你的汽车图像非常复杂和多变,并且你不能得到一个基本的前馈网络来很好地执行,你可以考虑使用“深度学习”。也就是说,添加更多的层,并使用无监督训练对其进行预训练。这里有一个关于如何做到这一点的详细教程(尽管所有的代码示例都在MatLab/Octave中):
http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial
再一次,这增加了很多复杂性。首先尝试使用基本的前馈神经网络。
https://stackoverflow.com/questions/17776212
复制相似问题