Палочка: Обучение азубуке

Sep 05, 2014 23:52

Основным в задаче распознавания чар был выбор метрики: есть две кривых, заданных последовательностью точек, надо определить, насколько они похожи. В кривых разное количество точек и расположены они с разной плотностью. К счастью, масштаб и положение корректировать не нужно: у первой точки азимут всегда равен нулю, а угол места, и разброс по координатам является значимой величиной.
После ряда экспериментов, выбрал следующий алгоритм:
-определяется длина ломаной.
-эта длина делится на N частей, получаем будущее расстояние между точками.
-движемся вдоль ломаной, расставляя точки, через это самое определенное расстояние.
Таким образом, получаем фиксированное число точек, не зависящее от исходного количества и плотности (сейчас N выбрано равным 32). Расстояние между точкам в, действительности, не совсем одинаковое (чем острее углы, тем меньше будет расстояние между точками, лежащими по разные стороны от вершины), на такой метод намного быстрее постронения системы из по-настоящему равных отрезков.
Далее, в рамках обучающей выборки для каждой буквы определяется, в какой области может лежать её первая, вторая.. N-ная точка. В итоге каждая область характеризуется координатами центра и радиусом. Буква считается опознанной, есть все её точки лежат в нужных областях (расстояние от центра меньше чем радиус+допуск). В целом этот подход близок к тому, что применялся в перчатке: там на жест была одна 18-мерная сфера, здесь - 32 двумерных :)
теперь надо составить хороший базис (тот который у меня есть сейчас немного кривоват, не все буквы повторяются легко), после чего можно будет в полуавтоматическом режиме пособирать статистику по разным людям и уточнить этот самый базис. К слову, есть очень большое желание, особенно на начальном этапе, обучать не всему алфавиту, а какому-нибудь сокращенному набору. Но какие у меня буквы любимые, я пока не решил. :) Точно буду отказываться от I и J, их слишком легко спутать со случайным движением.

Заодно перешел от консольного интерфейса к графическому:



Красный контур - получен в процессе обучения, черный - это то, что я нарисовал,
[u's'] - сообщение о распознавании как буквы s и результат фотомонтажа: строчка появляется после того, как исчезает нарисованный контур :) но он честно распознался :)

PS: за кадром остаются увлекательные истории борьбы с потоками в питоне и буффером последовательного порта :)

Палочка, Камилл, Исследования

Previous post Next post
Up