用神经网络识别车型

时间:2013-07-21 19:48:18

标签: python-2.7 pattern-matching artificial-intelligence project neural-network

我获得了一个关于神经网络识别车辆类型的项目,这就是我如何了解神经技术的可怕性。

我是这个领域的初学者,但我有足够的材料来学习它。我只是想知道一些特别适合这个项目的好地方,因为我最大的问题是我没有太多时间。我真的很感激任何帮助。最重要的是,我想学习如何匹配模式与图像(在我的情况下,车辆)。

我也想知道python是否是一个很好的语言,因为我最熟悉它。

我有一些汽车的图像作为输入,我需要根据型号对这些汽车进行分类。

Eg: Audi A4,Audi A6,Audi A8,etc

1 个答案:

答案 0 :(得分:3)

您没有说明您是否可以使用现有框架或需要从头开始实施解决方案,但无论哪种方式,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 x。

将数据集分成单独的训练,验证和测试集(可能分别为0.6,0.2,0.2)并确保每个图像仅出现在一组中。仅训练训练集,并且在接近100%的训练实例正确之前不要使用任何正则化。您可以使用验证集来监控您未接受培训的实例的进度。验证集上的性能应该比训练集更差。当验证集上的性能停止改进时停止培训。完成此操作后,您可以尝试不同的正则化常数,并选择能够获得最佳验证集性能的常量。测试集将告诉您最终结果的执行情况(但不会根据测试集结果更改任何内容,或者您​​也可能过度拟合!)。

如果您的汽车图像非常复杂且多种多样且您无法获得基本的前馈网络,那么您可以考虑使用“深度学习”。也就是说,添加更多图层并使用无人监督训练对其进行预训练。这里有一个关于如何执行此操作的详细教程(尽管所有代码示例都在MatLab / Octave中):

http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

同样,这增加了很多复杂性。首先尝试使用基本的前馈NN。