A Tokopedia é uma empresa de tecnologia indonésia com um dos maiores marketplaces de e-commerce, hospedando mais de 40 produtos digitais e mais de 14 milhões de vendedores registrados na plataforma.
Mitra Tokopedia, parte dos negócios da Tokopedia verticais, é um aplicativo da Web que ajuda proprietários de pequenas empresas a vender produtos digitais, como cupons de crédito e jogos, pacotes de dados, eletricidade contas de saúde, contas de saúde nacionais, entre outros. O site é uma das principais canais para vendedores da Mitra Tokopedia em mais de 700 cidades, o que torna para garantir uma experiência do usuário tranquila.
Uma etapa importante do processo de integração exige que esses vendedores verifiquem identidade. O vendedor precisa enviar o documento de identificação nacional e uma selfie com o documento de identificação para concluir a verificação do vendedor. Isso é conhecido como o processo Conheça seu cliente (KYC, na sigla em inglês).
Ao adicionar recursos de machine learning a esse importante processo Conheça seu cliente, seu web app, a Mitra Tokopedia conseguiu melhorar a experiência do usuário mais de 20% de redução de falhas na verificação. Ela também tornou operacional economia de custos reduzindo as aprovações manuais em quase 70%.
Desafio
A maioria dos dados do Conheça seu cliente (KYC, na sigla em inglês) era rejeitada, criando milhares de tíquetes por semana. à equipe de operações para verificação manual. Isso não apenas causou aumentos custo operacional, mas também resultou em uma experiência de usuário ruim para os vendedores, o processo de verificação atrasa. O maior motivo para a rejeição foi que vendedores não fizeram upload de selfies com carteiras de identidade corretamente. A Mitra Tokopedia era interessados em resolver esse problema de maneira escalonável usando recursos modernos da Web.
Solução
A equipe da Tokopedia decidiu usar ML com o TensorFlow.js para resolver esse problema na primeira etapa do processo Conheça seu cliente (KYC), quando o usuário faz upload das imagens. Eles usou o MediaPipe e os Biblioteca de detecção facial para detectar o rosto do vendedor com seis pontos principais quando o vendedor faz upload do ID de cartões e selfies. A saída do modelo é então usada para verificar critérios de aceitação. Após a verificação, as informações são enviadas para no back-end. Se a verificação falhar, o vendedor receberá uma mensagem de erro e uma opção para tentar novamente. Foi usada uma abordagem híbrida em que o modelo realiza inferência no dispositivo ou no servidor, dependendo do tipo especificações. Um dispositivo mais simples realizaria a inferência no servidor.
Usar um modelo de ML no início do processo Conheça seu cliente (KYC, na sigla em inglês) para:
- Melhore a taxa de rejeição no processo Conheça seu cliente (KYC, na sigla em inglês).
- Avise os usuários sobre uma possível rejeição de imagens com base na qualidade são avaliadas pelo modelo.
Por que escolher ML em vez de outras soluções?
o ML pode automatizar tarefas repetitivas que seriam demoradas ou muito pouco prático. No caso da Tokopedia, otimizar o modelo atual não conseguiram gerar resultados significativos, enquanto uma solução de ML poderia reduzir significativamente a carga sobre a equipe de operações, que teve que processar manualmente milhares de aprovações por semana. Com uma solução de ML, as verificações de imagem podem ser feitas proporcionando uma melhor experiência do usuário e aprimorando o a eficiência. Leia mais sobre enquadramento do problema para determinar se o ML é uma solução adequada para o problema.
Considerações ao escolher um modelo
Os fatores a seguir foram considerados na escolha do modelo de ML.
Custo
Eles avaliaram o custo geral de uso do modelo. Como o TensorFlow.js é de código aberto bem mantido pelo Google, economizamos em licenças e e manutenção dos negócios. Outra consideração é o custo da inferência. Sendo executar inferência do lado do cliente economiza muito dinheiro em comparação processá-los no lado do servidor com GPUs caras, especialmente se os dados é inválido ou inutilizável.
Escalonabilidade
Eles consideraram a escalonabilidade do modelo e da tecnologia. Ele é capaz de lidam com o crescimento da complexidade de dados e modelos à medida que nosso projeto evolui? Pode ser estendida para atender a outros projetos ou casos de uso? O processamento no dispositivo ajuda porque o modelo pode ser hospedado em uma CDN e fornecido ao cliente, o que é muito escalonável.
Desempenho
Eles consideraram o tamanho da biblioteca (em KB) e a latência do ambiente de execução de desenvolvimento de software. A maioria da base de usuários da Mitra Tokopedia tem dispositivos de médio a baixo custo com velocidade e conectividade moderadas. Assim, o desempenho em termos download e ambiente de execução (a rapidez com que o modelo pode produzir uma saída) é uma prioridade para atender às suas necessidades específicas e garantir uma ótima experiência do usuário.
Outras considerações
Compliance regulamentar: a biblioteca precisava estar em conformidade com regulamentações relevantes de privacidade e proteção de dados.
Habilidades:eles avaliaram a experiência e o conjunto de habilidades da equipe. Pouco ML frameworks e bibliotecas podem exigir linguagens de programação ou conhecimentos específicos em uma determinada área. Ao considerar esses fatores, eles tomaram uma decisão decisão na hora de escolher o modelo certo para o projeto de machine learning.
Tecnologia escolhida
O TensorFlow.js atendeu às necessidades delas, depois de considerar esses fatores. Ele pode ser executado totalmente no dispositivo usando o back-end WebGL para usar a GPU do dispositivo. Executar um modelo no dispositivo permite um feedback mais rápido para o usuário devido à menor latência do servidor e o custo de computação do servidor. Lida sobre ML no dispositivo no artigo Vantagens e limitações do ML no dispositivo.
"O TensorFlow.js é uma biblioteca de código aberto de machine learning do Google voltada para Desenvolvedores de JavaScript capazes de executar no lado do cliente no navegador. É o opção mais madura para IA da Web com WebGL, WebAssembly e WebGPU completos de back-end do operador que pode ser usado no navegador com comandos performance". — Como a Adobe usou o Web ML com o TensorFlow.js para aprimorar o Photoshop para Web
Implementação técnica
A Mitra Tokopedia usou o MediaPipe e os
Biblioteca de detecção facial,
um pacote que fornece modelos para executar detecção facial em tempo real.
Especificamente, a
MediaPipeFaceDetector-TFJS
modelo fornecido nesta biblioteca, que implementa o ambiente de execução tfjs
foi usado para
essa solução.
Antes de mergulhar na implementação, vamos fazer uma breve recapitulação do que é o MediaPipe. O MediaPipe permite criar e implantar soluções de ML no dispositivo em dispositivos móveis (Android, iOS), Web, desktop, dispositivos de borda, e IoT.
Existem
14 soluções diferentes
oferecido pela MediaPipe no momento em que este artigo foi escrito. Você pode usar um
mediapipe
ou tfjs
ambiente de execução. O ambiente de execução tfjs
é criado com JavaScript e
fornece um pacote JavaScript que pode ser baixado externamente pela Web
para o aplicativo. Ele é diferente de um ambiente de execução mediapipe
, que é criado com
C++ e compilado em um módulo WebAssembly. As principais diferenças são desempenho,
a depuração e o agrupamento. O pacote JavaScript pode ser empacotado com um
bundlers, como o webpack. Por outro lado, o módulo Wasm é um módulo maior
recurso binário, que é atenuado por não ser uma dependência no tempo de carregamento.
exige uma configuração
Fluxo de trabalho de depuração Wasm. No entanto,
a execução é mais rápida para ajudar a atender aos requisitos técnicos e de desempenho.
Voltando à implementação da Tokopedia, a primeira etapa é inicializar
modelo, conforme mostrado a seguir. Quando o usuário faz upload de uma foto, um HTMLImageElement
é transmitido
como uma entrada para o detector.
// 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);
O resultado da lista de rostos contém os rostos detectados para cada rosto na imagem. Se o modelo não conseguir detectar nenhum rosto, a lista estará vazia. Para cada rosto, ele contém uma caixa delimitadora do rosto detectado, bem como um matriz de seis pontos-chave para o rosto detectado. Isso inclui recursos como olhos, nariz e boca. Cada ponto-chave contém x e y, bem como um nome.
[
{
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 },
...
],
}
]
O box
representa a caixa delimitadora do rosto no espaço de pixels da imagem, com
xMin
, xMax
que indica os limites x, yMin
, yMax
que indica os limites y e
width
, height
são as dimensões da caixa delimitadora.
Para keypoints
, x
e y
representam a posição real do ponto-chave na imagem.
espaço de pixels.
O name
fornece um rótulo para o ponto-chave, que são 'rightEye'
, 'leftEye'
,
'noseTip'
, 'mouthCenter'
, 'rightEarTragion'
e 'leftEarTragion'
, respectivamente.
Como mencionado no início desta postagem, o vendedor precisa fazer upload
Documento de identidade nacional e uma selfie com o documento para finalizar o pedido do vendedor
verificação.
A saída do modelo é então usada para verificar os critérios de aceitação, ou seja,
combinar os seis pontos-chave mencionados anteriormente para que seja considerado um
Documento de identificação e selfie.
Após a verificação, as informações relevantes do vendedor são transmitidas ao back-end. Se a verificação falhar, o vendedor recebe uma mensagem de falha e um e tente de novo. Nenhuma informação será enviada ao back-end.
Considerações de desempenho para dispositivos simples
Este pacote tem apenas 24,8 KB (minificado e compactado), o que não impactar significativamente o tempo de download. No entanto, em dispositivos muito simples, o processamento em tempo de execução demora muito. Foi adicionada uma lógica adicional para verificar RAM e CPU do dispositivo antes de transmitir as duas imagens para o mostrador de machine learning modelo de detecção de ameaças.
Se o dispositivo tiver mais de 4 GB de RAM, uma conexão de rede maior que 4G, e uma CPU com mais de seis núcleos, as imagens são transmitidas para o modelo no dispositivo para verificação facial. Se esses requisitos não forem atendidos, a conexão no dispositivo O modelo é ignorado, e as imagens são enviadas diretamente ao servidor para verificação usando uma abordagem híbrida para atender a esses dispositivos mais antigos. Com o tempo, mais os dispositivos poderão descarregar a computação do servidor enquanto o hardware continua evoluir.
Impacto
Devido à integração com o ML, a Tokopedia conseguiu resolver os altos taxa de rejeição e notamos os seguintes resultados:
- A taxa de rejeição diminuiu mais de 20%.
- O número de aprovações manuais diminuiu quase 70%.
Isso não apenas criou uma experiência de usuário mais tranquila para os vendedores, mas também reduziu o custo operacional para a equipe da Tokopedia.
Conclusão
No geral, os resultados deste estudo de caso mostraram que, para os casos de uso corretos, soluções de ML no dispositivo na Web podem ser valiosas para melhorar o usuário e eficácia dos recursos, além de criar economias e e outros benefícios comerciais.
Teste o recurso Detecção facial do MediaPipe usando o MediaPipe Studio (link em inglês) e o exemplo de código Detector de rostos do MediaPipe para Web.
Se você estiver interessado em ampliar os recursos do seu próprio aplicativo da web com no dispositivo, confira os recursos a seguir: