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 mercados de e-commerce, hospedando mais de 40 produtos digitais e mais de 14 milhões de vendedores registrados na plataforma.

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

Uma etapa fundamental 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 do vendedor. Esse processo é conhecido como Conheça seu cliente (KYC, na sigla em inglês).

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

Desafio

A maioria dos dados do Conheça seu cliente (KYC, na sigla em inglês) estava sendo rejeitada, criando milhares de tíquetes por semana para a equipe de operações para verificação manual. Isso gerou altos custos operacionais e também uma experiência do usuário negativa para os vendedores, que atrasaram o processo de verificação. O maior motivo para a rejeição foi que os vendedores não faziam o upload correto de selfies com documentos de identidade. 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. Ele usou a biblioteca de detecção facial do MediaPipe e do TensorFlow para detectar o rosto do vendedor com seis pontos principais quando o vendedor faz upload do documento de identidade e das imagens de selfie. A saída do modelo é então 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 vai 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 servidor, dependendo das especificações do smartphone. Um dispositivo inferior realizaria a inferência no servidor.

Usar um modelo de ML no início do processo KYC permite:

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

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

O ML pode automatizar tarefas repetitivas que seriam demoradas ou impraticáveis de modo manual. No caso da Tokopedia, otimizar a solução não ML atual não poderia gerar resultados significativos, enquanto uma solução de ML poderia reduzir significativamente a carga sobre a equipe de operações, que precisava processar manualmente milhares de aprovações por semana. 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 enquadramento de problemas para determinar se o ML é uma solução adequada para seu problema.

Considerações ao escolher um modelo

Os fatores a seguir foram considerados na escolha do modelo de ML.

Custo

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

Escalonabilidade

Eles consideraram a escalonabilidade do modelo e a tecnologia. Ela é capaz de lidar com o crescimento dos dados e da complexidade do modelo à medida que nosso 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 uma CDN e entregue ao lado do cliente, o que é muito escalonável.

Desempenho

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

Outras considerações

Conformidade regulatória:era preciso garantir que a biblioteca escolhida obedecesse aos regulamentos de privacidade e proteção de dados relevantes.

Habilidade: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 determinada área. Ao considerar esses fatores, a equipe tomou uma decisão informada ao escolher o modelo certo para o projeto de machine learning.

Tecnologia escolhida

O TensorFlow.js atendeu às necessidades depois de considerar esses fatores. Ele pode ser executado totalmente no dispositivo usando o back-end WebGL para usar a GPU do dispositivo. A execução de um modelo no dispositivo permite um feedback mais rápido para o usuário devido à latência reduzida do servidor e ao custo de computação do servidor. Saiba 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 de JavaScript capazes de executar o lado do cliente no navegador. É a opção mais madura para IA da Web com suporte abrangente a operadores de back-end WebGL, WebAssembly e WebGPU que pode ser usado no navegador com desempenho rápido.": 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 a biblioteca de detecção facial do MediaPipe e do TensorFlow, um pacote que fornece modelos para executar a detecção facial em tempo real. Especificamente, o modelo MediaPipeFaceDetector-TFJS fornecido nessa biblioteca, que implementa o ambiente de execução de tfjs, foi usado nesta solução.

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

No momento, existem 14 soluções diferentes oferecidas pelo MediaPipe. 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. Ele é diferente do ambiente de execução mediapipe, que é criado com C++ e compilado em um módulo WebAssembly. As principais diferenças são desempenho, capacidade de depuração e agrupamento. O pacote JavaScript pode ser empacotado com bundlers 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 de tempo de carregamento) e exige um fluxo de trabalho de depuração do Wasm diferente. No entanto, ele é executado com mais rapidez para ajudar a atender aos requisitos técnicos e de desempenho.

Diagrama de como os modelos MediaPipe e TensorFlow funcionam em diferentes ambientes de execução, usando o FaceDetection como exemplo.
Uma ilustração geral sobre como os modelos MediaPipe e TensorFlow funcionam em diferentes ambientes de execução usando o FaceDetection como exemplo

Voltando à implementação da Tokopedia, a primeira etapa é inicializar o modelo da seguinte 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 nenhum rosto, a lista estará vazia. Para cada rosto, ele contém uma caixa delimitadora do rosto detectado, bem como uma matriz de seis pontos-chave para o rosto detectado. Isso inclui características 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 },
      ...
    ],
  }
]

box representa a caixa delimitadora do rosto no espaço de pixel da imagem, com xMin, xMax indicando os limites x, yMin, yMax indicando 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 pixel 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 identidade nacional e de uma selfie com ele para concluir a verificação. A saída do modelo é usada para verificar os critérios de aceitação, ou seja, para ter uma correspondência dos seis pontos-chave mencionados anteriormente para ser considerado um cartão de identificação e uma imagem de selfie válidos.

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

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

Considerações de desempenho para dispositivos simples

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 ambiente de execução leva muito tempo. Uma outra lógica foi adicionada para verificar a RAM e a CPU do dispositivo antes de passar as duas imagens para o modelo de detecção facial 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 seis núcleos, as imagens vão ser 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 à medida que o hardware continuar evoluindo.

Impacto

Devido à integração de ML, a Tokopedia conseguiu solucionar 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 melhorou a experiência do usuário para os vendedores, mas também reduziu os custos operacionais para a 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, bem como reduzir 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 (links em inglês).

Se você tiver interesse em ampliar os recursos do seu próprio app da Web com ML no dispositivo, confira os seguintes recursos: