Como a Tokopedia reduziu os custos operacionais ao melhorar o app da Web do vendedor usando o machine learning

Dendi Sunardi
Dendi Sunardi
Geoffrey Prasetyo
Geoffrey Prasetyo
Swetha Gopalakrishnan
Swetha Gopalakrishnan

A Tokopedia é uma empresa de tecnologia indonésia com um dos maiores marketplaces de comércio eletrônico, hospedando mais de 40 produtos digitais e mais de 14 milhões de vendedores registrados na plataforma.

A Mitra Tokopedia, parte dos setores de negócios da Tokopedia, é um aplicativo da Web que ajuda proprietários de pequenas empresas a vender produtos digitais, como cupons de crédito e de jogos, pacotes de dados, tokens de eletricidade, contas de saúde nacionais e outros. O site é um dos principais canais para vendedores do Mitra Tokopedia em mais de 700 cidades, o que torna essencial garantir uma experiência do usuário tranquila.

Uma etapa importante do processo de integração exige que esses vendedores verifiquem a identidade. O vendedor precisa fazer upload do documento de identidade nacional e de uma selfie com ele para concluir a verificação. Isso é chamado de processo de Conheça seu cliente (KYC, na sigla em inglês).

Ao adicionar recursos de machine learning a esse processo de verificação de identidade essencial no app da Web, a Mitra Tokopedia conseguiu melhorar a experiência do usuário com mais de 20% de redução nas falhas de verificação. Ela também reduziu os custos operacionais, reduzindo as aprovações manuais em quase 70%.

Desafio

A maioria dos dados de KYC estava sendo rejeitada, criando milhares de tickets por semana para a equipe de operações para verificação manual. Isso não apenas causou um alto custo operacional, mas também resultou em uma experiência ruim para os vendedores, cujo processo de verificação foi atrasado. O principal motivo da rejeição foi que os vendedores não enviaram selfies com documentos de identificação corretamente. A Mitra Tokopedia queria 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, na sigla em inglês), quando o usuário faz upload das imagens. Eles usaram o MediaPipe e a biblioteca Face Detection do TensorFlow para detectar o rosto do vendedor com seis pontos-chave quando o vendedor enviou as imagens de identificação e selfie. A saída do modelo é usada para verificar os critérios de aceitação. Após a verificação, as informações são enviadas para o back-end. Se a verificação falhar, o vendedor receberá uma mensagem de erro e a opção de tentar novamente. Foi usada uma abordagem híbrida em que o modelo realiza a inferência no dispositivo ou no lado do servidor, dependendo das especificações do smartphone. Um dispositivo de baixo nível 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:

  • Melhorar a taxa de rejeição no processo de verificação de identidade.
  • Avise os usuários sobre a possível rejeição das imagens com base na qualidade avaliada pelo modelo.

Por que escolher a ML em vez de outras soluções?

O aprendizado de máquina pode automatizar tarefas repetitivas que, de outra forma, seriam demoradas ou imprecisas de fazer manualmente. No caso da Tokopedia, otimizar a solução não ML atual não gerava resultados significativos, enquanto uma solução de ML poderia reduzir significativamente a carga sobre a equipe de operações, que tinha que processar manualmente milhares de aprovações semanais. Com uma solução de ML, as verificações de imagem podem ser feitas quase instantaneamente, proporcionando uma melhor experiência do usuário e melhorando a eficiência operacional. Leia mais sobre como estruturar o problema para determinar se o ML é uma solução adequada para seu problema.

Considerações ao escolher um modelo

Os seguintes fatores foram considerados ao escolher o modelo de ML.

Custo

Eles avaliaram o custo geral de uso do modelo. Como o TensorFlow.js é um pacote de código aberto bem mantido pelo Google, economizamos nos custos de licenciamento e manutenção. Outra consideração é o custo da inferência. A possibilidade de executar a inferência no lado do cliente economiza muito dinheiro em comparação com o processamento no lado do servidor com GPUs caras, especialmente se os dados forem inválidos e inutilizáveis.

Escalonabilidade

Eles consideraram a escalabilidade do modelo e da tecnologia. Ele é capaz de processar o crescimento da complexidade de dados e modelos à medida que o projeto evolui? Ela pode ser estendida para atender a outros projetos ou casos de uso? O processamento no dispositivo ajuda porque o modelo pode ser hospedado em um CDN e entregue ao lado do cliente, o que é muito escalonável.

Desempenho

Eles consideraram o tamanho da biblioteca (em KB) e a latência do processo de execução. A maioria da base de usuários da Mitra Tokopedia tem dispositivos de nível médio a baixo com velocidade e conectividade de Internet moderadas. Portanto, a performance em termos de download e tempo de execução (ou seja, a rapidez com que o modelo pode produzir uma saída) é uma prioridade principal para atender às necessidades específicas e garantir uma ótima experiência do usuário.

Outras considerações

Compliance regulatória:eles precisavam garantir que a biblioteca escolhida obedecesse às regulamentações relevantes de proteção de dados e privacidade.

Conjunto de habilidades:eles avaliaram a experiência e o conjunto de habilidades da equipe. Alguns frameworks e bibliotecas de ML podem exigir linguagens de programação específicas ou experiência em uma área específica. Considerando esses fatores, eles tomaram uma decisão informada ao escolher o modelo certo para o projeto de machine learning.

Tecnologia escolhida

O TensorFlow.js atendeu às necessidades deles, depois de considerar esses fatores. Ele pode ser executado totalmente no dispositivo usando o back-end do WebGL para usar a GPU do dispositivo. A execução de um modelo no dispositivo permite um feedback mais rápido ao usuário devido à redução da latência do servidor e do custo de computação do servidor. Leia mais sobre ML no dispositivo no artigo Vantagens e limitações do ML no dispositivo.

"O TensorFlow.js é uma biblioteca de machine learning de código aberto do Google voltada para desenvolvedores JavaScript que pode ser executada no lado do cliente no navegador. É a opção mais madura para IA da Web com suporte abrangente de operador de back-end do WebGL, WebAssembly e WebGPU que pode ser usado no navegador com desempenho rápido."Como a Adobe usou a IA da Web com o TensorFlow.js para aprimorar o Photoshop para Web

Implementação técnica

Mitra Tokopedia usou o MediaPipe e a biblioteca Face Detection do TensorFlow, um pacote que fornece modelos para executar a detecção facial em tempo real. Especificamente, o modelo MediaPipeFaceDetector-TFJS fornecido nesta biblioteca, que implementa o ambiente de execução tfjs, foi usado para esta solução.

Antes de mergulhar na implementação, veja um breve resumo sobre o que é o MediaPipe. O MediaPipe permite criar e implantar soluções de ML no dispositivo para dispositivos móveis (Android, iOS), Web, computador, dispositivos de borda e IoT.

14 soluções diferentes oferecidas pelo MediaPipe no momento em que este artigo foi escrito. Você pode usar um ambiente de execução mediapipe ou tfjs. O ambiente de execução tfjs é criado com JavaScript e fornece um pacote JavaScript que pode ser transferido por download externamente pelo aplicativo da Web. Isso é diferente de um ambiente de execução mediapipe, que é criado com C++ e compilado para um módulo da WebAssembly. As principais diferenças são desempenho, depuração e agrupamento. O pacote JavaScript pode ser agrupado com agrupadores clássicos, como o webpack. Por outro lado, o módulo Wasm é um recurso binário maior e separado (que é atenuado por não ser uma dependência do tempo de carregamento) e exige um fluxo de trabalho de depuração Wasm diferente. No entanto, ele é executado mais rapidamente para ajudar a atender aos requisitos técnicos e de desempenho.

Diagrama de como os modelos do MediaPipe e do TensorFlow funcionam para os diferentes ambientes de execução, usando o FaceDetection como exemplo.
Ilustração geral de como os modelos do MediaPipe e do TensorFlow funcionam para os diferentes ambientes de execução, usando o FaceDetection como exemplo

Voltando à implementação da Tokopedia, a primeira etapa é inicializar o modelo desta maneira. 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 rostos, a lista vai estar vazia. Cada rosto contém uma caixa delimitadora do rosto detectado, bem como uma matriz de seis pontos-chave. Isso inclui características como olhos, nariz e boca. Cada ponto-chave contém x e y, além de 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 denotando os limites x, yMin, yMax denotando 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 no espaço de pixels da imagem. 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 do documento de identificação nacional e uma selfie com o documento para concluir a verificação. A saída do modelo é usada para verificar os critérios de aceitação, ou seja, para que um documento de identificação e uma selfie sejam considerados válidos, eles precisam ter uma correspondência com os seis pontos principais mencionados anteriormente.

Após a verificação, as informações relevantes do vendedor são transmitidas ao back-end. Se a verificação falhar, o vendedor vai receber uma mensagem de falha e a opção para tentar novamente. Nenhuma informação será enviada ao back-end.

Diagrama da página KYC do Mitra, do modelo TensorFlow.js e do servidor interagindo entre si.
Como a página KYC do Mitra, o modelo TensorFlow.js e o servidor interagem entre si

Considerações sobre desempenho para dispositivos básicos

Este pacote tem apenas 24,8 KB (minificado e compactado com gzip), o que não afeta significativamente o tempo de download. No entanto, para dispositivos muito simples, o processamento no tempo de execução leva muito tempo. Uma lógica adicional foi adicionada para verificar a RAM e a CPU do dispositivo antes de transmitir as duas imagens para o modelo de detecção de rosto de machine learning.

Se o dispositivo tiver mais de 4 GB de RAM, uma conexão de rede maior que 4G e uma CPU com mais de 6 núcleos, as imagens serão transmitidas ao modelo no dispositivo para verificação facial. Se esses requisitos não forem atendidos, o modelo no dispositivo será ignorado e as imagens serão enviadas diretamente ao servidor para verificação usando uma abordagem híbrida para atender a esses dispositivos mais antigos. Com o tempo, mais dispositivos poderão descarregar a computação do servidor conforme o hardware continua a evoluir.

Impacto

Graças à integração de ML, a Tokopedia conseguiu resolver a alta taxa de rejeição e teve 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 do usuário mais suave para os vendedores, mas também reduziu o custo operacional da equipe da Tokopedia.

Conclusão

No geral, os resultados desse estudo de caso mostraram que, para os casos de uso certos, as soluções de ML no dispositivo na Web podem ser valiosas para melhorar a experiência do usuário e a eficácia dos recursos, além de gerar economia de custos e outros benefícios comerciais.

Teste o recurso de detecção facial do MediaPipe usando o MediaPipe Studio e o exemplo de código do MediaPipe Face Detector para Web.

Se você quiser estender os recursos do seu app da Web com a ML no dispositivo, confira estes recursos: