2009-07-20 9 views
38

Sono interessato a saperne di più sul riconoscimento dei pattern. So che è un po 'un campo molto ampio, quindi elencherò alcuni tipi specifici di problemi che vorrei imparare a trattare:How To: Pattern recognition

  • Trovare i modelli in un insieme apparentemente casuale di byte.
  • Riconoscimento di forme note (come cerchi e quadrati) nelle immagini.
  • schemi di movimento Notando dato un flusso di posizioni (Vector3)

Si tratta di una nuova area di sperimentazione per me personalmente, e ad essere onesti, io semplicemente non so da dove cominciare :-) I' Ovviamente non sto cercando le risposte che mi verranno fornite su un piatto d'argento, ma alcuni termini di ricerca e/o risorse online in cui posso iniziare a familiarizzare con i concetti dei domini del problema sopra sarebbe fantastico.

Grazie!

ps: per il credito supplementare, se tali risorse forniscono esempi di codice/discussione in C# sarebbe grande :-) ma non ha bisogno di essere

+2

Sono contento che questa interessante domanda non sia stata contrassegnata come troppo ampia o "Chiedere tutorial è off-topic" in quanto è chiaramente, perché tratto vantaggio dai link nelle risposte. – Roland

+0

@Roland in effetti ... L'ho chiesto agli inizi di StackOverflow, quando volevano avere domande canoniche e risposte che sarebbero state migliorate nel tempo e indicizzate di conseguenza. Vorrei che le cose tornassero a questo, ho imparato molto anche dalle risposte qui :) –

risposta

26

Hidden Markov modelli sono un ottimo posto per cercare, così come Artificial Neural Networks.

Modifica: è possibile dare un'occhiata a NeuronDotNet, è open source e si potrebbe attirare il codice.

Modifica 2: È inoltre possibile dare un'occhiata a ITK, è anche open source e implementa un sacco di questi tipi di algoritmi.

Modifica 3: Ecco un buon intro to neural nets. Copre molte nozioni di base e include il codice sorgente (anche se in C++). Ha implementato un algoritmo di apprendimento non supervisionato, penso che potresti essere alla ricerca di un backpropagation algorithm supervisionato per addestrare la tua rete.

Modifica 4: Un altro good intro, evita la matematica veramente pesante, ma fornisce riferimenti a molti dettagli in basso, se si vuole scavare in esso. Include pseudo-codice, buoni diagrammi e una lunga descrizione di backpropagation.

1

Io non sono un esperto su questo, ma la lettura su Hidden Markov Models è un buon modo per iniziare.

0

apprendimento pattern-recoginition è più facile in MATLAB ..

ci sono diversi esempi e ci sono le funzioni da utilizzare.

è un bene per i concetti di comprensione e gli esperimenti ...

+2

Non ci sono informazioni nella tua risposta ... – LordT

4

OpenCV ha alcune funzioni per il riconoscimento del motivo nelle immagini.

Si potrebbe voler guardare questo: http://opencv.willowgarage.com/documentation/pattern_recognition.html. (collegamento interrotto: cosa più vicina nel nuovo documento è http://opencv.willowgarage.com/documentation/cpp/ml__machine_learning.html, anche se non è più quella che definirei documentazione utile per un principiante - vedere altre risposte)

Tuttavia, consiglio anche di iniziare con Matlab perché openCV non è intuitivo usare.

2

Lotto di link utili su this page per il riconoscimento del modello relativo alla visione artificiale.Alcuni link sembrano essere rotti ora ma potresti trovarlo utile.

4

Questo è un po 'come dire "Mi piacerebbe saperne di più sull'elettronica .. qualcuno mi dice da dove cominciare?" Pattern Recognition è un intero campo: ci sono centinaia, se non migliaia di libri là fuori, e qualsiasi università ha almeno diversi (probabilmente 10 o più) corsi a livello di laurea su questo. Ci sono anche numerose riviste dedicate a questo, che sono state pubblicate per decenni ... conferenze ..

Si potrebbe iniziare con la wikipedia.

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

4

Questa è una specie di una vecchia questione, ma è rilevante così ho pensato di postare qui :-) Stanford ha iniziato ad offrire un corso di apprendimento della macchina on-line qui - http://www.ml-class.org

0

lo consiglio iniziando con alcuni strumenti MATLAB. MATLAB è un posto particolarmente comodo per iniziare a giocare con cose come questa grazie alla sua console interattiva. Un bel toolbox che ho usato personalmente e mi è piaciuto molto è PRTools (http://prtools.org); hanno implementato praticamente tutti gli strumenti di riconoscimento dei pattern e anche altri strumenti di apprendimento automatico (reti neurali, ecc.). Ma la cosa bella di MATLAB è che ci sono molti altri toolbox che puoi provare (c'è anche uno proprietary toolbox da Mathworks)

Ogni volta che ti senti abbastanza a tuo agio con i diversi strumenti (e hai scoperto quale classificatore sta facendo meglio per il tuo problema), puoi iniziare a pensare di implementare l'apprendimento automatico in un'applicazione diversa.

1

Attenzione ai falsi modelli! Per qualsiasi set di dati decentemente di grandi dimensioni, è possibile trovare sottoinsiemi che sembrano avere un pattern, anche se si tratta di un set di dati di coin flip. Nessun buon processo per il riconoscimento di pattern dovrebbe essere privo di tecniche statistiche per valutare la confidenza che i pattern rilevati sono reali. Quando possibile, esegui i tuoi algoritmi su dati casuali per vedere quali pattern rilevano. Questi esperimenti ti forniranno una base per la forza di un modello che può essere trovato in dati casuali (a.k.a "null"). Questo tipo di tecnica può aiutarti a valutare il "tasso di false scoperte" per i tuoi risultati.