1. Машинное обучение
Распознавание рукописных цифр
Бабий А.С. - apratster@gmail.com
2. Задача распознавания.
Уже существует поддержка рукописного ввода
Как это работает?
Почему иногда не срабатывает?
Как обучать готовые программы?
Как научиться самому создавать обучаемые программы?
Машинное обучение. Распознавание рукописных цифр. 2
3. Задача распознавания.
Этапы решения задачи распознавания:
1) Где взять выборки?
Создаем тестовую
2) Размер выборок?
и обучающую выборки
3) Что внутри выборок?
1) Подготовка данных.
Выделяем признаки 2) Как сравнивать объекты?
3) Как искать признаки?
Выделяем классы 1) Как определить качество кластеризации?
2) Когда остановиться
Классифицируем 1)Какой алгоритм классификации выбрать?
Машинное обучение. Распознавание рукописных цифр. 3
4. Задача распознавания.
1. Kaggle – что это? We’re making data science a sport.
2. Как научиться? Где соревноваться? http://www.kaggle.com
Машинное обучение. Распознавание рукописных цифр. 4
5. Задача распознавания
Выборка:
Данные для этой задачи взяты из набора данных MNIST
http://yann.lecun.com/exdb/mnist/
Обучающая выборка - 60000 образцов
таблица с результатами применения методов
+
Ссылки на публикации с описанием методов
Машинное обучение. Распознавание рукописных цифр. 5
6. Предварительная обработка данных
Матрица 28х28, цвет в градации серого от 0 до 255
1) Переходим к черно-белому изображению(адаптивный порог, метод
Оцу[1])
2) Морфологическое преобразование – уменьшаем до толщины 1
пиксела[2].
Машинное обучение. Распознавание рукописных цифр. 6
7. Предварительная обработка данных
Наклон символа – находим эллипс максимально близкий к нашему символу
Есть функция в OpenCV, Matlab b т.п. Используется метод наименьших квадратов
Машинное обучение. Распознавание рукописных цифр. 7
8. Предварительная обработка данных
Число Эйлера
Дополнительные значимые свойства?
1) Симметрия
2) Расположение «центра масс» цифры
Машинное обучение. Распознавание рукописных цифр. 8
9. Предварительная обработка данных
На вход сети подаются такие данные:
1) Данные о пикселах(bw) после обработки 16х16
2) Число Эйлера
3) Треть в которой расположен «центр масс»
Все данные нормализованы!
Машинное обучение. Распознавание рукописных цифр. 9
10. Создание сети
В зависимости от наших предпочтений, можем выбрать
1) Matlab
2) R, Python + libraries
Для Matlab – nftool, довольно все просто понятно, мастер ИНС
Библиотеки для создания ИНС
Fast Artificial Neural Network Library
(FANN)
http://leenissen.dk
Kohonen neural network library
http://knnl.sourceforge.net/
Python! Neurolab
http://code.google.com/p/neurolab/
Машинное обучение. Распознавание рукописных цифр. 10
11. Создание сети
Выбор размера скрытого слоя ИНС
Слишком мало нейронов скрытого слоя – плохо
Слишком много мало нейронов скрытого слоя - плохо
Как подобрать?
Мера Вапника-Червоненкиса
Один из методов редукции сети
Перебор возможных вариантов, ГА
Машинное обучение. Распознавание рукописных цифр. 11
12. Создание сети
Пути улучшения:
Машинное обучение. Распознавание рукописных цифр. 12
13. Выводы
1. Важно определить стойкие признаки
2. Нормализация данных
3. ИНС – не всегда срабатывает лучше других методов!
4. Обучение - долгий процесс
Понимание сути задачи первично для анализа данных
Как автоматически(полуавтоматически) выявлять признаки?
Качество распознавания персептроном - 88%
Машинное обучение. Распознавание рукописных цифр. 13
14. Результаты
Машинное обучение. Распознавание рукописных цифр. 14
15. Результаты
Машинное обучение. Распознавание рукописных цифр. 15
16. Результаты
Машинное обучение. Распознавание рукописных цифр. 16
17. Результаты
Машинное обучение. Распознавание рукописных цифр. 17
19. Источники литературы
1. Otsu, N., "A Threshold Selection Method from Gray-Level Histograms," IEEE Transactions
on Systems, Man, and Cybernetics, Vol. 9, No. 1, 1979, pp. 62-66.
2. Lam, L., Seong-Whan Lee, and Ching Y. Suen, "Thinning Methodologies-A Comprehensive
Survey," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 14, No. 9,
September 1992, page 879, bottom of first column through top of second column.
3. http://leenissen.dk
4. http://knnl.sourceforge.net/
5. http://code.google.com/p/neurolab/