0

我得到了一个关于使用神经网络进行车辆类型识别的项目,这就是我如何了解神经技术的厉害之处。

我是这个领域的初学者,但我有足够的材料来学习它。我只是想知道一些专门为这个项目开始的好地方,因为我最大的问题是我没有太多时间。我真的很感激任何帮助。最重要的是,我想学习如何将模式与图像(在我的例子中是车辆)进行匹配。

我还想知道 python 是否是一种很好的语言,因为我最喜欢它。

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

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

1 回答 1

3

您没有说是否可以使用现有框架或需要从头开始实施解决方案,但无论哪种方式,Python 都是用于编码神经网络的优秀语言。

如果您可以使用框架,请查看 Theano,它是用 Python 编写的,是任何语言中可用的最完整的神经网络框架:

http://www.deeplearning.net/software/theano/

如果您需要从头开始编写实现,请查看 Stephen Marsland 的《机器学习,算法视角》一书。它包含用于实现基本多层神经网络的示例 Python 代码。

至于如何进行,您需要将图像转换为一维输入向量。不要担心丢失二维信息,网络会自行学习提取二维特征的“感受野”。将像素强度标准化为 -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

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

于 2013-07-24T05:30:34.017 回答