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 jej płynne działanie jest bardzo ważne.
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ć większą wygodę użytkownikom 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. Firma 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:
- zmniejszenie odsetka 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
Szacują one 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 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: 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 określonej 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 być uruchamiana bezpośrednio na urządzeniu, korzystając z back-endu WebGL do korzystania z urządzenia GPU. 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 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 JavaScript, 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, a także szybkie działanie w przeglądarce”.—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.
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 pikselach obrazu, przy czym xMin
i xMax
oznaczają granice X, yMin
i yMax
– granice Y, a width
i height
– wymiary ramki ograniczającej.
W przypadku keypoints
, x
i y
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 zdjęciem na karcie 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.
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 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 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 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: