如何:模式识别
我有兴趣了解更多有关模式识别的知识。 我知道这是一个广泛的领域,所以我将列出一些我想学习处理的特定类型的问题:
- 在看似随机的字节集中查找模式。
- 识别图像中的已知形状(例如圆形和正方形)。
- 注意到给定位置流的运动模式(Vector3)
这对我个人来说是一个新的实验领域,说实话,我根本不知道从哪里开始:-)我显然不是在寻找答案提供给我的是一个银盘,但是一些搜索术语和/或在线资源让我可以开始熟悉上述问题领域的概念,那就太棒了。
谢谢!
ps:为了额外加分,如果所述资源提供 C# 代码示例/讨论,那就太棒了 :-) 但并不需要如此
I'm interested in learning more about pattern recognition. I know that's somewhat of a broad field, so I'll list some specific types of problems I would like to learn to deal with:
- Finding patterns in a seemingly random set of bytes.
- Recognizing known shapes (such as circles and squares) in images.
- Noticing movement patterns given a stream of positions (Vector3)
This is a new area of experimentation for me personally, and to be honest, I simply don't know where to start :-) I'm obviously not looking for the answers to be provided to me on a silver platter, but some search terms and/or online resources where I can start to acquaint myself with the concepts of the above problem domains would be awesome.
Thanks!
ps: For extra credit, if said resources provide code examples/discussion in C# would be grand :-) but doesn't need to be
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
隐马尔可夫模型以及人工神经网络。
编辑:你可以看看 NeuronDotNet,它是开源的,你可以浏览一下代码。
编辑2:您还可以查看 ITK,它也是开源的并实现了很多此类算法。
编辑3:这是一个非常好的神经网络简介。 它涵盖了许多基础知识并包括源代码(尽管是 C++ 的)。 他实现了一种无监督学习算法,我想您可能正在寻找一种有监督的反向传播算法 训练你的网络。
编辑4:另一个很好的介绍,避免了真正繁重的数学计算,但如果你想深入研究的话,它在底部提供了许多细节的参考。 包括伪代码、良好的图表以及反向传播的冗长描述。
Hidden Markov Models are a great place to look, as well as Artificial Neural Networks.
Edit: You could take a look at NeuronDotNet, it's open source and you could poke around the code.
Edit 2: You can also take a look at ITK, it's also open source and implements a lot of these types of algorithms.
Edit 3: Here's a pretty good intro to neural nets. It covers a lot of the basics and includes source code (albeit in C++). He implemented an unsupervised learning algorithm, I think you may be looking for a supervised backpropagation algorithm to train your network.
Edit 4: Another good intro, avoids really heavy math, but provides references to a lot of that detail at the bottom, if you want to dig into it. Includes pseudo-code, good diagrams, and a lengthy description of backpropagation.
这有点像在说“我想了解更多有关电子学的知识……有人告诉我从哪里开始吗?” 模式识别是一个完整的领域——有数百本甚至数千本书籍,任何大学都至少有几门(可能是 10 门或更多)研究生级别的课程。 还有许多致力于此的期刊,这些期刊已经出版了几十年......会议......
您可以从维基百科开始。
http://en.wikipedia.org/wiki/Pattern_recognition
This is kind of like saying "I'd like to learn more about electronics.. anyone tell me where to start?" Pattern Recognition is a whole field - there are hundreds, if not thousands of books out there, and any university has at least several (probably 10 or more) courses at the grad level on this. There are numerous journals dedicated to this as well, that have been publishing for decades ... conferences ..
You might start with the wikipedia.
http://en.wikipedia.org/wiki/Pattern_recognition
这是一个老问题,但它是相关的,所以我想我应该把它发布在这里 :-) 斯坦福大学开始在这里提供在线机器学习课程 - http://www.ml-class.org
This is kind of an old question, but it's relevant so I figured I'd post it here :-) Stanford began offering an online Machine Learning class here - http://www.ml-class.org
OpenCV 有一些图像模式识别的函数。
您可能想看看这个:http://opencv.willowgarage.com/documentation/pattern_recognition。 html。 (损坏的链接:新文档中最接近的内容是 http://opencv.willowgarage.com /documentation/cpp/ml__machine_learning.html,虽然它不再是我所说的对初学者有帮助的文档 - 请参阅其他答案)
但是,我也建议从 Matlab 开始,因为 openCV 使用起来并不直观。
OpenCV has some functions for pattern recognition in images.
You might want to look at this :http://opencv.willowgarage.com/documentation/pattern_recognition.html. (broken link: closest thing in the new doc is http://opencv.willowgarage.com/documentation/cpp/ml__machine_learning.html, although it is no longer what I'd call helpful documentation for a beginner - see other answers)
However, I also recommend starting with Matlab because openCV is not intuitive to use.
计算机上此页面上有很多有用的链接视觉相关的模式识别。 有些链接现在似乎已损坏,但您可能会发现它很有用。
Lot of useful links on this page on computer vision related pattern recognition. Some of the links seem to be broken now but you may find it useful.
我不是这方面的专家,但是阅读隐马尔可夫模型是一个很好的开始方式。
I am not an expert on this, but reading about Hidden Markov Models is a good way to start.
谨防错误模式! 对于任何相当大的数据集,您都会发现似乎具有模式的子集,即使它是抛硬币的数据集。 任何良好的模式识别过程都不应缺少统计技术来评估检测到的模式是否真实的可信度。 如果可能,对随机数据运行算法,看看它们检测到什么模式。 这些实验将为您提供可在随机(也称为“空”)数据中找到的模式强度的基线。 这种技术可以帮助您评估您的发现的“错误发现率”。
Beware false patterns! For any decently large data set you will find subsets that appear to have pattern, even if it is a data set of coin flips. No good process for pattern recognition should be without statistical techniques to assess confidence that the detected patterns are real. When possible, run your algorithms on random data to see what patterns they detect. These experiments will give you a baseline for the strength of a pattern that can be found in random (a.k.a "null") data. This kind of technique can help you assess the "false discovery rate" for your findings.
在matlab中学习模式识别更容易..
有几个例子并且有可以使用的函数。
它有利于理解概念和实验......
learning pattern-recoginition is easier in matlab..
there are several examples and there are functions to use.
it is good for the understanding concepts and experiments...
我建议从一些 MATLAB 工具箱开始。 由于其交互式控制台,MATLAB 是一个特别方便的开始尝试此类内容的地方。 我个人使用过并且非常喜欢的一个不错的工具箱是 PRTools (http://prtools.org); 他们几乎实现了所有模式识别工具以及其他一些机器学习工具(神经网络等)。 但 MATLAB 的好处在于,您还可以尝试许多其他工具箱(甚至还有一个 Mathworks 的专有工具箱)
每当您对不同的工具感到足够满意(并发现哪个分类器最适合您的问题)时,您就可以开始考虑在不同的应用程序中实现机器学习。
I would recommend starting with some MATLAB toolbox. MATLAB is an especially convenient place to start playing around with stuff like this due to its interactive console. A nice toolbox I personally used and really liked is PRTools (http://prtools.org); they have an implementation of pretty much every pattern recognition tool and also some other machine learning tools (Neural Networks, etc.). But the nice thing about MATLAB is that there are many other toolboxes as well you can try out (there is even a proprietary toolbox from Mathworks)
Whenever you feel comfortable enough with the different tools (and found out which classifier is perfomring best for you problem), you can start thinking about implementing the machine learning in a different application.