Tokopedia est une entreprise technologique indonésienne qui possède l'une des plus grandes places de marché d'e-commerce, hébergeant plus de 40 produits numériques et plus de 14 millions de vendeurs enregistrés sur sa plate-forme.
Mitra Tokopedia, l'un des secteurs d'activité de Tokopedia, est une application Web qui aide les propriétaires de petites entreprises à vendre des produits numériques tels que des bons de crédit et de jeu, des forfaits de données, des jetons d'électricité, des factures de santé nationales, etc. Le site Web est l'un des principaux canaux pour les vendeurs Mitra Tokopedia dans plus de 700 villes. Il est donc essentiel de garantir une expérience utilisateur fluide.
Une étape clé du processus d'intégration consiste à valider l'identité de ces vendeurs. Le vendeur doit importer sa pièce d'identité nationale ainsi qu'un selfie avec cette pièce d'identité pour finaliser la validation du vendeur. C'est ce qu'on appelle le processus Know Your Customer (KYC).
En ajoutant des fonctionnalités de machine learning à ce processus KYC essentiel dans son application Web, Mitra Tokopedia a pu améliorer l'expérience utilisateur en réduisant de plus de 20 % les échecs de validation. Elle a également réduit ses coûts opérationnels en diminuant de près de 70 % les approbations manuelles.
Défi
La plupart des données KYC étaient rejetées, ce qui générait des milliers de demandes par semaine pour l'équipe chargée des opérations, qui devait les vérifier manuellement. Cela entraînait non seulement des coûts opérationnels élevés, mais aussi une mauvaise expérience utilisateur pour les vendeurs, dont la procédure de validation était retardée. La principale raison du refus était que les vendeurs n'avaient pas importé correctement de selfies avec leur pièce d'identité. Mitra Tokopedia souhaitait résoudre ce problème de manière évolutive en utilisant les fonctionnalités Web modernes.
Solution
L'équipe de Tokopedia a décidé d'utiliser le ML avec TensorFlow.js pour résoudre ce problème dès la première étape du processus KYC, lorsque l'utilisateur importe les images. Ils ont utilisé MediaPipe et la bibliothèque de détection de visages de TensorFlow pour détecter le visage du vendeur avec six points clés lorsque celui-ci importe sa carte d'identité et son selfie. Le résultat du modèle est ensuite utilisé pour vérifier s'il répond aux critères d'acceptation. Une fois la validation réussie, les informations sont envoyées au backend. Si la validation échoue, le vendeur reçoit un message d'erreur et une option pour réessayer. Une approche hybride a été utilisée, dans laquelle le modèle effectue l'inférence soit sur l'appareil, soit côté serveur, en fonction des spécifications du téléphone. Un appareil bas de gamme effectuerait l'inférence sur le serveur.
L'utilisation d'un modèle de ML au début du processus KYC leur permet de :
- Améliorer le taux de refus dans le processus KYC.
- Avertissez les utilisateurs du risque de rejet de leurs images, en fonction de la qualité évaluée par le modèle.
Pourquoi choisir le ML plutôt que d'autres solutions ?
Le ML peut automatiser des tâches répétitives qui, autrement, prennent du temps ou sont impossibles à effectuer manuellement. Dans le cas de Tokopedia, l'optimisation de la solution actuelle sans ML n'a pas pu donner de résultats significatifs, alors qu'une solution de ML pourrait réduire considérablement la charge de travail de l'équipe des opérations, qui devait traiter manuellement des milliers d'approbations par semaine. Avec une solution de ML, les vérifications d'images peuvent être effectuées presque instantanément, ce qui améliore l'expérience utilisateur et l'efficacité opérationnelle. Apprenez-en plus sur l'identification des problèmes pour déterminer si le ML est une solution adaptée à votre problème.
Éléments à prendre en compte lors du choix d'un modèle
Les facteurs suivants ont été pris en compte lors du choix du modèle de ML.
Coût
Ils ont évalué le coût global de l'utilisation du modèle. Comme TensorFlow.js est un package Open Source bien géré par Google, nous économisons sur les coûts de licence et de maintenance. Le coût de l'inférence est un autre facteur à prendre en compte. La possibilité d'exécuter l'inférence côté client permet de réaliser d'importantes économies par rapport au traitement côté serveur avec des GPU coûteux, en particulier si les données s'avèrent non valides et inutilisables.
Évolutivité
Ils ont pris en compte l'évolutivité du modèle et de la technologie. Est-il capable de gérer l'augmentation des données et de la complexité du modèle à mesure que notre projet évolue ? Peut-elle être étendue pour répondre à d'autres projets ou cas d'utilisation ? Le traitement sur l'appareil est utile, car le modèle peut être hébergé sur un CDN et diffusé côté client, ce qui est très évolutif.
Performances
Ils ont pris en compte la taille de la bibliothèque (en Ko) et la latence du processus d'exécution. La majorité de la base d'utilisateurs de Mitra Tokopedia possède des appareils de milieu ou d'entrée de gamme, avec un débit Internet et une connectivité modérés. Par conséquent, les performances en termes de téléchargement et d'exécution (c'est-à-dire la vitesse à laquelle le modèle peut produire un résultat) sont une priorité absolue pour répondre à leurs besoins spécifiques et garantir une expérience utilisateur optimale.
Autres points à noter
Conformité réglementaire : ils devaient s'assurer que la bibliothèque choisie respectait les réglementations applicables en matière de protection des données et de confidentialité.
Compétences : l'entreprise a évalué l'expertise et les compétences de son équipe. Certains frameworks et bibliothèques de ML peuvent nécessiter des langages de programmation spécifiques ou une expertise dans un domaine particulier. En tenant compte de ces facteurs, ils ont pris une décision éclairée lorsqu'ils ont choisi le modèle adapté à leur projet de machine learning.
Sélection de la technologie
TensorFlow.js répond à leurs besoins, après avoir pris en compte ces facteurs. Il peut s'exécuter entièrement sur l'appareil en utilisant son backend WebGL pour utiliser le GPU de l'appareil. L'exécution d'un modèle sur l'appareil permet d'accélérer les commentaires de l'utilisateur en raison de la réduction de la latence du serveur et des coûts de calcul du serveur. Pour en savoir plus sur le ML sur l'appareil, consultez l'article Avantages et limites du ML sur l'appareil.
"TensorFlow.js est une bibliothèque de machine learning Open Source de Google destinée aux développeurs JavaScript, qui peut s'exécuter côté client dans le navigateur. C'est l'option la plus aboutie pour l'IA Web, avec une compatibilité complète avec les opérateurs de backend WebGL, WebAssembly et WebGPU, qui peut être utilisée dans le navigateur avec des performances rapides."—Comment Adobe a utilisé le ML Web avec TensorFlow.js pour améliorer Photoshop pour le Web
Implémentation technique
Mitra Tokopedia a utilisé MediaPipe et la bibliothèque de détection de visages de TensorFlow, un package qui fournit des modèles pour exécuter la détection de visages en temps réel.
Plus précisément, le modèle MediaPipeFaceDetector-TFJS fourni dans cette bibliothèque, qui implémente l'environnement d'exécution tfjs, a été utilisé pour cette solution.
Avant de passer à l'implémentation, rappelons brièvement ce qu'est MediaPipe. MediaPipe vous permet de créer et de déployer des solutions de ML sur l'appareil sur mobile (Android, iOS), sur le Web, sur ordinateur, sur les appareils de périphérie et sur l'IoT.
Au moment de la rédaction de cet article, MediaPipe propose 14 solutions différentes. Vous pouvez utiliser un environnement d'exécution mediapipe ou tfjs. L'environnement d'exécution tfjs est conçu avec JavaScript et fournit un package JavaScript qui peut être téléchargé en externe par l'application Web. Cela diffère d'un environnement d'exécution mediapipe, qui est créé avec C++ et compilé dans un module WebAssembly. Les principales différences sont les performances, la possibilité de débogage et le regroupement. Le package JavaScript peut être empaqueté avec des empaqueteurs classiques comme webpack. En revanche, le module Wasm est une ressource binaire plus volumineuse et distincte (ce qui est atténué par le fait qu'il ne s'agit pas d'une dépendance au moment du chargement) et nécessite un workflow de débogage Wasm différent. Cependant, elle s'exécute plus rapidement pour répondre aux exigences techniques et de performances.
Revenons à l'implémentation de Tokopedia. La première étape consiste à initialiser le modèle comme suit. Lorsque l'utilisateur importe une photo, un HTMLImageElement est transmis en entrée au détecteur.
// 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);
Le résultat de la liste de visages contient les visages détectés pour chaque visage de l'image. Si le modèle ne détecte aucun visage, la liste est vide. Pour chaque visage, il contient un cadre de délimitation du visage détecté, ainsi qu'un tableau de six points clés pour le visage détecté. Cela inclut des caractéristiques telles que les yeux, le nez et la bouche. Chaque point clé contient x et y, ainsi qu'un nom.
[
{
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 représente le cadre de délimitation du visage dans l'espace de pixels d'image, avec xMin, xMax désignant les limites x, yMin, yMax désignant les limites y, et width, height représentant les dimensions du cadre de délimitation.
Pour keypoints, x et y représentent la position réelle du point de repère dans l'espace de pixels de l'image.
name fournit une étiquette pour le point de repère, qui sont respectivement 'rightEye', 'leftEye', 'noseTip', 'mouthCenter', 'rightEarTragion' et 'leftEarTragion'.
Comme indiqué au début de cet article, le vendeur doit importer sa pièce d'identité nationale et un selfie avec cette pièce d'identité pour valider son identité.
La sortie du modèle est ensuite utilisée pour vérifier les critères d'acceptation, c'est-à-dire pour s'assurer que les six points clés mentionnés précédemment correspondent à une carte d'identité et à un selfie valides.
Une fois la validation réussie, les informations pertinentes sur le vendeur sont transmises au backend. Si la validation échoue, le vendeur reçoit un message d'échec et une option pour réessayer. Aucune information ne sera envoyée au backend.
Considérations sur les performances pour les appareils bas de gamme
Ce package ne fait que 24,8 Ko (minimisé et compressé), ce qui n'a pas d'impact significatif sur le temps de téléchargement. Toutefois, pour les appareils très bas de gamme, le traitement de l'environnement d'exécution prend beaucoup de temps. Une logique supplémentaire a été ajoutée pour vérifier la RAM et le processeur de l'appareil avant de transmettre les deux images au modèle de machine learning de détection de visages.
Si l'appareil dispose de plus de 4 Go de RAM, d'une connexion réseau supérieure à la 4G et d'un processeur de plus de 6 cœurs, les images sont transmises au modèle sur l'appareil pour la vérification faciale. Si ces exigences ne sont pas remplies, le modèle sur l'appareil est ignoré et les images sont envoyées directement au serveur pour validation à l'aide d'une approche hybride adaptée à ces appareils plus anciens. Au fil du temps, de plus en plus d'appareils pourront décharger le calcul du serveur, à mesure que le matériel évolue.
Impact
Grâce à l'intégration du ML, Tokopedia a réussi à résoudre le problème de taux de refus élevé et a obtenu les résultats suivants :
- Le taux de refus a diminué de plus de 20 %.
- Le nombre d'approbations manuelles a diminué de près de 70 %.
Cela a non seulement permis d'améliorer l'expérience utilisateur pour les vendeurs, mais aussi de réduire les coûts opérationnels pour l'équipe Tokopedia.
Conclusion
Dans l'ensemble, les résultats de cette étude de cas ont montré que, pour les cas d'utilisation appropriés, les solutions de ML sur l'appareil sur le Web peuvent être utiles pour améliorer l'expérience utilisateur et l'efficacité des fonctionnalités, ainsi que pour réaliser des économies et d'autres avantages commerciaux.
Essayez vous-même la fonctionnalité de détection de visages MediaPipe à l'aide de MediaPipe Studio et de l'exemple de code pour le détecteur de visages MediaPipe pour le Web.
Si vous souhaitez étendre les fonctionnalités de votre propre application Web avec le ML sur l'appareil, consultez les ressources suivantes :