Алгоритм K-NN реализует видеораспознавание рукописных цифр (python)

Python
Алгоритм K-NN реализует видеораспознавание рукописных цифр (python)

стартерНаггетс.Талант/пост/692391…, воспроизводится и указывается источник

1. гитхаб

GitHub.com/king и OO Wei/…

Прямо к делу, помнитезвездаАх!

Во-вторых, окончательные рендеры

最终效果图

3. Идеи дизайна

Среда программирования — python3.7.7, а компилятор использует pycharm2019.3.4 x64. Программа включает камеру компьютера, считывает видеокадр, выполняет бинаризацию каждого кадра изображения, получает область соединения и выбирает соответствующую область соединения, устанавливая минимальную высоту и диапазон соотношений сторон минимального вписанного прямоугольника соединенного изображения. Находятся рукописные цифры, затем алгоритм k-NN используется для классификации и распознавания рукописных цифр, а результаты распознавания отображаются на видео в режиме реального времени.

рукописные цифры

  • закрыть операцию

Прежде чем найти рукописные цифры, сначала следует закрыть связанную область. Иногда свет слишком сильный, а штрихи слишком тонкие, что может привести к разрыву рукописных цифровых штрихов в видеокадре. Закрытие связанной области может соединить пробелы.

Операция закрытия делает контур более гладким и часто используется для закрытия узких разрывов и длинных тонких зазоров, устранения небольших пустот и заполнения разрывов контуров. Операция закрытия множества A с использованием структурирующего элемента B состоит в том, чтобы расширить A с помощью B, а затем размыть результат с помощью B. Формула выглядит следующим образом:

AB=(AB)BA \cdot B = (A \oplus B) \ominus B

  • должность

Путем установки минимальной высоты и диапазона соотношения сторон минимального вписанного прямоугольника связанной области соответствующая связанная область отсеивается, чтобы завершить позиционирование рукописных цифр. Элементы должны иметь минимальную высоту 60 пикселей и соотношение сторон менее 1.

Описание функции

Настройте бинарное изображение минимального положительного прямоугольника связанной области после позиционирования на бинарное изображение 32*32 пикселей и считывайте значения пикселей построчно, чтобы получить 1024-мерный вектор, который используется в качестве признака рукописные цифры.

Поскольку рукописные цифры обучающих выборок наклонены под разными углами и градусами, обучающие выборки также корректируются по наклону перед извлечением и описанием признаков.

k-NN алгоритм

В области распознавания образов алгоритм k-NN представляет собой непараметрический статистический метод классификации и регрессии. В алгоритме классификации k-NN входные данные содержат обучающие выборки из k ближайших пространственных признаков, а выходные данные представляют собой таксономическую совокупность. Классификация объекта определяется классом, в котором его соседи составляют большинство, а k — целое положительное число, обычно нечетное. Наибольшая классификационная категория из k выборок ближайших соседей определяет категорию, присвоенную объекту, еслиk=1k = 1, класс объекта напрямую назначается ближайшим узлом.

Алгоритм k-NN — один из самых простых из всех алгоритмов машинного обучения. К ближайшим соседям относятся все объекты, которые были правильно классифицированы.Хотя никаких явных шагов обучения не требуется, это также можно рассматривать как набор обучающей выборки для этого алгоритма. Обучающие выборки представляют собой векторы многомерного пространства признаков, где каждая обучающая выборка имеет метку класса. Фаза обучения алгоритма состоит только из сохраненных векторов признаков и меток обучающих выборок. Недостатком алгоритма k-NN является то, что он очень чувствителен к локальной структуре данных.

На этапе классификации k — константа, выбранная в элементеk=7k = 7.

В общем случае в качестве метрики расстояния можно использовать евклидово расстояние. В евклидовом пространстве точкаx=(x1,x2,...,xn)x = (x_1,x_2,...,x_n)и точкаy=(y1,y2,...,yn)y = (y_1,y_2,...,y_n)Евклидово расстояние между

d(x,y)=(x1y1)2+(x2y2)2+...+(xnyn)2d(x,y) = \sqrt{(x_1-y_1)^2+(x_2-y_2)^2+...+(x_n-y_n)^2}

Классификация алгоритма k-NN будет иметь дефекты, когда распределение категорий неравномерно, то есть выборки с более частыми встречами будут влиять на результаты прогнозирования тестовых выборок. Потому что категории с большим количеством выборок с большей вероятностью появятся в окрестности K контрольной точки, а атрибуты контрольной точки рассчитываются на основе выборок в окрестности k. Одним из способов устранения этого недостатка является учет расстояния выборки до k ближайших соседей при выполнении классификации. Классификация каждого из k-ближайших соседей умножается на вес, обратно пропорциональный расстоянию между контрольными точками.

4. Улучшения и результаты

改进前效果图

Картина эффекта до улучшения такая же, как указано выше, уровень точности очень общий, причины могут быть следующими:

  • Алгоритм k-NN использует несколько обучающих выборок, и для каждого числа имеется только 10 обучающих выборок;

  • Нет единого стандарта рукописных цифр, что увеличивает сложность;

  • Выбранный метод описания признаков нуждается в доработке.Используется метод, упомянутый в курсе распознавания образов.Цифровое изображение подстраивается под бинарное изображение 32*32 пикселей, значения пикселей считываются построчно для получения 1024-мерный вектор. Этот метод описания недостаточно интуитивен и требует относительно высоких требований к написанию.Если в качестве признаков используются тренды штрихов, конечные точки и т. д., эффект может быть лучше;

  • У самого алгоритма k-NN есть недостатки, он использует классификацию 7 обучающих выборок с ближайшим расстоянием признаков в качестве основы классификации, он не только отбрасывает оставшиеся выборки, но и считает эти 7 выборок одинаково важными, и использует число в качестве основы классификации очень разумно. Усовершенствованный метод может увеличить вес, использовать обратное значение расстояния в качестве веса или заменить другие алгоритмы классификации.

По второй причине обучающие выборки заменяются образцами с более стандартизированным написанием, и итоговый эффект распознавания заключается в следующем: видно, что способность к распознаванию улучшилась, но и требования к написанию спецификаций также улучшились.

最终效果图

5. Ссылка

OpenCV+python вызывает камеру

Бинаризация изображений OpenCV-Python

python рисует наименьший описанный прямоугольник и его центральную точку

Python + OpenCV открывает и закрывает операцию

python настроить размер изображения

Обрезка изображения Python cv2

Python OpenCV получить пиксели изображения

Распознавание рукописных цифр на основе Python (алгоритм KNN)

Сохранение и чтение данных Python numpy

Python проверяет, существует ли файл

число Python в строку