5

Problem jest nieco inny niż tradycyjne rozpoznawanie pisma ręcznego. Mam zestaw danych, które są tysiące następujących. Dla jednej narysowanej postaci mam kilka kolejnych współrzędnych (x, y), w których pióro było wciśnięte. Jest to problem sekwencyjny (czasowy).W jaki sposób można używać HMM do rozpoznawania pisma ręcznego?

Chcę być w stanie klasyfikować odręczne znaki na podstawie tych danych i chciałbym wprowadzić HMM do celów edukacyjnych. Ale czy to właściwe podejście? Jak można to wykorzystać?

+0

To naprawdę ciekawy pomysł. Z ciekawości, jest również współrzędna czasowa każdego zapisanego punktu (tak, że w milisekundie 1 współrzędna 30 x 45 została naciśnięta) lub są one po prostu w kolejności? – Turnsole

+0

Obecnie jest to sekwencyjne. Zastanawiasz się nad dynamicznym dopasowywaniem czasu, aby wyjaśnić, że postacie są rysowane wolniej/szybciej – zebra

+0

Myślę, że to właściwe podejście. Jako ćwiczenie możesz zacząć od rozpoznawania alfabetu [palm graffite] (http://en.wikipedia.org/wiki/Graffiti_%28Palm_OS%29). – Maurits

Odpowiedz

2

Ten problem jest rzeczywiście mieszanka dwóch problemów:

  1. uznając jeden znak z danych
  2. rozpoznających słowo z (głośno) sekwencji znaków

HMM służy do znalezienia najbardziej prawdopodobnej sekwencji skończonej liczby dyskretnych stanów z głośnych pomiarów. Jest to dokładnie problem 2, ponieważ głośne pomiary stanów dyskretnych a-z, 0-9 następują kolejno w sekwencji.

Dla problemu 1, HMM jest bezużyteczny, ponieważ nie interesuje cię podstawowa sekwencja. To, czego chcesz, to wzmocnienie odręcznej cyfry informacjami o tym, jak ją napisałeś.

Osobiście zacznę od wprowadzenia standardowego, nowoczesnego rozpoznawania pisma ręcznego, które już jest bardzo dobre (z splotowymi sieciami neuronowymi lub głębokim uczeniem się). Następnie możesz dodać informacje o tym, jak zostało napisane, na przykład zgodnie z ruchem wskazówek zegara/przeciwnie do ruchu wskazówek zegara.

3

Myślę, że HMM może być używany w obu problemach wymienionych przez @ jens. Pracuję także nad pismem online, a HMM jest używany w wielu artykułach. Najprostsze podejście jest następujące:

  1. Wybierz funkcję.
  2. Jeśli wybrana funkcja jest ciągła, przekonwertuj ją na dyskretną.
  3. Wybierz parametry HMM: topologia i liczba stanów.
  4. Modele pociągu za pomocą HMM. jeden model dla każdej klasy.
  5. Test z użyciem zestawu testów.

dla każdej pozycji:

  1. najprostsza funkcja jest kąt wektora łączącego kolejne punktów. Możesz użyć bardziej skomplikowanych funkcji, takich jak kąty wektorów uzyskane przez Douglasa & Algorytm Peucker.
  2. Najprostszym sposobem na dyskretyzację jest używanie kodów Freemana, ale można również użyć algorytmów klastra, takich jak k-średnie i GMM.
  3. Topologie HMM: Ergodic, Left-Right, Bakis and Linear. # stanów można uzyskać przez błąd próbny &. Parametry HMM mogą być zmienne dla każdego modelu dla . Liczba obserwacji jest określana poprzez dyskretyzację. Próbki obserwacji mogą mieć zmienną długość.
  4. Polecam Kevin Murphy HMM przybornik.
  5. Powodzenia.
Powiązane problemy