В эпоху информации и данных возможность извлекать текст из изображений — это технология, которая изменила способ нашего взаимодействия как с физическим, так и с цифровым контентом. Оптическое распознавание символов, широко известное как OCR, — это гениальная технология, которая позволяет машинам расшифровывать и преобразовывать печатный или рукописный текст из различных источников в редактируемый и доступный для поиска цифровой текст. В отрасли существует множество применений OCR. В этом блоге мы узнаем, как обучать и квантовать один из лучших механизмов OCR, доступных в открытом исходном коде.

Введение

Недавно я изучал варианты OCR с открытым исходным кодом для одного из своих личных проектов и благодаря своим рекомендациям наткнулся на модель под названием Parseq. Он основан на преобразователях зрения и использует языковое моделирование для распознавания текста, который трудно распознать только по функциям изображения. Модель имеет архитектуру на основе кодера-декодера с многонаправленным вниманием, что помогает достичь хорошей точности и низких требований к вычислительным ресурсам. Однако при развертывании на мобильных или периферийных устройствах, чем больше мы можем оптимизировать, тем лучше, поскольку эти устройства обычно имеют довольно низкие вычислительные возможности.

Недавно я экспериментировал с Parseq-tiny и обнаружил, что его результат для моего набора данных оказался довольно хорошим. Поэтому я начал искать способ квантования модели, чтобы уменьшить ее размер, а также требования к вычислительным ресурсам, но не смог найти никаких указаний в официальной реализации. Поэтому я решил реализовать то же самое. Я провел определенные эксперименты и нашел правильный рецепт оптимизации модели. После сравнения я обнаружил, что реализация работает хорошо, поэтому я интегрировал ее с форком репо. Мы будем использовать то же самое в последующих разделах и посмотрим, как вы можете использовать то же самое для оптимизации модели для ваших вариантов использования.

Экспериментирование и анализ

Официальная документация Pytorch, а также некоторые исследования рекомендуют использовать динамическое квантование для моделей трансформаторов, поскольку оно определяет значения масштаба и нуля для квантования весов из самих данных вывода, позволяющих определять веса. и активации, подлежащие квантованию на лету, что позволяет сохранить точность. С другой стороны, при статическом квантовании…