如何:模式识别

Posted

技术标签:

【中文标题】如何:模式识别【英文标题】:How To: Pattern Recognition 【发布时间】:2010-11-12 07:53:15 【问题描述】:

我有兴趣了解有关模式识别的更多信息。我知道这是一个广泛的领域,所以我将列出一些我想学习处理的特定类型的问题:

在看似随机的一组字节中寻找模式。 识别图像中的已知形状(例如圆形和正方形)。 注意给定位置流 (Vector3) 的运动模式

这对我个人来说是一个新的实验领域,老实说,我根本不知道从哪里开始 :-) 我显然不是在寻找可以在银盘上提供给我的答案,但是一些搜索词和/或在线资源可以让我开始熟悉上述问题领域的概念。

谢谢!

ps:为了获得额外的荣誉,如果所述资源提供 C# 中的代码示例/讨论将是盛大的 :-) 但不需要

【问题讨论】:

我很高兴这个有趣的问题没有被标记为太宽泛或“要求教程是题外话”,因为我受益于答案中的链接。 @Roland 确实......我在 *** 的早期就问过这个问题,当时他们希望有规范的问题和答案,这些问题和答案会随着时间的推移而改进并相应地编入索引。希望事情能回到过去,我也从这里的答案中学到了很多:) 【参考方案1】:

我不是这方面的专家,但阅读Hidden Markov Models 是一个很好的开始。

【讨论】:

【参考方案2】:

在 matlab 中学习模式识别更容易..

有几个例子,有一些功能可以使用。

有利于理解概念和实验...

【讨论】:

【参考方案3】:

隐藏马尔可夫模型和Artificial Neural Networks 是一个很好的查看位置。

编辑:您可以查看NeuronDotNet,它是开源的,您可以查看代码。

编辑2:你也可以看看ITK,它也是开源的,实现了很多这类算法。

编辑 3:这是一个很好的intro to neural nets。它涵盖了许多基础知识并包括源代码(尽管是 C++)。他实现了一个无监督学习算法,我想你可能正在寻找一个有监督的backpropagation algorithm 来训练你的网络。

编辑 4:另一个good intro,避免了真正繁重的数学运算,但如果您想深入研究,请在底部提供很多细节的参考。包括伪代码、精美的图表和对反向传播的冗长描述。

【讨论】:

【参考方案4】:

OpenCV 有一些图像模式识别功能。

您可能想看看这个:http://opencv.willowgarage.com/documentation/pattern_recognition.html。 (断开的链接:新文档中最接近的东西是 http://opencv.willowgarage.com/documentation/cpp/ml__machine_learning.html,尽管它不再是我所说的对初学者有用的文档 - 请参阅其他答案)

不过,我也建议从 Matlab 开始,因为 openCV 使用起来并不直观。

【讨论】:

【参考方案5】:

this page 上有很多关于计算机视觉相关模式识别的有用链接。有些链接现在似乎已损坏,但您可能会发现它很有用。

【讨论】:

【参考方案6】:

这有点像说“我想了解更多关于电子学的知识……有人告诉我从哪里开始吗?”模式识别是一个完整的领域——那里有数百甚至数千本书,任何一所大学都至少有几门(可能是 10 门或更多)关于这方面的研究生课程。也有许多致力于此的期刊,已经出版了几十年……会议……

您可以从***开始。

http://en.wikipedia.org/wiki/Pattern_recognition

【讨论】:

【参考方案7】:

这是一个老问题,但它很相关,所以我想我会把它贴在这里 :-) 斯坦福开始在这里提供在线机器学习课程 - http://www.ml-class.org

【讨论】:

【参考方案8】:

我建议从一些 MATLAB 工具箱开始。由于它的交互式控制台,MATLAB 是一个特别方便的地方,可以开始玩这样的东西。我个人使用并且非常喜欢的一个不错的工具箱是 PRTools (http://prtools.org);他们实现了几乎所有模式识别工具以及其他一些机器学习工具(神经网络等)。但 MATLAB 的好处在于,您还可以尝试许多其他工具箱(甚至还有来自 Mathworks 的 proprietary toolbox)

只要您对不同的工具感到满意(并发现哪个分类器最适合您的问题),您就可以开始考虑在不同的应用程序中实现机器学习。

【讨论】:

【参考方案9】:

当心虚假模式!对于任何相当大的数据集,您都会发现似乎具有模式的子集,即使它是抛硬币的数据集。没有一个好的模式识别过程应该没有统计技术来评估检测到的模式是真实的置信度。如果可能,请在随机数据上运行算法以查看它们检测到的模式。这些实验将为您提供可以在随机(又名“空”)数据中找到的模式强度的基线。这种技术可以帮助您评估您的发现的“错误发现率”。

【讨论】:

以上是关于如何:模式识别的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式识别特定模式之间的单词:Oracle?

模式识别(Pattern Recognition)学习笔记--何为模式识别

模式识别(Pattern Recognition)学习笔记--何为模式识别

在 Hive 中,这种模式如何从 json 数组中识别嵌套的 json?

如何识别当前在 Windows Phone 7 中使用的 GPS 模式

如何在 Matlab 模式识别工具箱(PRTools)中设置连续标签