Le problème est un peu différent de la reconnaissance traditionnelle de l'écriture manuscrite. J'ai un ensemble de données qui sont des milliers de ce qui suit. Pour un caractère tiré, j'ai plusieurs coordonnées (x, y)
séquentielles où le stylo a été enfoncé. Donc, c'est un problème séquentiel (temporel). Je veux être capable de classer les caractères manuscrits sur la base de ces données, et j'aimerais mettre en œuvre des HMM à des fins d'apprentissage. Mais, est-ce la bonne approche? Comment peuvent-ils être utilisés pour faire cela?Comment les HMM peuvent-ils être utilisés pour la reconnaissance de l'écriture manuscrite?
Répondre
Ce problème est en fait un mélange de deux problèmes:
- reconnaître un caractère de vos données
- reconnaissant un mot d'une séquence (bruyante) des caractères
Un HMM est utilisé pour trouver la séquence la plus probable d'un nombre fini d'états discrets à partir de mesures bruitées. C'est exactement le problème 2, puisque les mesures bruitées des états discrets a-z, 0-9 se suivent dans une séquence.
Pour le problème 1, un HMM est inutile car la séquence sous-jacente ne vous intéresse pas. Ce que vous voulez, c'est augmenter votre chiffre manuscrit avec des informations sur la façon dont vous l'avez écrit.
Personnellement, je commencerais par implémenter une reconnaissance d'écriture manuscrite de pointe qui est déjà très bonne (avec les réseaux de neurones convolutionnels ou l'apprentissage en profondeur). Après cela, vous pouvez ajouter des informations sur la façon dont il a été écrit, par exemple dans le sens horaire ou antihoraire.
Je pense que HMM peut être utilisé dans les deux problèmes mentionnés par @jens. Je travaille aussi sur l'écriture en ligne, et HMM est utilisé dans de nombreux articles. L'approche la plus simple est la suivante:
- Sélectionnez une caractéristique.
- Si la caractéristique sélectionnée est continue, la convertir en discrète.
- Choisissez les paramètres HMM: Topologie et Nombre d'états.
- Dessinez des modèles de caractères à l'aide de HMM. un modèle pour chaque classe.
- Test utilisant un ensemble de test.
pour chaque élément:
- le plus simple est caractéristique angle de vecteur qui relie consécutifs points. Vous pouvez utiliser des fonctions plus compliquées comme les angles des vecteurs obtenus par Douglas & algorithme Peucker.
- la méthode la plus simple pour la discrétisation est l'utilisation de codes Freeman, mais des algorithmes de regroupement comme k-means et GMM peuvent également être utilisés.
- Topologies HMM: Ergodique, gauche-droite, Bakis et linéaire. Le nombre d'états peut être obtenu par l'erreur d'essai &. Les paramètres HMM peuvent être variables pour chaque modèle. Le nombre d'observations est déterminé par discrétisation. Les échantillons d'observation peuvent avoir une longueur variable.
- Je recommande la boîte à outils Kevin Murphy HMM.
- Bonne chance.
- 1. Reconnaissance numérique/numérique manuscrite
- 2. Logiciel de reconnaissance d'écriture manuscrite Python?
- 3. iOS: comment implémenter la reconnaissance de l'écriture manuscrite?
- 4. Reconnaissance de l'écriture manuscrite sur tablette Android
- 5. Reconnaissance de l'écriture manuscrite dans Silverlight
- 6. Implémentation ANN avec Python OpenCV pour la reconnaissance de l'écriture manuscrite
- 7. Comment les applications de reconnaissance d'écriture manuscrite pour iOS reconnaissent-elles mon écriture?
- 8. Reconnaissance de l'écriture manuscrite Kana (pas kanji) dans iOS
- 9. Où puis-je trouver un moteur gratuit de reconnaissance manuscrite chinoise pour Android/iPhone?
- 10. Extraction de fonction dans la reconnaissance de mouvement 3D pour HMM avec données Kinect
- 11. Reconnaissance manuscrite des caractères à l'aide d'un réseau de neurones
- 12. Comment redimensionner la normalisation de l'image lors de la reconnaissance de l'écriture manuscrite?
- 13. Application de reconnaissance d'écriture manuscrite hors ligne grâce à la correspondance de formes dans Android
- 14. Comment implémenter la fonction de reconnaissance d'écriture manuscrite dans une application iPhone?
- 15. Est-ce que PyQt5/pyqt4 prend déjà en charge QtVirtualKeyboard avec la reconnaissance de l'écriture manuscrite?
- 16. Quelle est la meilleure façon d'avoir un système de reconnaissance d'écriture manuscrite connecté?
- 17. Existe-t-il une bibliothèque de reconnaissance d'écriture manuscrite pour IOS?
- 18. Mallet HMM Problèmes de formation
- 19. Est-il possible d'utiliser Windows Ink (reconnaissance d'écriture manuscrite) pour analyser une image?
- 20. La reconnaissance de l'écriture manuscrite et de l'encre Microsoft est-elle intégrée à tous les déploiements de Windows 7?
- 21. Comment puis-je être Android tesseract Accroître la reconnaissance?
- 22. Algorithme de reconnaissance de l'écriture manuelle
- 23. Comment les composants Flex peuvent-ils être utilisés avec Away3D?
- 24. Comment adapter les données dans HMM sklearn/hmmlearn
- 25. Quels bits de configuration doivent être utilisés pour déboguer PIC16F1947?
- 26. Animation d'écriture manuscrite Iphone
- 27. Théorie de la reconnaissance de gestes Kinect
- 28. Les contrats de code doivent-ils être utilisés pour la sécurité?
- 29. Les modèles Db_Table peuvent-ils être utilisés dans bootstrap?
- 30. reconnaissance vocale pour la recherche des fichiers
C'est une idée vraiment intéressante. Par curiosité, est-ce que la coordonnée temporelle de chaque point est également enregistrée (donc à la milliseconde 1, la coordonnée 30 x 45 a été pressée) ou sont-elles simplement dans l'ordre séquentiel? – Turnsole
Actuellement, il est juste séquentiel. Pensait-il à faire un certain temps de déformation dynamique pour rendre compte des caractères dessinés plus lentement/plus rapidement? – zebra
Je pense que c'est la bonne approche. Vous pourriez commencer, en pratique, à reconnaître l'alphabet [palm graffite] (http://en.wikipedia.org/wiki/Graffiti_%28Palm_OS%29). – Maurits