Как ВКонтакте научили нейросеть определять документы
Как ВКонтакте научили нейросеть определять документы

Этим летом ВКонтакте научили нейронную сеть определять, есть ли на изображении документ, и если да — то какой именно. В этой статье программист-разработчик популярного сервиса соц.сети ВКонтакте Aleksei Samarin делится опытом, как удалось автоматизировать большую часть работы по определению документов по скану или фоторгафии и разгрузить сотрудников, ранее занимавшихся этой задачей в ручном режиме просмотра того, что загружают пользователи.



Для чего понадобилось определять, есть ли на изображении документ, и если да — то какой именно

Чтобы разгрузить сотрудников и обезопасить людей от злоумышленников. ВКонтакте применило новую нейросеть в двух сферах: когда пользователь восстанавливает доступ к странице и для скрытия личных документов из общего поиска.

Восстановление доступа к страницам.

Фотографии документов помогают вернуть аккаунты ВКонтакте их настоящим владельцам. Например, пользователь мог потерять доступ к своему номеру телефона или же на странице подключена двухэтапная аутентификация, а возможности получить одноразовый код для подтверждения входа уже нет. Новая разработка ускоряет рассмотрение обращений: модераторам больше не приходится каждый раз возвращать неправильно оформленные заявки. Система просто не даёт посетителю отправить форму без нужных изображений и просит заменить случайную картинку на документ. Конечно, вернуть доступ к самой странице по-прежнему можно только если на ней есть настоящие фотографии владельца. Речь идёт о безопасности учётных записей и сохранности личных данных — значит, промахов и случайностей быть просто не может.

Фильтрация результатов поиска по разделу «Документы».

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

ВКонтакте обезопасили пользователей и начали убирать из публичного поиска фотографии, на которых можно определить наличие документа

Как ВКонтакте решали задачу, есть ли на изображении документ, и если да — то какой именно

Кажется, что самый простой способ определить документы на изображении — настроить нейросеть или обучить её с нуля на большой выборке. Но не всё так просто.

Выборка должна быть репрезентативной. Сложно найти достаточное количество реальных семплов на каждый вариант: каких-либо публичных баз с настоящими документами в открытом доступе нет.

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

Для задач, стоящих перед ВКонтакте такие системы не подходят. Сервис ВКонтакте отдельно уточняет, что при обращении к ним за восстановлением доступа пользователь может закрыть на документе все данные, кроме фотографии, имени, фамилии и печати. При этом всё равно нужно определять документ — даже если на нём скрыты серия и номер, если паспорт снят вместе с окружающей обстановкой или, наоборот, на изображении оказалась только часть документа с фотографией. Ещё нужно учитывать разное освещение и ракурсы. Все такие материалы нейросеть должна принять. Вопрос в том, как её этому обучить.

Как ВКонтакте решали задачу, есть ли на изображении документ, и если да — то какой именно

Есть и другие сложности. Например, паспорт тяжело отделить от других видов документов, а также от различных рукописных и печатных бумаг.

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

К какому итогу в конечном итоге пришли программисты ВКонтакте

В данной ситуации лучшим решением задачи оказалось использование ансамбля сеток и детекторов лиц, чтобы распознавать документ и определять его тип. Также были добавлены дифференциальный классификатор, в который включён кодировщик для выделения характерных признаков, и классификатор формы, позволяющий отличать изображения документов от нерелевантных файлов. В дополнение к этому происходит предварительная кластеризация обучающей выборки с целью нормализации датасета. Из архитектур лучше всего себя зарекомендовали VGG и ResNet.

Базовый классификатор «документ/не документ» работает на основе настроенного VGG с 19 слоями и районированной выборкой

Базовый классификатор «документ/не документ» работает на основе настроенного VGG с 19 слоями и районированной выборкой. Поверх него используется комбинированный ансамбль классификаторов, которые уменьшают ошибку второго рода и дифференцируют результат. Сначала идёт stratified sampling, затем кодировщик для извлечения околоконтурной информации, потом изменённая VGG и напоследок единая сетка. Такой подход позволил минимизировать ошибки первого рода до уровня примерно 0,002. Вероятность false negative при этом зависит от выбранного датасета и конкретной области применения.

Сейчас ВКонтакте научились автоматически определять наличие на снимке паспортов и водительских прав. Распознавание успешно происходит под любым углом, с любым фоном, даже при плохом освещении — главное, чтобы на изображении была часть документа с фотографией и именем. Впрочем, для идентификации других видов документов потребуются лишь соответствующие датасеты. Обучение сети происходит на собственных данных, уже имеющихся в наличии ВКонтакте, размер выборки документов от пяти до десяти тысяч (но она не репрезентативная). Для других изображений выборка произвольная, но и там, и там идёт априорная кластеризация.

С технической точки зрения система написана на python / keras / tensorflow / glib / opencv. Для практического применения новой системы достаточно интегрировать её в python-обработчики инфраструктуры машинного обучения. На этом же этапе добавляется детектор изменения фотографии в графических редакторах, но эта тема заслуживает отдельной статьи.

Что в итоге получилось

Теперь 6% заявок на восстановление доступа автоматически возвращаются автору с просьбой добавить или заменить фотографию документа, а 2,5% заявок — отклоняются. Если смотреть на анализ изображений в целом, включая эвристики и поиск лица на снимке, то он автоматизирует до 20% работы отдела.

После запуска нейросети ВКонтакте также смогли подсчитать количество паспортов, которые загружаются в раздел «Документы». Выяснилось, что в общей поисковой выдаче каждый день оказывались около двух тысяч удостоверений личности. Теперь вероятность, что они попадут в посторонние руки, минимальна.

Нейросети уже помогают бороться со спамом ВКонтакте и разного вида мошенничеством. Эксперименты с нейросетями ВКонтакте продолжаются. Будем ждать новостей. =)

По материалам
https://vk.com/blog/detecting-documents

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню