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, część branży biznesowej, to aplikacja internetowa, która pomaga właścicielom małych firm w sprzedawaniu produktów cyfrowych, takich jak kupony kredytowe i do gier, pakiety danych, tokeny elektryczne, krajowe rachunki zdrowotne i inne. Strona internetowa firmy jest jednym z głównych kanałów sprzedawców Tokopedii w ponad 700 miastach, dlatego ma kluczowe znaczenie dla zapewnienia wygody klientów.

Kluczowym etapem procesu wdrażania wymaga od nich potwierdzenia tożsamości. 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 funkcji uczenia maszynowego do tego kluczowego procesu weryfikacji tożsamości w aplikacji internetowej firma Mitra Tokopedia mogła zapewnić większą wygodę użytkownikom i ograniczyć 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 PSK była odrzucana, przez co tygodniowo trafiały do zespołu operacyjnego tysiące zgłoszeń do ręcznej weryfikacji. 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. Firma Mitra Tokopedia chciała rozwiązać ten problem w skalowalny sposób, korzystając z nowoczesnych rozwiązań internetowych.

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 zobaczy komunikat o błędzie i będzie mógł spróbować ponownie. 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 Tokopedii optymalizacja obecnego rozwiązania niezwiązanego z systemami uczącymi się nie przyniosła istotnych rezultatów, podczas gdy rozwiązanie wykorzystujące systemy uczące się mogłyby znacznie ograniczyć obciążenie zespołu operacyjnego, który musiał ręcznie przetwarzać tysiące zatwierdzeń 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 braliś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. Dodatkową kwestią jest 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 w stanie poradzić sobie ze rosnącą ilością danych i złożonością modelu 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 uruchomienia. 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: ocenił poziom wiedzy i umiejętności swojego zespołu. Niektóre platformy i biblioteki systemów uczących się mogą wymagać określonych języków programowania lub doświadczenia w danej dziedzinie. 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ć w całości na urządzeniu, korzystając z backendu WebGL do korzystania z GPU urządzenia. Uruchamianie modelu na urządzeniu umożliwia szybsze przekazywanie informacji użytkownikowi dzięki zmniejszeniu opóźnień na serwerze i obniżeniu kosztów przetwarzania na serwerze. Więcej informacji o systemach uczących się na urządzeniu znajdziesz w artykule Zalety i ograniczenia ML na urządzeniu.

„TensorFlow.js to biblioteka Google typu open source dla systemów uczących się stworzona dla programistów JavaScriptu, która umożliwia uruchamianie po stronie klienta w przeglądarce. To najbardziej dopracowana opcja w obszarze Web AI, zapewniająca kompleksową obsługę operatorów backendu WebGL, WebAssembly i WebGPU, którą można stosować w przeglądarce z szybką wydajnością”jak firma Adobe wykorzystała Web ML z TensorFlow.js do ulepszenia Photoshopa w internecie.

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ć 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 to wydajność, możliwość debugowania i pakowanie. Pakiet JavaScript można połączyć w pakiety z klasycznymi komponentami, np. 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 przedstawiająca, jak modele MediaPipe i TensorFlow działają w różnych środowiskach wykonawczych, z wykorzystaniem funkcji FaceDetection jako przykładu

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 klucz zawiera znaki 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 },
      ...
    ],
  }
]

Element box reprezentuje ramkę ograniczającą płaszczyznę w przestrzeni obrazu w pikselach, gdzie xMin, xMax oznacza granicę x, yMin, yMax oznacza granicę y, a width, height to wymiary ramki ograniczającej. W przypadku elementów keypoints, x i y odpowiadają rzeczywistej pozycji punktu kluczowego w przestrzeni pikselowej obrazu. name zawiera etykietę punktu kluczowego: 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. Następnie dane wyjściowe modelu są wykorzystywane w celu sprawdzenia, czy spełnione są kryteria akceptacji – 6 wymienionych wcześniej kluczowych punktów jest uznawane za prawidłowe zdjęcie dowodu tożsamości i zdjęcie 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 strony Mitra PYC, modelu TensorFlow.js i serwera wchodzących w interakcję ze sobą.
Interakcje między stroną Mitra KYC, modelem TensorFlow.js i serwerem

Uwagi dotyczące wydajności w przypadku słabszych urządzeń

Ten pakiet ma tylko 24,8 KB (skompresowany i zawinięty w archiwum ZIP), 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 przed przekazaniem dwóch obrazów 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 zdjęcia zostaną wysłane bezpośrednio na serwer w celu weryfikacji, przy użyciu podejścia hybrydowego, aby uwzględnić te starsze urządzenia. 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 osiągnęła następujące wyniki:

  • Odsetek odrzuceń zmniejszył się o ponad 20%.
  • Liczba ręcznych zatwierdzeń spadła 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 studium przypadku pokazują, że w odpowiednich przypadkach użycia internetowych rozwiązań ML na urządzeniu może pomóc zwiększyć wygodę użytkowników i zwiększyć skuteczność funkcji, a także obniżyć koszty i uzyskać inne korzyści biznesowe.

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: