Обновить
32K+
85

Пользователь

51,8
Рейтинг
183
Подписчики
Отправить сообщение
Пример для Intel c SSE4 был тут, для AVX-512 VNNI все еще проще, потому что это расширение специально под нейронные сети. Можно оценить и сложность на элемент матрицы, и прикинуть время, это не выглядит сложной задачей. В первую очередь мы хотели показать, как привычные методы могут повести себя на конкретном не слишком обычном вычислителе, и насколько важно задуматься об архитектуре процессора перед оптимизацией.
Да, для умножения канал не блокируется, и результаты можно получать на каждом такте, но с задержкой в 4 такта.
Основная фишка нашего продукта заключается в том, что мы выполняем все вычисления непосредственно на устройстве (без использования внешних высокопроизводительных серверов), быстро и точно.
Мы купили его непосредственно у производителя.
В предложенном подходе первый (опорный) кадр проективно не выпрямлялся.
В задаче распознавания паспорта РФ использование EML и интринсиков (для реализации функций, которых пока нет в EML) ускоряет вычисления где-то в 2 раза на Эльбрус-401PC. Сейчас научная статья, включающая эти результаты, находится в печати.
По первому замечанию: Вам действительно интересен код, замусоренный обработкой «хвостика» массива? На производительность это не влияет. Код — элементарный. А тема поста — производительность. Маловероятно, что среди читателей есть разработчики на Эльбрусе, мечтающие именно о 16-битном сложении и надеющиеся на готовую копипасту. Поэтому мы выкинули то, что ухудшило бы подачу материала. Напротив, невыровненность начала массива — это ключевая проблема. Отдельной обработкой «начала» она не лечится. Что же касается второго замечания, то, простите, не ясно, что именно вызывает раздражение. Не уточните?
Спасибо, исправили. По ошибке скопипастили при выкладывании.
Спасибо за поздравления)
Вопрос аугментации на GPU обычно рассматривается, когда процесс обучения сетей замедляется из-за недостаточной скорости подготовки данных на лету. Как раз обрезка, поворот, сдвиги, простые яркостные искажения делаются достаточно быстро и на CPU, а вот например маштабирование и проективные искажения иногда переносим на вторую GPU для ускорения раздутия данных.
Очень рады, что Вам понравилось)
Кроме Отцу и Ниблэка мы так же пробовали алгоритмы Nicholas R. Howe Binarization и Sauvola binarization
Скорость работы алгоритма во многом зависит от целого ряда факторов и здесь можно дать несколько ответов.
Например при среднем соотношении скорость — качество (за счёт частоты нарезки окон, определённая нейронная сеть и т.д.) скорость бинаризации одного изображения составляет около 5 секунд при использованни GPU Titan X.
При необходимости повысить качество — время работы возрастает в десятки раз из-за многократного применения сети / сетей.
При необходимости повысить скорость (или впихнуть этого U-net крокодила на мобильник) можно использовать например многопроходную схему:
На первом этапе можно применить несетевой метод бинаризации.
На втором этапе применить сетевой метод только к тем окнам, где возможно находится текст (результат работы 1-го этапа)
На третьем этапе применить U-net сеть для уточния работы алгоритма на 2ом этапе.
Благодаря подобному подходу возможно многократное ускорение алгоритма бинаризации с помощью сетей.
Мы используем и библиотеку EML, и специальный набор интринсиков от производителя.
Планов пока нет, но и проблем с этим мы не видим, тем более потому, что Go поддерживается SWIG-ом. Будет заказчик, который попросит Go — будет и поддержка Go. :)
Работа с данными в большей степени происходит на cpu. Именно поэтому, при большом числе раздутий, применяемых к данным, подающимся на обучение нейронной сети, может возникать ситуация, когда предыдущий минибатч уже использовался в обучении, а новый ещё не готов. В такой ситуации gpu простаивает, сетка не учится, время обучения сети увеличивается.
Это во многом зависит от разных факторов: каким образом менять скорость обучения, какие раздутия применять, как часто проверять качество на валидационной выборке и т.д. Под конец соревнования на одном Titan X, со всеми раздутиями и без отписывания результатов на валидационной выборке по мере обучения сети время обучения составляло ~ 12 часов. Вечером поставил учиться, утром пришёл и смотришь чему научилась сетка.
Организаторы соревнования вместе с оригинальной статьей планировали выложить ещё и некоторые решения, насколько я знаю. Думаю, что можно будет взять оттуда и от души наиграться =)

Сетка полностью убрала рамку, поскольку рамка мало похожа на рукопись или печатный текст =). Есть некоторые артефакты при бинаризации 7-ки в «2017» на второй строке — но они есть и в оригинальном изображнении.
По методу Виолы и Джонса детектор (классификатор) представляется в виде каскада сильных классификаторов. Каждый сильный классификатор состоит из слабых классификаторов. Каждый слабый классификатор базируется на одной фиче. Сильный классификатор — линейная комбинация слабых классификаторов, то есть при вычислении сильного классификатора порядок фич не важен.
Нюансы есть во всех архитектурах и их реализациях, Эльбрус не исключение, а так это нормальная работа. Пока главная проблема в том, что мало кто этим занимается и нет публичных ресурсов где можно спросить совета или обменяться знаниями — нужно общаться напрямую с разработчиком, что радует в этом проблем у нас нет. Правда у нас есть бонус — мы расположены рядом с МЦСТ и всегда можем сходить пообщаться.

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность