Tokopedia adalah perusahaan teknologi Indonesia dengan salah satu marketplace e-commerce terbesar, yang menghosting lebih dari 40 produk digital dan lebih dari 14 juta penjual terdaftar di platformnya.
Mitra Tokopedia, bagian dari vertikal bisnis Tokopedia, adalah aplikasi web yang membantu pemilik bisnis kecil menjual produk digital seperti pulsa dan voucher game, paket data, token listrik, tagihan layanan kesehatan nasional, dan lainnya. Situs ini adalah salah satu saluran utama bagi penjual Mitra Tokopedia di lebih dari 700 kota, sehingga sangat penting untuk memastikan pengalaman pengguna yang lancar.
Langkah penting dalam proses orientasi mengharuskan penjual ini memverifikasi identitas mereka. Penjual harus mengupload Tanda Pengenal Nasional serta selfie dengan tanda pengenal tersebut untuk menyelesaikan verifikasi penjual. Hal ini disebut sebagai proses Kenali Pelanggan Anda (KYC).
Dengan menambahkan kemampuan Machine Learning ke proses KYC yang penting ini dalam aplikasi web mereka, Mitra Tokopedia dapat mencapai pengalaman pengguna yang lebih baik dengan pengurangan kegagalan verifikasi lebih dari 20%. Mereka juga menghemat biaya operasional dengan mengurangi persetujuan manual hampir 70%.
Tantangan
Sebagian besar data KYC ditolak, sehingga menghasilkan ribuan tiket per minggu ke tim operasi untuk verifikasi manual. Hal ini tidak hanya menyebabkan biaya operasional yang tinggi, tetapi juga mengakibatkan pengalaman pengguna yang buruk bagi penjual, yang proses verifikasinya tertunda. Alasan terbesar penolakan adalah penjual tidak mengupload selfie dengan kartu identitas dengan benar. Mitra Tokopedia ingin menyelesaikan masalah ini secara skalabel menggunakan kemampuan web modern.
Solusi
Tim di Tokopedia memutuskan untuk menggunakan ML dengan TensorFlow.js guna menyelesaikan masalah ini pada langkah pertama proses KYC—saat pengguna mengupload gambar. Mereka menggunakan MediaPipe dan library Deteksi Wajah TensorFlow untuk mendeteksi wajah penjual dengan enam titik utama saat penjual mengupload kartu identitas dan gambar selfie. Output model kemudian digunakan untuk memeriksa kriteria penerimaan mereka. Setelah verifikasi berhasil, informasi akan dikirim ke backend. Jika verifikasi gagal, penjual akan menerima pesan error dan opsi untuk mencoba lagi. Pendekatan hibrid digunakan, yaitu model melakukan inferensi di perangkat atau di sisi server, bergantung pada spesifikasi ponsel. Perangkat kelas bawah akan melakukan inferensi di server.
Menggunakan model ML di awal proses KYC memungkinkan mereka:
- Meningkatkan rasio penolakan dalam proses KYC.
- Peringatkan pengguna tentang kemungkinan penolakan gambar mereka, berdasarkan kualitas yang dinilai oleh model.
Mengapa memilih ML dibandingkan solusi lainnya?
ML dapat mengotomatiskan tugas berulang yang memakan waktu atau tidak praktis jika dilakukan secara manual. Dalam kasus Tokopedia, mengoptimalkan solusi non-ML saat ini tidak dapat memberikan hasil yang signifikan, sedangkan solusi ML dapat mengurangi beban tim operasi secara signifikan yang harus memproses ribuan persetujuan secara manual setiap minggu. Dengan solusi ML, pemeriksaan gambar dapat dilakukan hampir seketika, sehingga memberikan pengalaman pengguna yang lebih baik dan meningkatkan efisiensi operasional. Baca selengkapnya tentang framing masalah untuk menentukan apakah ML adalah solusi yang sesuai untuk masalah Anda.
Pertimbangan saat memilih model
Faktor-faktor berikut dipertimbangkan saat memilih model ML.
Biaya
Mereka mengevaluasi biaya keseluruhan penggunaan model. Karena TensorFlow.js adalah paket open source yang dikelola dengan baik oleh Google, kami menghemat biaya lisensi dan pemeliharaan. Pertimbangan tambahan adalah biaya inferensi. Kemampuan untuk menjalankan inferensi di sisi klien menghemat banyak biaya dibandingkan dengan memprosesnya di sisi server dengan GPU yang mahal, terutama jika data ternyata tidak valid dan tidak dapat digunakan.
Skalabilitas
Mereka mempertimbangkan skalabilitas model dan teknologi. Apakah alat ini mampu menangani pertumbuhan data dan kompleksitas model seiring berkembangnya project kita? Dapatkah model ini diperluas untuk mengakomodasi project atau kasus penggunaan lain? Pemrosesan di perangkat membantu karena model dapat dihosting di CDN dan dikirim ke sisi klien, yang sangat skalabel.
Performa
Mereka mempertimbangkan ukuran library (dalam KB) dan latensi proses runtime. Sebagian besar basis pengguna Mitra Tokopedia memiliki perangkat kelas menengah hingga bawah dengan kecepatan internet dan konektivitas sedang. Oleh karena itu, performa dalam hal download dan runtime (yaitu seberapa cepat model dapat menghasilkan output) adalah prioritas utama untuk memenuhi kebutuhan spesifik mereka dan memastikan pengalaman pengguna yang luar biasa.
Pertimbangan lainnya
Kepatuhan terhadap peraturan: Mereka harus memastikan bahwa library yang dipilih mematuhi peraturan perlindungan data dan privasi yang relevan.
Keterampilan: Mereka mengevaluasi keahlian dan keterampilan tim mereka. Beberapa framework dan library ML mungkin memerlukan bahasa pemrograman atau keahlian khusus di bidang tertentu. Dengan mempertimbangkan faktor-faktor ini, mereka membuat keputusan yang tepat saat memilih model yang tepat untuk project machine learning mereka.
Teknologi sudah dipilih
TensorFlow.js memenuhi kebutuhan mereka, setelah mempertimbangkan faktor-faktor ini. Model 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 yang lebih rendah dan mengurangi biaya komputasi server. Baca selengkapnya tentang ML di perangkat dalam artikel Keunggulan dan batasan ML di perangkat.
"TensorFlow.js adalah library machine learning open source dari Google yang ditujukan untuk developer JavaScript yang dapat berjalan di sisi klien di browser. TensorFlow.js adalah opsi paling matang untuk AI Web dengan dukungan operator backend WebGL, WebAssembly, dan WebGPU komprehensif yang dapat digunakan dalam browser dengan performa cepat."—Cara Adobe menggunakan Web ML dengan TensorFlow.js untuk meningkatkan kualitas Photoshop untuk web
Implementasi teknis
Mitra Tokopedia menggunakan library Deteksi Wajah MediaPipe dan TensorFlow, paket yang menyediakan model untuk menjalankan deteksi wajah real-time.
Secara khusus, model
MediaPipeFaceDetector-TFJS
yang disediakan dalam library ini, yang mengimplementasikan runtime tfjs, digunakan untuk
solusi ini.
Sebelum membahas implementasinya, berikut ringkasan singkat tentang MediaPipe. MediaPipe memungkinkan Anda membangun dan men-deploy solusi ML di perangkat di seluruh perangkat seluler (Android, iOS), web, desktop, perangkat edge, dan IoT.
Ada
14 solusi berbeda
yang ditawarkan oleh MediaPipe pada saat postingan ini ditulis. Anda dapat menggunakan runtime mediapipe atau tfjs. Runtime tfjs dibuat dengan JavaScript dan menyediakan paket JavaScript yang dapat didownload secara eksternal oleh aplikasi web. Hal ini berbeda dengan runtime mediapipe, yang dibuat dengan
C++ dan dikompilasi ke modul WebAssembly. Perbedaan utamanya adalah performa,
kemampuan debug, dan penggabungan. Paket JavaScript dapat dipaketkan dengan pemaket klasik seperti webpack. Sebaliknya, modul Wasm adalah resource biner yang lebih besar dan terpisah (yang dimitigasi dengan tidak menjadi dependensi waktu pemuatan) dan memerlukan alur kerja proses debug Wasm yang berbeda. Namun,
eksekusinya lebih cepat untuk membantu memenuhi persyaratan teknis dan performa.
Kembali ke implementasi Tokopedia, langkah pertama adalah melakukan inisialisasi
model sebagai 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 akan kosong. Untuk setiap wajah, objek ini berisi kotak pembatas wajah yang terdeteksi, serta array yang berisi enam titik utama untuk wajah yang terdeteksi. Hal ini mencakup fitur seperti mata, hidung, dan mulut. Setiap titik utama 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 menunjukkan batas x, yMin, yMax menunjukkan batas y, dan
width, height adalah dimensi kotak pembatas.
Untuk keypoints, x dan y mewakili posisi titik tanda sebenarnya dalam ruang piksel gambar.
name memberikan label untuk keypoint, yaitu masing-masing '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 tersebut untuk menyelesaikan verifikasi
penjual.
Output model kemudian digunakan untuk memeriksa kriteria penerimaan—yaitu
memiliki kecocokan dari enam titik utama yang disebutkan sebelumnya untuk dianggap sebagai
Kartu Identitas dan gambar selfie yang valid.
Setelah verifikasi berhasil, informasi penjual yang relevan akan diteruskan ke backend. Jika verifikasi gagal, penjual akan menerima pesan kegagalan dan opsi untuk mencoba lagi. Tidak ada informasi yang akan dikirim ke backend.
Pertimbangan performa untuk perangkat kelas bawah
Paket ini hanya berukuran 24,8 KB (diminimalkan dan di-gzip), yang tidak berdampak signifikan pada waktu download. Namun, untuk perangkat kelas bawah, pemrosesan runtime memerlukan waktu yang lama. Logika tambahan ditambahkan untuk memeriksa RAM dan CPU Perangkat sebelum meneruskan dua gambar ke model deteksi wajah machine learning.
Jika perangkat memiliki RAM lebih dari 4 GB, koneksi jaringan lebih dari 4G, dan CPU dengan lebih dari 6 core, gambar akan diteruskan ke model di perangkat untuk verifikasi wajah. Jika persyaratan ini tidak terpenuhi, model di perangkat akan dilewati dan gambar akan dikirim langsung ke server untuk verifikasi menggunakan pendekatan hibrid untuk mengakomodasi perangkat lama ini. Seiring waktu, lebih banyak perangkat akan dapat mengalihkan komputasi dari server seiring dengan terus berkembangnya hardware.
Dampak
Berkat integrasi ML, Tokopedia berhasil mengatasi tingginya tingkat penolakan dan memperoleh 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 bagi tim Tokopedia.
Kesimpulan
Secara keseluruhan, hasil studi kasus ini menunjukkan bahwa untuk kasus penggunaan yang tepat, solusi ML di perangkat di web dapat bermanfaat dalam meningkatkan pengalaman pengguna dan efektivitas fitur serta menciptakan penghematan biaya dan manfaat bisnis lainnya.
Coba sendiri fitur Deteksi Wajah MediaPipe menggunakan MediaPipe Studio dan contoh kode untuk Detektor Wajah MediaPipe untuk web.
Jika Anda tertarik untuk memperluas kemampuan aplikasi web Anda sendiri dengan ML di perangkat, lihat referensi berikut: