Приводим полную версию Хабра-материала, автором которого выступил бегун по граблям разработчик отдела R&D компании «Биорг»Альберт Степанян.

У всех на слуху библейское изречение «отделять зерна от плевел» и его грубый аналог «отделять мух от котлет». В обычной жизни мы также сталкиваемся с необходимостью разделять схожие предметы. В машинном обучении задача разделить объекты по определенным классам, например, «зерна» и «плевелы», называется классификация. Классификация лежит в основе современных технологий искусственного интеллекта и играет ключевую роль в машинном обучении.
Перед коллективом была поставлена задача решить проблему классификации изображений документов.
Надо было добиться высоких значений метрик в разделении документов на 12 классов, таких как:

Поход по граблям в поисках оптимального решения начался с метода классификации распознанного текста, но этот подход оказался медленным и неэффективным. Затем мы перепробовали различные методы извлечения признаков из изображений, чтобы добиться лучших результатов.
В классическом подходе правильный выбор признаков, на основе которых строится модель — ключевой фактор успеха в ML. А в нейросетевом подходе — выбор архитектуры.
Но что делать, если ни один из выбранных признаков не дает заметного преимущества? В таких случаях на помощь приходит идея объединить различные признаки — конкатенация, которая позволяет совместить разные типы информации и повысить эффективность обучения.
В нашей работе мы использовали линейный классификатор на основе объединения классических признаков с нейросетевыми признаками.
В качестве классических признаков была выбрана пространственная пирамида (Spatial pyramid pooling), где в каждой ячейке пирамиды вычисляется сумка визуальных слов (Bag Of Visual Words).

В качестве нейросетевых признаков использовали признаки с предпоследнего слоя сети ResNet-50, предобученной на датасете ImageNet.

Особо стоит отметить процесс сбора обучающей и тестовой выборок. Т.к. на проекте данные поступают в режиме реального времени и нет уверенности в стационарности распределения, необходимо было убедиться, что модель, обученная на исторических данных, сможет корректно работать на примерах из будущего. Поэтому в качестве тестовой выборки мы взяли данные за предыдущий 15-ти дневный период, а в обучающий датасет набирали данные за более старый период времени.
Несмотря на несбалансированность классов в тестовом датасете, удалось достичь высоких результатов — взвешенный F1-скор составил 0.99.

В боевом режиме на проде допускается часть документов отправлять на ручную сортировку оператором. Поэтому было выбрано решение документы, которым классификатор дал низкую уверенность, отправлять в специальный класс Unknown.ч

Одним из ключевых требований была быстрая работа модели на CPU. В ходе эксперимента выяснили, что время инференса, осуществляемого фреймворком PyTorch, не соответствует требованиям. Поэтому приняли решение сконвертировать обученную модель в формат OpenVINO.

В результате мы успешно решили задачу классификации предоставленных документов, которая полностью соответствовала целевым показателям (SLA) по времени обработки и качеству классификации.
Мы считаем, что наш подход получился достаточно универсальным благодаря сочетанию большого количества признаков и комбинации нейросетевых методов с классическими.
Ожидаем, что его можно будет успешно применить и к другим наборам данных.
Читать статью на Хабре.
###
Работаем только с юридическими лицами
Работаем только с юридическими лицами.
Работаем только с юридическими лицами.
Ошибка: Контактная форма не найдена.
Ошибка: Контактная форма не найдена.