Tokopedia — индонезийская технологическая компания, владеющая одной из крупнейших площадок электронной коммерции, на которой размещено более 40 цифровых продуктов и зарегистрировано более 14 миллионов продавцов.
Mitra Tokopedia , часть бизнес-вертикалей Tokopedia, представляет собой веб-приложение, которое помогает владельцам малого бизнеса продавать цифровые продукты, такие как кредитные и игровые ваучеры, пакеты данных, жетоны на электроэнергию, счета за медицинское обслуживание и т. д. Веб-сайт является одним из основных каналов для продавцов Mitra Tokopedia в более чем 700 городах, поэтому крайне важно обеспечить бесперебойный пользовательский опыт.
Ключевой шаг в процессе регистрации требует от этих продавцов подтверждения своей личности. Продавец должен загрузить свое национальное удостоверение личности, а также селфи с удостоверением личности, чтобы завершить проверку продавца. Это называется процессом «Знай своего клиента» (KYC).
Добавив возможности машинного обучения к этому критическому процессу KYC в своем веб-приложении, Mitra Tokopedia смогла улучшить пользовательский опыт, сократив количество сбоев проверки более чем на 20%. Они также добились экономии операционных расходов, сократив ручные утверждения почти на 70%.
Испытание
Большая часть данных KYC отклонялась, создавая тысячи тикетов в неделю для оперативной группы для ручной проверки. Это не только приводило к высоким эксплуатационным расходам, но и приводило к плохому пользовательскому опыту для продавцов, чей процесс проверки задерживался. Главной причиной отклонения было то, что продавцы неправильно загружали селфи с удостоверениями личности. Mitra Tokopedia стремилась решить эту проблему масштабируемо, используя современные веб-возможности.
Решение
Команда Tokopedia решила использовать машинное обучение с TensorFlow.js, чтобы решить эту проблему на самом первом этапе процесса KYC — когда пользователь загружает изображения. Они использовали MediaPipe и библиотеку распознавания лиц TensorFlow для определения лица продавца по шести ключевым точкам, когда продавец загружает удостоверение личности и селфи-изображения. Затем выходные данные модели используются для проверки на соответствие их критериям приемки. После успешной проверки информация отправляется на бэкэнд. Если проверка не пройдена, продавцу предоставляется сообщение об ошибке и возможность повторить попытку. Был использован гибридный подход, при котором модель выполняет вывод либо на устройстве, либо на стороне сервера в зависимости от характеристик телефона. Устройство более низкого уровня будет выполнять вывод на сервере.
Использование модели МО на ранних этапах процесса KYC позволяет им:
- Улучшить показатель отказов в процессе KYC.
- Предупредите пользователей о возможном отклонении их изображений на основании оценки качества моделью.
Почему стоит выбрать МО, а не другие решения?
ML может автоматизировать повторяющиеся задачи, которые в противном случае отнимают много времени или нецелесообразно выполнять вручную. В случае Tokopedia оптимизация текущего решения без ML не могла дать существенных результатов, тогда как решение ML могло бы значительно снизить нагрузку на операционную группу, которой приходилось вручную обрабатывать тысячи утверждений еженедельно. С решением ML проверки изображений могут выполняться практически мгновенно, обеспечивая лучший пользовательский опыт и повышая эффективность работы. Узнайте больше о постановке проблемы , чтобы определить, является ли ML подходящим решением для вашей проблемы.
Соображения при выборе модели
При выборе модели МО учитывались следующие факторы.
Расходы
Они оценили общую стоимость использования модели. Поскольку TensorFlow.js — это пакет с открытым исходным кодом, который хорошо поддерживается Google, мы экономим на лицензировании и расходах на обслуживание. Дополнительным соображением является стоимость вывода. Возможность запустить вывод на стороне клиента экономит много денег по сравнению с обработкой на стороне сервера с помощью дорогих графических процессоров, особенно если данные оказываются недействительными и непригодными для использования.
Масштабируемость
Они рассмотрели масштабируемость модели и технологии. Сможет ли она справиться с ростом объема данных и сложности модели по мере развития нашего проекта? Можно ли ее расширить для обслуживания других проектов или вариантов использования? Обработка на устройстве помогает, поскольку модель может быть размещена на CDN и доставлена на сторону клиента, что очень масштабируемо.
Производительность
Они учитывали размер библиотеки (в КБ) и задержку процесса выполнения. Большинство пользователей Mitra Tokopedia имеют устройства среднего и низкого уровня с умеренной скоростью интернета и подключения. Таким образом, производительность с точки зрения загрузки и времени выполнения (т. е. насколько быстро модель может выдавать выходные данные) является главным приоритетом для удовлетворения их конкретных потребностей и обеспечения отличного пользовательского опыта.
Другие соображения
Соблюдение нормативных требований: они должны были гарантировать, что выбранная библиотека соблюдает соответствующие правила защиты данных и конфиденциальности.
Skillset: Они оценили опыт и навыки своей команды. Некоторые фреймворки и библиотеки машинного обучения могут потребовать определенных языков программирования или опыта в определенной области. Рассмотрев эти факторы, они приняли обоснованное решение при выборе правильной модели для своего проекта машинного обучения.
Выбранная технология
TensorFlow.js удовлетворил их потребности после рассмотрения этих факторов. Он может работать полностью на устройстве, используя свой бэкэнд WebGL для использования графического процессора устройства. Запуск модели на устройстве обеспечивает более быструю обратную связь с пользователем благодаря уменьшению задержки сервера и снижает стоимость вычислений на сервере. Подробнее о машинном обучении на устройстве читайте в статье Преимущества и ограничения машинного обучения на устройстве .
«TensorFlow.js — это библиотека машинного обучения с открытым исходным кодом от Google, предназначенная для разработчиков JavaScript, которая может работать на стороне клиента в браузере. Это наиболее зрелый вариант для веб-ИИ с комплексной поддержкой операторов бэкэнда WebGL, WebAssembly и WebGPU, который можно использовать в браузере с высокой производительностью». — Как Adobe использовала веб-машинное обучение с TensorFlow.js для улучшения Photoshop для веб-сайтов
Техническая реализация
Mitra Tokopedia использовала MediaPipe и библиотеку TensorFlow's Face Detection , пакет, который предоставляет модели для запуска обнаружения лиц в реальном времени. В частности, для этого решения использовалась модель MediaPipeFaceDetector-TFJS , предоставленная в этой библиотеке, которая реализует среду выполнения tfjs
.
Прежде чем углубляться в реализацию, кратко расскажем о том, что такое MediaPipe. MediaPipe позволяет создавать и развертывать решения машинного обучения на мобильных устройствах (Android, iOS), в Интернете, на настольных компьютерах, периферийных устройствах и в Интернете вещей.
На момент написания этой статьи MediaPipe предлагал 14 различных решений . Вы можете использовать среду выполнения mediapipe
или tfjs
. Среда выполнения tfjs
создана на основе JavaScript и предоставляет пакет JavaScript, который может быть загружен извне веб-приложением. Это отличается от среды выполнения mediapipe
, которая создана на основе C++ и скомпилирована в модуль WebAssembly. Основные отличия — производительность, отладочная способность и связывание. Пакет JavaScript может быть связан с классическими сборщиками, такими как webpack. Напротив, модуль Wasm — это более крупный и отдельный двоичный ресурс (что компенсируется тем, что он не является зависимостью времени загрузки) и требует другого рабочего процесса отладки Wasm . Однако он выполняется быстрее, что помогает соответствовать техническим и производительным требованиям.
Возвращаясь к реализации Tokopedia, первым шагом является инициализация модели следующим образом. Когда пользователь загружает фотографию, HTMLImageElement
передается в качестве входных данных детектору.
// Create the detector.
const model = faceDetection.SupportedModels.MediaPipeFaceDetector;
const detectorConfig = {
runtime: 'tfjs'
};
const detector = await faceDetection.createDetector(model, detectorConfig);
// Run inference to start detecting faces.
const estimationConfig = {flipHorizontal: false};
const faces = await detector.estimateFaces(image, estimationConfig);
Результат списка лиц содержит обнаруженные лица для каждого лица на изображении. Если модель не может обнаружить ни одного лица, список будет пустым. Для каждого лица он содержит ограничивающую рамку обнаруженного лица, а также массив из шести ключевых точек для обнаруженного лица. Сюда входят такие особенности, как глаза, нос и рот. Каждая ключевая точка содержит x и y, а также имя.
[
{
box: {
xMin: 304.6476503248806,
xMax: 502.5079975897382,
yMin: 102.16298762367356,
yMax: 349.035215984403,
width: 197.86034726485758,
height: 246.87222836072945
},
keypoints: [
{x: 446.544237446397, y: 256.8054528661723, name: "rightEye"},
{x: 406.53152857172876, y: 255.8, "leftEye },
...
],
}
]
box
представляет собой ограничивающий ящик лица в пиксельном пространстве изображения, где xMin
, xMax
обозначают x-границы, yMin
, yMax
обозначают y-границы, а width
, height
являются размерами ограничивающего ящика. Для keypoints
x
и y
представляют фактическое положение ключевой точки в пиксельном пространстве изображения. name
предоставляет метку для ключевой точки, которые являются 'rightEye'
, 'leftEye'
, 'noseTip'
, 'mouthCenter'
, 'rightEarTragion'
и 'leftEarTragion'
соответственно. Как упоминалось в начале этого поста, продавец должен загрузить свой национальный идентификатор и селфи с идентификатором, чтобы завершить проверку продавца. Затем выходные данные модели используются для проверки на соответствие критериям приемки, то есть для соответствия шести ключевым точкам, упомянутым ранее, чтобы считаться действительным удостоверением личности и изображением селфи.
После успешной проверки соответствующая информация о продавце передается в бэкэнд. Если проверка не удалась, продавцу выдается сообщение об ошибке и возможность повторить попытку. Никакая информация не будет отправлена в бэкэнд.
Вопросы производительности для бюджетных устройств
Этот пакет занимает всего 24,8 КБ (минифицированный и сжатый gzip), что не оказывает существенного влияния на время загрузки. Однако для очень слабых устройств обработка во время выполнения занимает много времени. Была добавлена дополнительная логика для проверки оперативной памяти устройства и процессора перед передачей двух изображений в модель обнаружения лиц машинного обучения.
Если устройство имеет более 4 ГБ оперативной памяти, сетевое подключение более 4G и процессор с более чем 6 ядрами, изображения передаются в модель на устройстве для проверки лица. Если эти требования не выполняются, то модель на устройстве пропускается, и изображения отправляются непосредственно на сервер для проверки с использованием гибридного подхода для обслуживания этих старых устройств. Со временем больше устройств смогут разгрузить вычисления с сервера, поскольку аппаратное обеспечение продолжает развиваться.
Влияние
Благодаря интеграции машинного обучения Tokopedia успешно смогла решить проблему высокого процента отклонений и получила следующие результаты:
- Уровень отказов снизился более чем на 20%.
- Количество ручных одобрений сократилось почти на 70%.
Это не только обеспечило более удобный пользовательский интерфейс для продавцов, но и сократило операционные расходы для команды Tokopedia.
Заключение
В целом результаты данного исследования показали, что при правильных вариантах использования решения МО на устройствах в Интернете могут оказаться ценными для улучшения пользовательского опыта и эффективности функций, а также для экономии средств и получения других преимуществ для бизнеса.
Попробуйте функцию обнаружения лиц MediaPipe самостоятельно, используя MediaPipe Studio и пример кода для MediaPipe Face Detector для веб-сайтов .
Если вы заинтересованы в расширении возможностей своего веб-приложения с помощью машинного обучения на устройстве, ознакомьтесь со следующими ресурсами: