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 w sprzedaży produktów cyfrowych, takich 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 użytkowników, którzy musieli czekać na weryfikację. 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. Urządzenie tańsze wykonywałoby wnioskowanie na serwerze.
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ń?
Systemy uczące się mogą 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 ML, nie przyniosło znaczących rezultatów, podczas gdy rozwiązanie oparte na ML znacznie zmniejszyło obciążenie zespołu operacyjnego, który musiał ręcznie przetwarzać tysiące akceptacji 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 większą 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 przekazywany na stronę 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 określonej dziedziny. Biorąc pod uwagę te czynniki, mogą podejmować świadome decyzje dotyczące wyboru 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 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, 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ę Face Detection 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 to wydajność, możliwość debugowania i pakowanie. Pakiet JavaScript może być skompilowany z klasycznymi narzędziami do kompilacji, takimi jak webpack. Z kolei moduł Wasm jest większym i oddzielnym zasobem binarnym (co jest ograniczone przez brak zależności w czasie wczytywania) i wymaga innego procesu debugowania Wasm. Jednak działa szybciej, co pomaga spełnić wymagania techniczne i wydajnościowe.
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. Obejmuje to cechy takie jak oczy, nos i 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 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
rzeczywista pozycja punktu kluczowego w pikselach obrazu.
Etykieta name
zawiera etykietę punktu charakterystycznego, 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 używane do sprawdzania, czy spełniają kryteria akceptacji, czyli czy pasują do 6 wymienionych wcześniej kluczowych punktów, aby uznać je za prawidłowe zdjęcia dowodu tożsamości i selfie.
Po pomyślnej weryfikacji odpowiednie informacje o sprzedawcy są przekazywane do backendu. 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, 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 są spełnione, model na urządzeniu jest pomijany, a obrazy są wysyłane bezpośrednio na serwer w celu weryfikacji. W przypadku starszych urządzeń stosujemy podejście hybrydowe. 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
Podsumowując, wyniki tego badania wykazały, że w odpowiednich przypadkach użycia rozwiązania ML na urządzeniu w internecie mogą być przydatne do polepszania wrażeń użytkowników i skuteczności funkcji, a także do oszczędzania kosztów i osiągania 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: