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.
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.
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: