Tokopedia — индонезийская технологическая компания с одним из крупнейших рынков электронной коммерции, на своей платформе размещает более 40 цифровых продуктов и более 14 миллионов зарегистрированных продавцов.
Mitra Tokopedia , часть направления бизнеса Tokopedia, представляет собой веб-приложение, которое помогает владельцам малого бизнеса продавать цифровые продукты, такие как кредитные и игровые ваучеры, пакеты данных, жетоны электроэнергии, национальные счета за здравоохранение и другие. Веб-сайт является одним из основных каналов для продавцов Mitra Tokopedia в более чем 700 городах, поэтому крайне важно обеспечить удобство работы с пользователем.
Ключевой шаг в процессе регистрации требует, чтобы эти продавцы подтвердили свою личность. Продавец должен загрузить свое национальное удостоверение личности, а также фотографию с удостоверением личности, чтобы завершить проверку продавца. Это называется процессом «Знай своего клиента» (KYC).
Добавив возможности машинного обучения к этому важнейшему процессу KYC в своем веб-приложении, Mitra Tokopedia смогла добиться лучшего пользовательского опыта и сократить количество неудачных проверок более чем на 20%. Они также добились экономии эксплуатационных расходов за счет сокращения количества утверждений вручную почти на 70%.
Испытание
Большая часть данных KYC отклонялась, в результате чего операционная группа получала тысячи заявок в неделю для ручной проверки. Это не только привело к высоким эксплуатационным расходам, но и привело к ухудшению пользовательского опыта для продавцов, процесс проверки которых задерживается. Основная причина отказа заключалась в том, что продавцы неправильно загружали селфи с удостоверениями личности. Mitra Tokopedia стремилась решить эту проблему масштабируемо, используя современные веб-возможности.
Решение
Команда Tokopedia решила использовать машинное обучение с TensorFlow.js, чтобы решить эту проблему на самом первом этапе процесса KYC — когда пользователь загружает изображения. Они использовали MediaPipe и библиотеку распознавания лиц TensorFlow для обнаружения лица продавца по шести ключевым точкам, когда продавец загружает удостоверение личности и изображения селфи. Результаты модели затем используются для проверки ее критериев приемки. После успешной проверки информация отправляется на серверную часть. Если проверка не удалась, продавцу будет показано сообщение об ошибке и возможность повторить попытку. Был использован гибридный подход, при котором модель выполняет вывод либо на устройстве, либо на стороне сервера в зависимости от характеристик телефона. Устройство нижнего уровня будет выполнять вывод на сервере.
Использование модели ML на ранних этапах процесса KYC позволяет им:
- Улучшите процент отказов в процессе KYC.
- Предупреждайте пользователей о возможном отклонении их изображений на основании качества, оцененного моделью.
Почему стоит выбрать ML вместо других решений?
ML может автоматизировать повторяющиеся задачи, которые в противном случае отнимают много времени или нецелесообразно выполнять вручную. В случае Tokopedia оптимизация текущего решения, не связанного с машинным обучением, не могла дать значительных результатов, тогда как решение машинного обучения могло значительно снизить нагрузку на операционную команду, которой приходилось вручную обрабатывать тысячи утверждений еженедельно. Благодаря решению ML проверка изображений может выполняться практически мгновенно, что обеспечивает лучший пользовательский опыт и повышает эффективность работы. Узнайте больше о формулировке проблемы , чтобы определить, подходит ли машинное обучение для вашей проблемы.
На что обратить внимание при выборе модели
При выборе модели ML учитывались следующие факторы.
Расходы
Они оценили общую стоимость использования модели. Поскольку TensorFlow.js — это пакет с открытым исходным кодом, который хорошо поддерживается Google, мы экономим на расходах на лицензирование и обслуживание. Дополнительным соображением является стоимость вывода. Возможность выполнения вывода на стороне клиента экономит много денег по сравнению с его обработкой на стороне сервера с помощью дорогих графических процессоров, особенно если данные оказываются недействительными и непригодными для использования.
Масштабируемость
Они учли масштабируемость модели и технологии. Способен ли он справиться с ростом сложности данных и моделей по мере развития нашего проекта? Можно ли расширить его для обслуживания других проектов или вариантов использования? Обработка на устройстве помогает, поскольку модель может быть размещена в CDN и доставлена на сторону клиента, что очень масштабируемо.
Производительность
Они учитывали размер библиотеки (в КБ) и задержку процесса выполнения. Большая часть пользовательской базы Mitra Tokopedia имеет устройства среднего и низкого уровня с умеренной скоростью интернета и возможностью подключения. Таким образом, производительность с точки зрения загрузки и времени выполнения (т. е. насколько быстро модель может выдавать выходные данные) является главным приоритетом для удовлетворения их конкретных потребностей и обеспечения отличного пользовательского опыта.
Другие соображения
Соответствие нормативным требованиям: они должны были убедиться, что выбранная библиотека соблюдает соответствующие правила защиты данных и конфиденциальности.
Набор навыков: они оценили опыт и навыки своей команды. Для некоторых платформ и библиотек машинного обучения могут потребоваться определенные языки программирования или знания в определенной области. Приняв во внимание эти факторы, они приняли обоснованное решение при выборе правильной модели для своего проекта машинного обучения.
выбранная технология
TensorFlow.js удовлетворил их потребности после рассмотрения этих факторов. Он может полностью работать на устройстве, используя серверную часть WebGL для использования графического процессора устройства. Запуск модели на устройстве обеспечивает более быструю обратную связь с пользователем благодаря уменьшению задержки на сервере и снижению затрат на вычисления на сервере. Подробнее об машинном обучении на устройстве читайте в статье Преимущества и ограничения машинного обучения на устройстве .
«TensorFlow.js — это библиотека машинного обучения с открытым исходным кодом от Google, предназначенная для разработчиков JavaScript, которая может запускать клиентскую часть в браузере. Это наиболее зрелый вариант для веб-ИИ с комплексной поддержкой операторов серверной части WebGL, WebAssembly и WebGPU, которую можно использовать внутри браузер с высокой производительностью». — Как Adobe использовала Web ML с TensorFlow.js для улучшения Photoshop для Интернета.
Техническая реализация
Mitra Tokopedia использовала MediaPipe и библиотеку Face Detection от TensorFlow — пакет, предоставляющий модели для запуска распознавания лиц в реальном времени. В частности, для этого решения использовалась модель MediaPipeFaceDetector-TFJS, представленная в этой библиотеке, которая реализует среду выполнения tfjs
.
Прежде чем углубиться в реализацию, кратко рассмотрим, что такое MediaPipe. MediaPipe позволяет создавать и развертывать решения машинного обучения на мобильных устройствах (Android, iOS), в Интернете, на настольных компьютерах, на периферийных устройствах и в Интернете вещей.
На момент написания этого поста MediaPipe предлагал 14 различных решений . Вы можете использовать среду выполнения mediapipe
или tfjs
. Среда выполнения tfjs
построена на JavaScript и предоставляет пакет JavaScript, который можно загрузить извне веб-приложением. Это отличается от среды выполнения mediapipe
, которая построена на C++ и скомпилирована в модуль WebAssembly. Ключевые различия — производительность, возможность отладки и комплектация. Пакет JavaScript можно объединить с классическими сборщиками, такими как webpack. Напротив, модуль Wasm представляет собой более крупный и отдельный двоичный ресурс (это смягчается тем, что он не зависит от времени загрузки) и требует другого рабочего процесса отладки Wasm . Однако он выполняется быстрее, что позволяет удовлетворить технические требования и требования к производительности.
Возвращаясь к реализации Токопедии, первым шагом является инициализация модели следующим образом. Когда пользователь загружает фотографию, 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 КБ (минимизированный и заархивированный), что не оказывает существенного влияния на время загрузки. Однако для устройств очень низкого уровня обработка во время выполнения занимает много времени. Была добавлена дополнительная логика для проверки оперативной памяти и процессора устройства перед передачей двух изображений в модель распознавания лиц машинного обучения.
Если устройство имеет более 4 ГБ оперативной памяти, сетевое соединение более 4G и процессор с более чем 6 ядрами, изображения передаются в модель на устройстве для проверки лица. Если эти требования не выполняются, модель на устройстве пропускается, а изображения отправляются непосредственно на сервер для проверки с использованием гибридного подхода для обслуживания этих старых устройств. Со временем все больше устройств смогут разгружать вычислительные ресурсы сервера, поскольку оборудование продолжает развиваться.
Влияние
Благодаря интеграции машинного обучения Токопедии удалось успешно решить проблему высокого уровня отказов и получить следующие результаты:
- Процент отказов снизился более чем на 20%.
- Количество ручных согласований сократилось почти на 70%.
Это не только создало более удобный пользовательский опыт для продавцов, но и снизило эксплуатационные расходы для команды Токопедии.
Заключение
В целом результаты этого тематического исследования показали, что при правильных сценариях использования решения ML на устройствах в Интернете могут оказаться ценными для улучшения пользовательского опыта и эффективности функций, а также для экономии средств и других преимуществ для бизнеса.
Опробуйте функцию MediaPipe Face Detection самостоятельно, используя MediaPipe Studio и пример кода для MediaPipe Face Detector для Интернета .
Если вы заинтересованы в расширении возможностей вашего собственного веб-приложения с помощью машинного обучения на устройстве, посетите следующие ресурсы: