Jak firma Tokopedia obniżyła koszty operacyjne, ulepszając swoją aplikację internetową sprzedawcy za pomocą systemów uczących się

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

Tokopedia to indonezyjska firma technologiczna, która prowadzi jedną z największych platform handlu elektronicznego, na której znajduje się ponad 40 produktów cyfrowych i ponad 14 milionów zarejestrowanych sprzedawców.

Mitra Tokopedia, która należy do segmentów biznesowych Tokopedia, to aplikacja internetowa pomagająca właścicielom małych firm sprzedawać produkty cyfrowe, takie jak bony na zakupy i vouchery na gry, pakiety danych, tokeny na energię elektryczną, rachunki za opiekę zdrowotną i inne. Witryna jest jednym z głównych kanałów sprzedawców Mitra Tokopedia w ponad 700 miastach, dlatego ważne jest, aby zapewnić użytkownikom płynne działanie.

Ważnym etapem procesu rejestracji jest weryfikacja tożsamości sprzedawców. Aby przejść weryfikację, sprzedawca musi przesłać dokument tożsamości oraz selfie z tym dokumentem. Jest to tzw. proces Poznaj swojego klienta (PSK).

Dzięki dodaniu do tej kluczowej funkcji weryfikacji tożsamości w aplikacji internetowej możliwości uczenia maszynowego firma Mitra Tokopedia mogła zapewnić lepsze wrażenia użytkowników i ograniczyła liczbę niepowodzeń weryfikacji o ponad 20%. Firma ta zaoszczędzyła też na kosztach operacyjnych, ponieważ zmniejszyła liczbę ręcznych zatwierdzeń o prawie 70%.

Wyzwanie

Większość danych KYC była odrzucana, co powodowało, że do zespołu operacyjnego trafiały tysiące zgłoszeń tygodniowo w celu weryfikacji ręcznej. Spowodowało to wysokie koszty operacyjne, a także negatywnie wpłynęło na wrażenia sprzedawców, których proces weryfikacji został opóźniony. Najczęstszą przyczyną odrzucenia było nieprawidłowe przesłanie przez sprzedawców selfie z dokumentem tożsamości. Mitra Tokopedia chciała rozwiązać ten problem w skali, korzystając z nowoczesnych możliwości sieci.

Rozwiązanie

Aby rozwiązać ten problem, zespół Tokopedia zdecydował się użyć ML z TensorFlow.js na samym początku procesu weryfikacji tożsamości – gdy użytkownik przesyła zdjęcia. Wykorzystali do tego bibliotekę wykrywania twarzy MediaPipe i TensorFlow, która wykrywa twarz sprzedawcy na podstawie 6 kluczowych punktów, gdy sprzedawca przesyła zdjęcie dowodu tożsamości i selfie. Wyniki modelu są następnie porównywane z kryteriami przyjęcia. Po pomyślnej weryfikacji informacje są wysyłane do backendu. Jeśli weryfikacja się nie powiedzie, sprzedawca otrzyma komunikat o błędzie i opcję ponownego próbowania. Wykorzystaliśmy podejście hybrydowe, w którym model wykonuje wnioskowanie na urządzeniu lub po stronie serwera w zależności od specyfikacji telefonu. Na serwerze przetwarzanie danych odbywałoby się na urządzeniu tańszego końca.

Korzystanie z modelu ML na wczesnym etapie procesu KYC pozwala im:

  • zmniejszyć odsetek odrzuceń w procesie weryfikacji tożsamości;
  • ostrzegać użytkowników o możliwym odrzuceniu ich zdjęć na podstawie jakości ocenianej przez model;

Dlaczego warto wybrać systemy uczące się zamiast innych rozwiązań?

AI może automatyzować powtarzalne zadania, które w innym przypadku byłyby czasochłonne lub niepraktyczne do wykonania ręcznie. W przypadku Tokopedia zoptymalizowanie obecnego rozwiązania, które nie wykorzystuje uczenia maszynowego, nie przyniosło znaczących rezultatów, podczas gdy rozwiązanie wykorzystujące uczenie maszynowe znacznie zmniejszyło obciążenie zespołu ds. operacji, który musiał ręcznie przetwarzać tysiące zaakceptowanych tygodniowo. Dzięki rozwiązaniu opartym na technologii AI weryfikacja obrazów może odbywać się niemal natychmiast, co zapewnia lepsze wrażenia użytkowników i zwiększa wydajność operacyjną. Dowiedz się więcej o formułowaniu problemu, aby określić, czy uczenie maszynowe jest odpowiednim rozwiązaniem.

Co wziąć pod uwagę przy wyborze modelu

Podczas wyboru modelu ML wzięliśmy pod uwagę te czynniki.

Koszt

Sprawdzili oni ogólny koszt korzystania z modelu. TensorFlow.js to pakiet open source, który jest dobrze utrzymywany przez Google, dzięki czemu oszczędzamy na kosztach licencjonowania i konserwacji. Dodatkowo należy wziąć pod uwagę koszt wnioskowania. Możliwość uruchamiania wnioskowania po stronie klienta pozwala zaoszczędzić dużo pieniędzy w porównaniu z przetwarzaniem wnioskowania po stronie serwera przy użyciu drogich kart graficznych, zwłaszcza jeśli dane okazują się nieprawidłowe i nieprzydatne.

Skalowalność

Wzięli pod uwagę skalowalność modelu i technologii. Czy jest on w stanie obsłużyć wzrost złożoności danych i modeli w miarę rozwoju projektu? Czy można go rozszerzyć, aby obejmował inne projekty lub przypadki użycia? Przetwarzanie na urządzeniu jest przydatne, ponieważ model może być hostowany w CDN i przesyłany po stronie klienta, co jest bardzo skalowalne.

Wyniki

Wzięto pod uwagę rozmiar biblioteki (w KB) i opóźnienie procesu w czasie wykonywania. Większość użytkowników Mitra Tokopedia korzysta z urządzeń o średniej lub niskiej wydajności, które mają średnią szybkość i stabilność połączenia z internetem. Dlatego wydajność w zakresie pobierania i czasu działania (czyli jak szybko model może wygenerować dane wyjściowe) jest priorytetem, aby zaspokoić ich konkretne potrzeby i zapewnić użytkownikom wygodę.

Inne uwagi

Zgodność z wymogami prawnymi: musieli mieć pewność, że wybrana biblioteka jest zgodna z odpowiednimi przepisami dotyczącymi ochrony danych i prywatności.

Zestaw umiejętności: ocenili doświadczenie i zestaw umiejętności swojego zespołu. Niektóre frameworki i biblioteki ML mogą wymagać znajomości konkretnych języków programowania lub wiedzy z konkretnej dziedziny. Biorąc pod uwagę te czynniki, podjęli świadomą decyzję o wybraniu odpowiedniego modelu do projektu systemów uczących się.

Wybrana technologia

Po uwzględnieniu tych czynników TensorFlow.js spełnia ich potrzeby. Może działać całkowicie na urządzeniu, korzystając z back-endu WebGL do korzystania z urządzenia GPU. Uruchomienie modelu na urządzeniu umożliwia szybsze przekazywanie informacji użytkownikowi dzięki zmniejszeniu opóźnienia serwera i obniżeniu kosztów przetwarzania na serwerze. Więcej informacji o ML na urządzeniu znajdziesz w artykule Zalety i ograniczenia ML na urządzeniu.

„TensorFlow.js to biblioteka open source do systemów uczących się od Google przeznaczona dla programistów JavaScriptu, która może działać po stronie klienta w przeglądarce. To najbardziej dopracowana opcja AI w internecie, która zapewnia kompleksowe wsparcie operatora backendu WebGL, WebAssembly i WebGPU, które można wykorzystać w przeglądarce z szybką wydajnością”.Jak Adobe wykorzystało Web ML z TensorFlow.js do ulepszania Photoshopa na potrzeby internetu

Implementacja techniczna

Mitra Tokopedia wykorzystała MediaPipe i bibliotekę wykrywania twarzy w TensorFlow – pakiet, który udostępnia modele do wykrywania twarzy w czasie rzeczywistym. W tym celu wykorzystano model MediaPipeFaceDetector-TFJS udostępniony w tej bibliotece, który implementuje środowisko wykonawcze tfjs.

Zanim przejdziemy do implementacji, krótko opiszemy, czym jest MediaPipe. MediaPipe umożliwia tworzenie i wdrażanie rozwiązań ML na urządzeniach na urządzeniach mobilnych (Android, iOS), komputerach, urządzeniach brzegowych i IoT oraz w internecie.

W momencie pisania tego artykułu MediaPipe oferuje 14 różnych rozwiązań. Możesz użyć środowiska wykonawczego mediapipe lub tfjs. Środowisko wykonawcze tfjs jest zbudowane w języku JavaScript i zawiera pakiet JavaScript, który aplikacja internetowa może pobrać z zewnątrz. Różni się to od środowiska wykonawczego mediapipe, które jest tworzone w C++ i skompilowane do modułu WebAssembly. Główne różnice dotyczą wydajności, możliwości debugowania i pakowania. Pakiet JavaScript może być skompilowany za pomocą klasycznych narzędzi do kompilacji, takich jak webpack. Z kolei moduł Wasm to większy i oddzielny zasób binarny (co jest ograniczone przez brak zależności w czasie wczytywania) i wymagający innego procesu debugowania Wasm. Jednak jest on szybszy i spełnia wymagania techniczne oraz dotyczące wydajności.

