6

Я тестирую печатные цифры (0-9) на сверточной нейронной сети. Это дает 99% -ную точность в наборе данных MNIST, но когда я попробовал его с помощью шрифтов, установленных на компьютере (Ariel, Calibri, Cambria, Cambria math, Times New Roman) и обучил изображения, созданные шрифтами (104 изображения на шрифт (Total 25 шрифтов -.? 4 изображений на шрифт (немного разница)) частота ошибок обучения не опускается ниже 80%, то есть точность 20% почемуРаспознавание цифр на CNN

Вот образец "2" номер изображения -

"2" Number Images

Я изменил размер каждого изображения 28 x 28.

Подробнее: -

Данные для обучения размером 28 x 28 изображений. параметры сети - Как LeNet5 Архитектура сети -

Input Layer -28x28 
| Convolutional Layer - (Relu Activation); 
| Pooling Layer - (Tanh Activation) 
| Convolutional Layer - (Relu Activation) 
| Local Layer(120 neurons) - (Relu) 
| Fully Connected (Softmax Activation, 10 outputs) 

Это работает, давая точность 99 +% на MNIST. Почему так плохо с компьютерными шрифтами? CNN может обрабатывать множество вариаций в данных.

+0

Какая полная топология вы используете? Это оригинальный LeNet5, или вы изменили какой-либо скрытый слой? Если вы тренируете новую модель с нуля, переобучение должно выглядеть как еще 99% успеха; ваши 20% предлагают совершенно другую проблему. – Prune

+0

Да, это оригинальный LeNet5, Слои, как упоминалось выше, он работает с набором данных MNIST, но не с моим набором данных. Размер моего набора данных - 1036 изображений, 104 на число. – kumar030

ответ

0

Это может быть проблема переобучения. Это может произойти, когда ваша сеть слишком сложна для решения проблемы. Проверьте эту статью: http://es.mathworks.com/help/nnet/ug/improve-neural-network-generalization-and-avoid-overfitting.html

+0

следует удалить слои из сети, любые предложения, которые вы можете предоставить. – kumar030

+0

Я не очень falimiar с CNN, но я думаю, у вас может быть слишком много скрытых слоев. Возможно, это будет полезно для вас: http://cs231n.github.io/neural-networks-1/#arch << ... кажется, что меньшие нейронные сети могут быть предпочтительнее, если данные не являются достаточно сложными, чтобы предотвратить overfitting. >> –

+0

Сколько эпох вы тренируете в своей сети? Каков размер вашего набора данных? –

0

Это определенно похоже на проблему переобучения. Я вижу, что у вас есть два слоя свертки, два максимальных слоя объединения и два полностью подключенных. Но сколько всего веса? У вас всего 96 примеров для каждого класса, что, безусловно, меньше, чем количество весов, которые у вас есть в вашем CNN. Помните, что вы хотите, по крайней мере, в 5 раз больше случаев в вашем наборе тренировок, чем веса вашего CNN.

У вас есть два решения для улучшения CNN:

  • Встряхните каждый экземпляр в обучающем наборе. Вы каждый номер около 1 пикселя. Он уже умножит ваш набор тренировок на 9.
  • Используйте слой трансформатора. Он будет добавлять упругую деформацию к каждому числу в каждую эпоху. Это значительно укрепит обучение, искусственно увеличив ваш набор тренировок. Более того, это сделает его намного более эффективным для прогнозирования других шрифтов.
2

Я вижу две возможные проблемы:

Препроцессирование: MNIST не только 28px х 28px, но также:

оригинальный черно-белый (двухуровневое) изображения из NIST были размер нормализованный для установки в ящик размером 20 × 20 пикселей при сохранении их соотношения сторон. Полученные изображения содержат уровни серого в результате метода сглаживания, используемого алгоритмом нормализации. изображения были центрированы в изображении 28х28 путем вычисления центра масс пикселей и перевода изображения, чтобы расположить эту точку в центре поля 28х28.

Источник: MNIST website

переобучения:

  • MNIST имеет 60000 примеров обучения и 10000 примеров испытаний. Сколько у тебя?
  • Вы попробовали отсева (см. paper)?
  • Вы пытались использовать методы увеличения набора данных? (например, слегка смещая изображение, возможно, немного изменив соотношение сторон, вы также можете добавить шум - однако, я не думаю, что это поможет)
  • Вы пытались использовать более мелкие сети? (И насколько велики ваши фильтры/сколько фильтров у вас есть?)

Замечания

Интересная идея! Попробовали ли вы просто применить к вашим данным подготовленную сеть MNIST? Каковы результаты?

+1

Хорошие очки. Только для добавления другого варианта можно также рассмотреть возможность стандартизации партии (https://arxiv.org/abs/1502.03167). –

Смежные вопросы