Если Вы посмотрите наш предыдущий комментарий, то увидите, что в примере, мы увеличиваем выборку всего на 20% при добавлении всех типов искажений. 400 — кратного увеличения выборки никто применять не призывает. Отличие нашего метода от описанного Вами второго подхода лишь в том, что мы осуществляем предварительную аугментацию данных. Это позволяет оптимизировать проведение несколько одновременных экспериментов по обучению сетей и эффективно использовать аппаратные ресурсы. К тому же мы не разу не говорили о применении случайных преобразований при создании данных. Применение случайных искажений, а в особенности их комбинаций, сильно усложняет задачу обучения нейронной сети и далеко не всегда приводит к уменьшению ошибки на тестовой выборке.
1. Вы правы.
2. Нам не ясно, что значит «неправильно», и какой эксперимент это показывает. Вычислительные мощности, очевидно, не зависят от порядка применения операций (далее вы сами, противореча себе, написали "… и по времени то же самое"). Размер профита в нашем случае опубликован, статья ровно об этом. Какая цифра вам показалась слишком маленькой? Заранее сделать аугментацию, как мы предлагаем, это (-) потратить много места на диске, (+) получить возможность архивирования удачного варианта раздутия, (+) возможность передать выборку согласно договору, не раскрывая алгоритмов ее создания. Но наша статья — не об этом, а о «профите» от собственно аугментации, вне зависимости от того, на каком этапе она производится.
3. Насколько нам подсказали наши эксперты, большинство победителей (если не все из них) последних лет на MNIST-e использовали раздутие обучающей выборки. Что бы нового мы могли сообщить об этом? В данной публикации мы не предлагаем никакого распознающего алгоритма, мы сосредоточены на выборке. И аугментация, конечно же, известный подход. Нашей целью было показать, насколько хорошо или плохо он работает. При этом раздутие на рукописных символах, очевидно, иное, чем на печатных. Для ниста обычно используются деформации сглаженным случайным полем смещений.
4. Нам тоже интересно, но, к сожалению, мы не являемся специалистами в этой области.
Подобные методы построения обучающей выборки действительно могут улучшать финальное качество распознавания. Если интересна данная тематика, можем написать про это еще статью.
А, идея ясна. Да, это действительно быстро, но на классе изображений и документов, которые хорошо поддаются бинаризации. Должны быть видны все 4 стороны и не должно быть полос внутри, иначе фейл. Неплохо подходит к съемке чего-либо формата А4 на столе, а розовые права в руках или всевозможные карточки/визитки (прозрачные, полосатые, серые в ёлочку) с бинаризацией не дружат.
Если вопрос только в скорости работы схемы перебора, то вы меня немного удивили.
Куча линий состоит из 12 штук — по 3 кандидата для каждой стороны (да, это не указано в статье, но не выписывать же сюда всю конфигурацию?), т.е. 81 возможный четырёхугольник. Почти все операции по анализу углов и начислению штрафов — это O(1), кроме штрафов за вылезание — они О(n), где n — число пикселей за точкой пересечения, которые мы примем во внимание, а не длина картинки или даже региона.
Собственно, выкладка по времени в конце статьи говорит о том, что это далеко не самая затратная часть алгоритма.
К вашему варианту — мне не вполне понятны первые два шага.
К чему применять порог и что вы понимаете под отсечением цельных краёв?
Такую задачу можно решить одним циклом с std::next_permutation(...) и простой проверкой правильности ответа.
Приведите, пожалуйста, пример задачи (подозреваю, что она будет довольно «промышленной»), которую действительно есть смысл решать с помощью монад на С++, причем без сильного оверхеда. Еще лучше, если у вас уже был такой опыт.
Нашу демо-программу можно скачать в App Store и Google Play. Информация по лицензированию и цене пока что предоставляется по запросу. Если у вас есть вопросы, мы с удовольствием на них ответим, наш адрес указан на сайте.
Не совсем так — в данном случае мы заранее знаем, что перед нами паспорт, но хотим понять, есть ли на нем голографический узор (где именно он находится мы тоже хотим понять, но про это мы напишем в одной из следующих статей). Дело в том, что до сих пор широко распространены паспорта старого образца, в которых голографический узор отсутствует.
Каждая квадратная точка — это один пиксель. Такая решетка из пикселей получается по той же причине, что и в одномерном случае — спектр гауссианы умножается на спектр периодической решетки (который, как мы показали, также является периодической решеткой), с которой она свернута.
Под полученными периодическими элементами имелись в виду случайные контрастные фоновые элементы, которые, при повторении, могут в Фурье-спектре внезапно выглядеть, как требуемые периодические. Хотя, при должном рассмотрении, эта ситуация должна решаться.
Добить нулями с изменением модели изображения можно, но анализ станет значительно сложнее, поскольку к простому произведению спектров добавится свертка со сложным спектром, который совсем не похож на решетку из пиков.
Спасибо за ценное замечание! Действительно, если число периодов не целое, но хотя бы один период присутствует, то можно продолжить картинку до целого числа периодов и свести задачу к описанной.
С другой стороны, появляется риск получить периодические элементы там, где их изначально не было, а также возможны небольшие проблемы со «стыковкой» периодических элементов шаблона.
В данный момент для нас основным приоритетом является система распознавания паспортов РФ, поэтому первоначальное тестирование проводилось именно на паспортах. Метод должен работать и для других типов документов с периодическими шаблонами.
Методы обработки изображений, которые использовали наши стажеры, уже были реализованы в нашей бибилиотеке обработки изображений, которая оптимизирована под ARM архитектуру. Использовать огромный и не очень быстрый на мобильниках Tesseract, когда у нас есть свои наработки, которые отлично решают задачи распознавания, видится лишенным смысла.
УЭК будем распознавать. Насчет паспортов и ID карт других стран — ведем работы, самое сложное это найти массивы для обучения, настройки и отладки — персональные данные. Нюансов, конечно, множество, но это и интересно. Фрагментация по процессорам и камерам требует внимания и если его прикладывать, то в конечном итоге, качество только растет.
Такой сервис, в случае обеспечения безопасности и хорошего уровня QoS, был бы весьма полезен. Логично, чтобы он был услугой предоставляемой государством.
В данный момент опубликована сборка под ARM, требования: наличие автофокуса. С Dell Venue будем разбираться, если не сложно уточните модель и версию операционной системы.
2. Нам не ясно, что значит «неправильно», и какой эксперимент это показывает. Вычислительные мощности, очевидно, не зависят от порядка применения операций (далее вы сами, противореча себе, написали "… и по времени то же самое"). Размер профита в нашем случае опубликован, статья ровно об этом. Какая цифра вам показалась слишком маленькой? Заранее сделать аугментацию, как мы предлагаем, это (-) потратить много места на диске, (+) получить возможность архивирования удачного варианта раздутия, (+) возможность передать выборку согласно договору, не раскрывая алгоритмов ее создания. Но наша статья — не об этом, а о «профите» от собственно аугментации, вне зависимости от того, на каком этапе она производится.
3. Насколько нам подсказали наши эксперты, большинство победителей (если не все из них) последних лет на MNIST-e использовали раздутие обучающей выборки. Что бы нового мы могли сообщить об этом? В данной публикации мы не предлагаем никакого распознающего алгоритма, мы сосредоточены на выборке. И аугментация, конечно же, известный подход. Нашей целью было показать, насколько хорошо или плохо он работает. При этом раздутие на рукописных символах, очевидно, иное, чем на печатных. Для ниста обычно используются деформации сглаженным случайным полем смещений.
4. Нам тоже интересно, но, к сожалению, мы не являемся специалистами в этой области.
серые в ёлочку) с бинаризацией не дружат.Куча линий состоит из 12 штук — по 3 кандидата для каждой стороны (да, это не указано в статье, но не выписывать же сюда всю конфигурацию?), т.е. 81 возможный четырёхугольник. Почти все операции по анализу углов и начислению штрафов — это O(1), кроме штрафов за вылезание — они О(n), где n — число пикселей за точкой пересечения, которые мы примем во внимание, а не длина картинки или даже региона.
Собственно, выкладка по времени в конце статьи говорит о том, что это далеко не самая затратная часть алгоритма.
К вашему варианту — мне не вполне понятны первые два шага.
К чему применять порог и что вы понимаете под отсечением цельных краёв?
Приведите, пожалуйста, пример задачи (подозреваю, что она будет довольно «промышленной»), которую действительно есть смысл решать с помощью монад на С++, причем без сильного оверхеда. Еще лучше, если у вас уже был такой опыт.
Добить нулями с изменением модели изображения можно, но анализ станет значительно сложнее, поскольку к простому произведению спектров добавится свертка со сложным спектром, который совсем не похож на решетку из пиков.
С другой стороны, появляется риск получить периодические элементы там, где их изначально не было, а также возможны небольшие проблемы со «стыковкой» периодических элементов шаблона.