Schemat przedstawiający działanie modeli MediaPipe i TensorFlow w różnych środowiskach uruchomieniowych na przykładzie wykrywania twarzy
Ogólna ilustracja działania modeli MediaPipe i TensorFlow w różnych środowiskach uruchomieniowych na przykładzie wykrywania twarzy

Wracając do implementacji w Tokopedia, pierwszym krokiem jest zainicjowanie modelu w ten sposób: Gdy użytkownik przesyła zdjęcie, detektor otrzymuje dane wejściowe w postaci 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);

Wynik listy twarzy zawiera wykryte twarze na każdym obrazie. Jeśli model nie może wykryć żadnych twarzy, lista będzie pusta. W przypadku każdej twarzy zawiera ramkę wykrytej twarzy oraz tablicę z 6 punktami kluczowymi twarzy. Dotyczy to takich cech jak oczy, nos czy usta. Każdy punkt kontrolny zawiera współrzędne x i y oraz nazwę.

[
  {
    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 },
      ...
    ],
  }
]

Wartość box reprezentuje ramkę ograniczającą twarz w przestrzeni pikseli obrazu, przy czym xMinxMax oznaczają granice X, yMinyMax – granice Y, a widthheight – wymiary ramki ograniczającej. W przypadku keypoints, xy reprezentują rzeczywistą pozycję punktu kluczowego w pikselach obrazu. Etykieta name zawiera etykietę punktu kluczowego, która jest odpowiednio 'rightEye', 'leftEye', 'noseTip', 'mouthCenter', 'rightEarTragion' i 'leftEarTragion'. Jak wspomnieliśmy na początku tego postu, aby przejść weryfikację, sprzedawca musi przesłać dokument tożsamości wydany przez władze państwowe oraz selfie z tym dokumentem. Dane wyjściowe modelu są następnie porównywane z kryteriami akceptacji, czyli z 6 kluczowymi punktami, które muszą być zgodne z ważnym dokumentem tożsamości i zdjęciem selfie.

Po pomyślnej weryfikacji odpowiednie informacje o sprzedawcy są przekazywane do zaplecza. Jeśli weryfikacja się nie powiedzie, sprzedawca otrzyma komunikat o błędzie i możliwość ponownej próby. Żadne informacje nie zostaną wysłane do backendu.

Schemat przedstawiający wzajemne oddziaływanie strony weryfikacji KYC w Mitra, modelu TensorFlow.js i serwera.
Interakcje między stroną Mitra KYC, modelem TensorFlow.js i serwerem

Zagadnienia związane z wydajnością na urządzeniach niskiej klasy

Ten pakiet ma tylko 24,8 KB (skompresowany i zaszyfrowany za pomocą GZIP), co nie wpływa znacząco na czas pobierania. Jednak w przypadku bardzo słabych urządzeń przetwarzanie w czasie wykonywania zajmuje dużo czasu. Dodano dodatkową logikę, która sprawdza pamięć RAM i procesor urządzenia, zanim przekaże 2 obrazy do modelu wykrywania twarzy opartego na systemach uczących się.

Jeśli urządzenie ma więcej niż 4 GB pamięci RAM, połączenie z siecią szybsze niż 4G oraz procesor z większą liczbą niż 6 rdzeni, obrazy są przekazywane do modelu na urządzeniu na potrzeby weryfikacji twarzy. Jeśli te wymagania nie zostaną spełnione, model na urządzeniu zostanie pominięty, a obrazy zostaną wysłane bezpośrednio na serwer w celu weryfikacji, korzystając z hybrydowego podejścia do obsługi starszych urządzeń. Z czasem coraz więcej urządzeń będzie mogło przenosić na serwer obciążenie obliczeniowe, ponieważ sprzęt będzie się rozwijać.

Wpływ

Dzięki integracji z ML firma Tokopedia rozwiązała problem wysokiego współczynnika odrzuceń i uzyskała następujące wyniki:

  • Odsetek odrzuceń zmniejszył się o ponad 20%.
  • Liczba ręcznych zatwierdzeń zmniejszyła się o prawie 70%.

Dzięki temu sprzedawcy mogą korzystać z usługi w bardziej płynny sposób, a zespół Tokopedia może obniżyć koszty operacyjne.

Podsumowanie

Ogólnie wyniki tego badania wykazały, że w odpowiednich przypadkach użycia rozwiązania ML na urządzeniu w internecie mogą być przydatne w zwiększaniu wygody użytkowników i skuteczności funkcji, a także w oszczędzaniu kosztów i przynoszeniu innych korzyści biznesowych.

Samodzielnie wypróbuj funkcję wykrywania twarzy w MediaPipe, korzystając z MediaPipe Studio i przykładu kodu detektora twarzy MediaPipe na potrzeby internetu.

Jeśli chcesz rozszerzyć możliwości własnej aplikacji internetowej dzięki ML na urządzeniu, zapoznaj się z tymi materiałami: