Cara Tokopedia mengurangi biaya operasional dengan meningkatkan kualitas aplikasi web penjual mereka menggunakan Machine Learning

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

Tokopedia adalah perusahaan teknologi di Indonesia dengan salah satu marketplace e-commerce terbesar, yang menampung lebih dari 40 produk digital dan lebih dari 14 juta penjual terdaftar di platformnya.

Partner Tokopedia, bagian dari bisnis Tokopedia vertikal, adalah aplikasi web yang membantu pemilik usaha kecil untuk menjual produk digital seperti voucher kredit dan game, paket data, listrik token, tagihan kesehatan nasional, dan lain-lain. Situs web ini adalah salah satu bagi penjual Mitra Tokopedia di lebih dari 700 kota, sehingga menjadikannya penting untuk memastikan pengalaman pengguna yang lancar.

Langkah penting dalam proses orientasi mengharuskan penjual ini memverifikasi identitas Anda. Penjual harus mengupload Kartu Identitas Nasional mereka serta selfie dengan tanda pengenal untuk menyelesaikan verifikasi penjual. Hal ini disebut sebagai Proses Kenali Pelanggan Anda (KYC).

Dengan menambahkan kemampuan Machine Learning ke proses KYC penting ini dalam mereka, Mitra Tokopedia mampu memberikan pengalaman pengguna yang lebih baik dengan lebih dari 20% penurunan dalam kegagalan verifikasi. Mereka juga mengoperasionalkan penghematan biaya dengan mengurangi persetujuan manual hampir 70%.

Tantangan

Sebagian besar data KYC ditolak, sehingga membuat ribuan tiket per minggu kepada tim operasi untuk verifikasi secara manual. Hal ini tidak hanya menyebabkan tingginya tetapi juga mengakibatkan pengalaman pengguna yang buruk bagi penjual, yang proses verifikasi tertunda. Alasan terbesar atas penolakan tersebut adalah penjual tidak mengupload selfie dengan kartu identitas dengan benar. Mitra Tokopedia dulu adalah ingin mengatasi masalah ini secara skalabel menggunakan kemampuan web modern.

Solusi

Tim di Tokopedia memutuskan untuk menggunakan ML dengan TensorFlow.js untuk mengatasi masalah ini di langkah pertama proses KYC—saat pengguna mengunggah gambar. Mereka menggunakan MediaPipe dan TensorFlow Library Deteksi Wajah untuk mendeteksi wajah penjual dengan enam poin utama saat penjual mengupload ID gambar kartu dan selfie. Output model ini kemudian digunakan untuk membandingkan kriteria penerimaan. Setelah berhasil diverifikasi, informasi dikirim ke backend. Jika verifikasi gagal, penjual akan mendapatkan pesan error dan opsi untuk mencoba lagi. Pendekatan hibrida digunakan ketika model melakukan inferensi pada perangkat atau sisi server tergantung pada model spesifikasi produk. Perangkat yang lebih rendah akan melakukan inferensi di server.

Dengan menggunakan model ML di awal proses KYC, mereka dapat:

  • Tingkatkan rasio penolakan dalam proses KYC.
  • Peringatkan pengguna tentang kemungkinan penolakan gambar mereka, berdasarkan kualitas dinilai oleh model.

Mengapa memilih ML dibandingkan solusi lain?

ML dapat mengotomatiskan tugas berulang yang memakan waktu atau tidak praktis untuk dilakukan secara manual. Dalam kasus Tokopedia, mengoptimalkan model non-ML saat ini tidak memberikan hasil yang signifikan, sedangkan solusi ML dapat secara signifikan mengurangi beban tim operasi yang harus memproses secara manual ribuan persetujuan setiap minggunya. Dengan solusi ML, pemeriksaan image dapat dilakukan dalam waktu dekat, sehingga memberikan pengalaman pengguna yang lebih baik dan meningkatkan tim dan efisiensi. Baca selengkapnya tentang framing masalah untuk menentukan apakah ML merupakan solusi yang cocok untuk masalah Anda.

Pertimbangan saat memilih model

Faktor-faktor berikut dipertimbangkan saat memilih model ML.

Biaya

Mereka mengevaluasi biaya keseluruhan penggunaan model tersebut. Karena TensorFlow.js adalah paket {i>open source<i} yang dikelola dengan baik oleh Google, kami menghemat biaya lisensi dan dan biaya pemeliharaan. Pertimbangan tambahan adalah biaya inferensi. Berada menjalankan inferensi di sisi klien akan menghemat banyak uang bila dibandingkan dengan memprosesnya di sisi server dengan GPU mahal, terutama jika data ternyata tidak valid dan tidak dapat digunakan.

Skalabilitas

Mereka mempertimbangkan skalabilitas model dan teknologi. Apakah AI generatif dapat menangani pertumbuhan data dan kompleksitas model seiring perkembangan project kita? Apa bisa diperluas untuk melayani proyek atau kasus penggunaan lainnya? Pemrosesan di perangkat membantu karena model dapat dihosting di CDN dan ditayangkan ke sisi klien, yang sangat skalabel.

Performa

Mereka mempertimbangkan ukuran library (dalam KB) dan latensi runtime {i>checkout<i}. Sebagian besar basis pengguna Mitra Tokopedia memiliki perangkat kelas menengah hingga bawah dengan kecepatan internet dan konektivitas sedang. Dengan demikian, kinerja dalam download dan runtime (yaitu seberapa cepat model dapat menghasilkan output) adalah prioritas untuk memenuhi kebutuhan spesifik mereka dan memastikan pengalaman pengguna yang luar biasa.

Pertimbangan lainnya

Kepatuhan terhadap peraturan: Mereka harus memastikan bahwa koleksi yang dipilih mematuhi peraturan perlindungan data dan privasi yang relevan.

Keahlian: Mereka mengevaluasi keahlian dan keahlian tim mereka. Beberapa ML kerangka kerja dan {i>library<i} mungkin memerlukan bahasa pemrograman atau keahlian tertentu di area tertentu. Dengan mempertimbangkan faktor-faktor ini, mereka membuat sebuah keputusan saat memilih model yang tepat untuk project machine learning mereka.

Teknologi dipilih

TensorFlow.js memenuhi kebutuhan mereka, setelah mempertimbangkan faktor-faktor ini. Sistem ini dapat berjalan sepenuhnya di perangkat menggunakan backend WebGL untuk menggunakan GPU perangkat. Menjalankan model di perangkat memungkinkan masukan yang lebih cepat kepada pengguna karena latensi server berkurang dan biaya komputasi server lebih rendah. {i>Read<i} selengkapnya tentang ML di perangkat dalam artikel Kelebihan dan batasan ML di perangkat.

"TensorFlow.js adalah library machine learning open source dari Google yang ditujukan untuk pengembang JavaScript yang dapat menjalankan sisi klien di browser. Itu adalah opsi paling matang untuk Web AI dengan WebGL, WebAssembly, dan WebGPU yang komprehensif operator backend yang dapat digunakan dalam browser dengan cepat performa".Cara Adobe menggunakan Web ML dengan TensorFlow.js guna meningkatkan kualitas Photoshop untuk web

Implementasi teknis

Mitra Tokopedia menggunakan MediaPipe dan TensorFlow Library Deteksi Wajah, sebuah paket yang menyediakan model untuk menjalankan deteksi wajah secara {i>real-time<i}. Secara khusus, opsi MediaPipeFaceDetector-TFJS yang disediakan di library ini, yang menerapkan runtime tfjs digunakan untuk solusi ini.

Sebelum masuk ke implementasi, rangkuman singkat tentang MediaPipe. MediaPipe memungkinkan Anda membangun dan men-deploy solusi ML di perangkat di perangkat seluler (Android, iOS), web, desktop, perangkat edge, dan IoT.

Ada 14 solusi berbeda yang ditawarkan oleh MediaPipe pada saat penulisan postingan ini. Anda dapat menggunakan Runtime mediapipe atau tfjs. Runtime tfjs dibuat dengan JavaScript dan menyediakan paket JavaScript yang dapat diunduh secara eksternal oleh web aplikasi. Ini berbeda dengan runtime mediapipe, yang dibuat dengan C++ dan dikompilasi ke modul WebAssembly. Perbedaan utamanya adalah kinerja, kemampuan debug, dan pemaketan. Paket JavaScript dapat digabungkan dengan paket klasik seperti webpack. Sebaliknya, modul Wasm adalah modul yang lebih besar dan terpisah resource biner (yang dimitigasi dengan tidak menjadi dependensi waktu pemuatan) dan memerlukan Alur kerja Proses debug Wasm. Namun, dijalankan lebih cepat untuk membantu memenuhi persyaratan teknis dan kinerja.

Diagram cara kerja model MediaPipe dan TensorFlow untuk runtime yang berbeda, menggunakan FaceDeteksi sebagai contoh.
Ilustrasi umum tentang cara kerja model MediaPipe dan TensorFlow untuk berbagai runtime, menggunakan FaceDeteksi sebagai contoh

Kembali ke implementasi Tokopedia, langkah pertama adalah model seperti berikut. Saat pengguna mengupload foto, HTMLImageElement akan diteruskan sebagai input ke detektor.

// 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);

Hasil daftar wajah berisi wajah yang terdeteksi untuk setiap wajah dalam gambar. Jika model tidak dapat mendeteksi wajah, daftar ini akan kosong. Untuk setiap wajah, terdapat kotak pembatas wajah yang terdeteksi, serta array dari enam titik kunci untuk wajah yang terdeteksi. Hal ini mencakup fitur seperti mata, hidung, dan mulut. Setiap keypoint berisi x dan y, serta nama.

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

box mewakili kotak pembatas wajah dalam ruang piksel gambar, dengan xMin, xMax yang menunjukkan batas x, yMin, yMax yang menunjukkan batas y, dan width, height adalah dimensi kotak pembatas. Untuk keypoints, x, dan y mewakili posisi keypoint sebenarnya pada gambar ruang piksel. name menyediakan label untuk keypoint, yaitu 'rightEye', 'leftEye', 'noseTip', 'mouthCenter', 'rightEarTragion', dan 'leftEarTragion'. Seperti yang disebutkan di awal postingan ini, penjual harus mengupload Tanda pengenal Nasional dan selfie dengan tanda pengenal untuk melengkapi penjual verifikasi. Output model ini kemudian digunakan untuk memeriksa kriteria penerimaan—yaitu memiliki kecocokan enam poin utama yang disebutkan sebelumnya agar dianggap valid Kartu Identitas dan foto selfie.

Setelah berhasil diverifikasi, informasi penjual yang relevan diteruskan ke backend. Jika verifikasi gagal, sales rep akan menerima pesan kegagalan dan untuk dicoba lagi. Tidak ada informasi yang akan dikirim ke backend.

Diagram halaman Mitra KYC, model TensorFlow.js, dan server yang berinteraksi satu sama lain.
Cara halaman KYC Mitra, model TensorFlow.js, dan server berinteraksi satu sama lain

Pertimbangan performa untuk perangkat kelas bawah

Paket ini hanya berukuran 24,8 KB (diminifikasi dan di-gzip), yang tidak secara signifikan mempengaruhi waktu download. Namun, untuk perangkat kelas bawah, dan pemrosesan runtime membutuhkan waktu lama. Logika tambahan telah ditambahkan untuk memeriksa RAM perangkat dan CPU sebelum meneruskan dua gambar ke tampilan machine learning model deteksi Anda.

Jika perangkat memiliki RAM lebih dari 4GB, koneksi jaringan lebih besar dari 4G, dan CPU dengan lebih dari 6 core, gambar diteruskan ke model di perangkat untuk verifikasi wajah. Jika persyaratan ini tidak terpenuhi, dilewati dan gambar dikirim langsung ke server untuk verifikasi menggunakan pendekatan hibrida untuk melayani perangkat yang lebih lama ini. Seiring waktu, lebih perangkat itu akan dapat memindahkan komputasi dari server saat perangkat keras terus berkembang.

Dampak

Berkat integrasi ML, Tokopedia berhasil mengatasi masalah rasio penolakan dan melihat hasil berikut:

  • Rasio penolakan menurun lebih dari 20%.
  • Jumlah persetujuan manual menurun hampir 70%.

Hal ini tidak hanya menciptakan pengalaman pengguna yang lebih lancar bagi penjual, tetapi juga mengurangi biaya operasional tim Tokopedia.

Kesimpulan

Secara keseluruhan, hasil studi kasus ini menunjukkan bahwa untuk kasus penggunaan yang tepat, solusi ML pada perangkat di web dapat bermanfaat dalam meningkatkan kualitas pengalaman dan efektivitas fitur, serta menciptakan penghematan biaya dan manfaat bisnis lainnya.

Coba sendiri fitur Deteksi Wajah MediaPipe menggunakan MediaPipe Studio dan contoh kode untuk Pendeteksi Wajah MediaPipe untuk web.

Jika Anda tertarik untuk memperluas kemampuan aplikasi web Anda dengan ML di perangkat, lihat referensi berikut: