O>для обучения нейросети для распознавания рукописных цифр O>нужно много картинок каждой цифры. O>Если я хочу, чтобы цифра распознавалась повернутой на 90 градусов, O>то нужны соответствующие картинки при обучении.
Обычно берут большой базовый набор примеров и к каждому много раз
применяют аугментацию — случайные вращения, масштабирования и т.п.
Вращения делают небольшими (например, от -30 до +30 градусов), но если требуется
распознавать повёрнутые/перевёрнутые цифры, то можно:
1) либо убрать это ограничение на угол (тогда сеть обучится распознавать цифры с любым
поворотом, но за счёт некоторой потери в качестве — те же 6 и 9 будут путаться)
2) либо при распознавании предлагать сети 4 варианта поворота картинки и выбирать
по максимуму уверенности в ответе.
O>Принцип работы, если я правильно понимаю такой, что O>в слоях сети подбираются коэффициенты, удовлетворяющие выборке обучения. O>Т.е. как бы градиентый спуск?
Да, минимизируется функция ошибки.
O>Только непонятно как быть, если надо научиться распознавать цифры на больших картинках, O>где цифра может быть под любым углом и с любыми геометрическими искажениями (в пределах распознавания чечловеком). O>Надо для обучения цифры под каждым углом подавать?
Про углы поворота — см. выше.
Если же нужно на большой картинке найти маленькие цифры — это отдельная подзадача, обычно называемая "Object detection".
O>И как входы маппить, если для одной цифры при обучении подаем десятки пикселов, O>а искать надо в большой картинке на тысячи пикселов?
Каждая нейросеть имеет фиксированное число входов, т.е. размер входных картинок жёстко зашит. Обычно размер зависит
от формата обучающей выборки — например, для набора MNIST (рукописные цифры) все картинки имеют размер 28x28 пикселей.
Соответственно, если входное изображение имеет другое разрешение, необходимо будет сделать resize.