Tokopedia là một công ty công nghệ của Indonesia sở hữu một trong những trang web thương mại điện tử lớn nhất, với hơn 40 sản phẩm kỹ thuật số và hơn 14 triệu người bán đã đăng ký trên nền tảng của họ.
Mitra Tokopedia, thuộc ngành dọc kinh doanh của Tokopedia, là một ứng dụng web giúp các chủ doanh nghiệp nhỏ bán các sản phẩm kỹ thuật số như phiếu thưởng tín dụng và trò chơi, gói dữ liệu, mã thông báo điện, hoá đơn chăm sóc sức khoẻ quốc gia và các sản phẩm khác. Trang web là một trong những kênh chính của người bán Mitra Tokopedia ở hơn 700 thành phố, vì vậy, bạn cần đảm bảo trải nghiệm người dùng diễn ra suôn sẻ.
Một bước quan trọng trong quy trình tham gia là yêu cầu những người bán này xác minh danh tính của họ. Người bán phải tải giấy tờ tuỳ thân của họ lên cũng như ảnh chân dung tự chụp cùng với giấy tờ tuỳ thân để hoàn tất quy trình xác minh người bán. Đây được gọi là quy trình Xác minh danh tính khách hàng (KYC).
Bằng cách thêm các tính năng Học máy vào quy trình KYC quan trọng này trong ứng dụng web, Mitra Tokopedia đã có thể mang lại trải nghiệm tốt hơn cho người dùng, giảm hơn 20% số lượt xác minh không thành công. Họ cũng tiết kiệm được chi phí hoạt động bằng cách giảm gần 70% số lượt phê duyệt thủ công.
Thách thức
Hầu hết dữ liệu KYC đều bị từ chối, tạo ra hàng nghìn phiếu yêu cầu hỗ trợ mỗi tuần cho nhóm vận hành để xác minh thủ công. Điều này không chỉ gây ra chi phí vận hành cao mà còn khiến người dùng có trải nghiệm không tốt với những người bán bị trì hoãn quy trình xác minh. Lý do lớn nhất khiến mặt hàng bị từ chối là người bán không tải ảnh chân dung tự chụp có thẻ căn cước lên một cách chính xác. Mitra Tokopedia muốn giải quyết vấn đề này trên quy mô lớn bằng cách sử dụng các tính năng web hiện đại.
Giải pháp
Nhóm Tokopedia đã quyết định sử dụng công nghệ học máy với TensorFlow.js để giải quyết vấn đề này ngay từ bước đầu tiên của quy trình KYC (xác minh danh tính) – khi người dùng tải hình ảnh lên. Họ đã sử dụng thư viện Phát hiện khuôn mặt của MediaPipe và TensorFlow để phát hiện khuôn mặt của người bán bằng 6 điểm chính khi người bán tải thẻ căn cước và ảnh chân dung tự chụp lên. Sau đó, đầu ra của mô hình được dùng để kiểm tra theo tiêu chí chấp nhận. Sau khi xác minh thành công, thông tin sẽ được gửi đến phần phụ trợ. Nếu xác minh không thành công, người bán sẽ nhận được thông báo lỗi và có thể thử lại. Một phương pháp kết hợp đã được sử dụng trong đó mô hình thực hiện suy luận trên thiết bị hoặc phía máy chủ tuỳ thuộc vào thông số kỹ thuật của điện thoại. Thiết bị cấp thấp sẽ thực hiện suy luận trên máy chủ.
Việc sử dụng mô hình học máy ngay từ đầu quy trình KYC cho phép họ:
- Cải thiện tỷ lệ từ chối trong quy trình KYC.
- Cảnh báo người dùng về khả năng hình ảnh của họ bị từ chối, dựa trên chất lượng do mô hình đánh giá.
Tại sao chọn công nghệ học máy thay vì các giải pháp khác?
Công nghệ học máy có thể tự động hoá các công việc lặp đi lặp lại, tốn thời gian hoặc không cần thiết khi thực hiện theo cách thủ công. Trong trường hợp của Tokopedia, việc tối ưu hoá giải pháp không sử dụng công nghệ học máy hiện tại không mang lại kết quả đáng kể, trong khi giải pháp sử dụng công nghệ học máy có thể giảm đáng kể tải cho nhóm vận hành, những người phải xử lý hàng nghìn yêu cầu phê duyệt theo cách thủ công mỗi tuần. Với giải pháp học máy, bạn có thể kiểm tra hình ảnh gần như ngay lập tức, mang lại trải nghiệm tốt hơn cho người dùng và cải thiện hiệu quả hoạt động. Hãy đọc thêm về cách xác định khung hình vấn đề để xác định xem công nghệ học máy có phải là một giải pháp phù hợp cho vấn đề của bạn hay không.
Những điều cần cân nhắc khi chọn mô hình
Chúng tôi đã cân nhắc các yếu tố sau khi chọn mô hình máy học.
Chi phí
Họ đã đánh giá chi phí tổng thể của việc sử dụng mô hình này. Vì TensorFlow.js là một gói nguồn mở do Google duy trì tốt, nên chúng tôi tiết kiệm được chi phí cấp phép và bảo trì. Một yếu tố khác cần cân nhắc là chi phí suy luận. Việc có thể chạy quy trình suy luận ở phía máy khách sẽ giúp tiết kiệm rất nhiều chi phí so với việc xử lý quy trình này ở phía máy chủ bằng các GPU đắt tiền, đặc biệt là nếu dữ liệu không hợp lệ và không thể sử dụng.
Khả năng mở rộng quy mô
Họ đã xem xét khả năng mở rộng của mô hình và công nghệ. Liệu mô hình này có thể xử lý sự gia tăng về dữ liệu và độ phức tạp của mô hình khi dự án của chúng ta phát triển không? Có thể mở rộng để phục vụ các dự án hoặc trường hợp sử dụng khác không? Việc xử lý trên thiết bị sẽ giúp ích vì mô hình có thể được lưu trữ trên CDN và phân phối đến phía máy khách, rất dễ mở rộng quy mô.
Hiệu suất
Họ đã xem xét kích thước của thư viện (tính bằng KB) và độ trễ của quá trình thời gian chạy. Phần lớn cơ sở người dùng của Mitra Tokopedia sử dụng các thiết bị tầm trung đến thấp với tốc độ và khả năng kết nối Internet ở mức trung bình. Do đó, hiệu suất về tải xuống và thời gian chạy (tức là tốc độ tạo đầu ra của mô hình) là ưu tiên hàng đầu để đáp ứng nhu cầu cụ thể của họ và đảm bảo trải nghiệm người dùng tuyệt vời.
Lưu ý khác
Tuân thủ quy định: Họ phải đảm bảo rằng thư viện được chọn tuân thủ các quy định hiện hành về quyền riêng tư và bảo vệ dữ liệu.
Bộ kỹ năng: Họ đánh giá kiến thức chuyên môn và bộ kỹ năng của nhóm. Một số khung và thư viện máy học có thể yêu cầu các ngôn ngữ lập trình hoặc chuyên môn cụ thể trong một lĩnh vực cụ thể. Bằng cách xem xét các yếu tố này, họ đã đưa ra quyết định sáng suốt khi chọn mô hình phù hợp cho dự án học máy của mình.
Công nghệ đã chọn
TensorFlow.js đã đáp ứng nhu cầu của họ sau khi xem xét các yếu tố này. Ứng dụng này có thể chạy hoàn toàn trên thiết bị bằng cách sử dụng phần phụ trợ WebGL để sử dụng GPU của thiết bị. Việc chạy mô hình trên thiết bị sẽ giúp phản hồi người dùng nhanh hơn do độ trễ của máy chủ giảm và giảm chi phí điện toán máy chủ. Hãy đọc thêm về công nghệ học máy trên thiết bị trong bài viết Ưu điểm và hạn chế của công nghệ học máy trên thiết bị.
"TensorFlow.js là một thư viện máy học nguồn mở của Google dành cho các nhà phát triển JavaScript, có thể chạy phía máy khách trong trình duyệt. Đây là lựa chọn chín muồi nhất cho AI trên web với khả năng hỗ trợ trình điều khiển phụ trợ WebGL, WebAssembly và WebGPU toàn diện có thể được sử dụng trong trình duyệt với hiệu suất nhanh." – Cách Adobe sử dụng công nghệ học máy trên web với TensorFlow.js để nâng cao Photoshop cho web
Triển khai kỹ thuật
Mitra Tokopedia đã sử dụng
thư viện Phát hiện khuôn mặt của MediaPipe và TensorFlow,
một gói cung cấp các mô hình để chạy tính năng phát hiện khuôn mặt theo thời gian thực.
Cụ thể, mô hình MediaPipeFaceDetector-TFJS được cung cấp trong thư viện này, triển khai thời gian chạy tfjs
được dùng cho giải pháp này.
Trước khi đi sâu vào cách triển khai, hãy tóm tắt ngắn gọn về MediaPipe. MediaPipe cho phép bạn xây dựng và triển khai các giải pháp học máy trên thiết bị trên thiết bị di động (Android, iOS), web, máy tính, thiết bị cạnh và IoT.
MediaPipe cung cấp 14 giải pháp khác nhau tại thời điểm viết bài đăng này. Bạn có thể sử dụng môi trường thời gian chạy mediapipe
hoặc tfjs
. Môi trường thời gian chạy tfjs
được tạo bằng JavaScript và cung cấp một gói JavaScript mà ứng dụng web có thể tải xuống từ bên ngoài. Điều này khác với môi trường thời gian chạy mediapipe
được tạo bằng C++ và được biên dịch thành mô-đun WebAssembly. Điểm khác biệt chính là hiệu suất, khả năng gỡ lỗi và tính năng gói. Gói JavaScript có thể được kết hợp với các gói cổ điển như gói web. Ngược lại, mô-đun Wasm là một tài nguyên nhị phân lớn hơn và riêng biệt (được giảm thiểu bằng cách không phải là phần phụ thuộc thời gian tải) và yêu cầu quy trình gỡ lỗi Wasm khác. Tuy nhiên, mã này thực thi nhanh hơn để đáp ứng các yêu cầu về kỹ thuật và hiệu suất.
Quay lại cách triển khai của Tokopedia, bước đầu tiên là khởi chạy mô hình như sau. Khi người dùng tải ảnh lên, HTMLImageElement
sẽ được truyền vào trình phát hiện dưới dạng dữ liệu đầu vào.
// 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);
Kết quả của danh sách khuôn mặt chứa các khuôn mặt được phát hiện cho từng khuôn mặt trong hình ảnh. Nếu không phát hiện được khuôn mặt nào, danh sách sẽ trống. Đối với mỗi khuôn mặt, tệp này chứa một hộp giới hạn của khuôn mặt được phát hiện, cũng như một mảng gồm 6 điểm chính cho khuôn mặt được phát hiện. Trong đó có các đặc điểm như mắt, mũi và miệng. Mỗi điểm khoá chứa x và y, cũng như một tên.
[
{
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
biểu thị hộp giới hạn của khuôn mặt trong không gian pixel của hình ảnh, trong đó xMin
, xMax
biểu thị giới hạn x, yMin
, yMax
biểu thị giới hạn y và width
, height
là kích thước của hộp giới hạn.
Đối với keypoints
, x
và y
biểu thị vị trí điểm chính thực tế trong không gian pixel của hình ảnh.
name
cung cấp nhãn cho điểm khoá, lần lượt là 'rightEye'
, 'leftEye'
, 'noseTip'
, 'mouthCenter'
, 'rightEarTragion'
và 'leftEarTragion'
.
Như đã đề cập ở đầu bài đăng này, người bán phải tải giấy tờ tuỳ thân và ảnh chân dung tự chụp cùng giấy tờ tuỳ thân lên để hoàn tất quy trình xác minh người bán.
Sau đó, kết quả của mô hình được dùng để kiểm tra theo tiêu chí chấp nhận, tức là phải khớp với 6 điểm chính được đề cập trước đó để được coi là Giấy tờ tuỳ thân và ảnh chân dung tự chụp hợp lệ.
Sau khi xác minh thành công, thông tin liên quan của người bán sẽ được chuyển đến phần phụ trợ. Nếu xác minh không thành công, người bán sẽ nhận được thông báo không thành công và có thể thử lại. Hệ thống sẽ không gửi thông tin nào đến phần phụ trợ.
Những điểm cần cân nhắc về hiệu suất cho thiết bị cấp thấp
Gói này chỉ có 24,8 KB (đã rút gọn và nén bằng gzip), không ảnh hưởng đáng kể đến thời gian tải xuống. Tuy nhiên, đối với các thiết bị có cấu hình rất thấp, quá trình xử lý thời gian chạy sẽ mất nhiều thời gian. Chúng tôi đã thêm logic bổ sung để kiểm tra RAM và CPU của thiết bị trước khi truyền hai hình ảnh này đến mô hình phát hiện khuôn mặt bằng công nghệ học máy.
Nếu thiết bị có RAM trên 4 GB, kết nối mạng lớn hơn 4G và CPU có hơn 6 lõi, thì hình ảnh sẽ được chuyển đến mô hình trên thiết bị để xác minh khuôn mặt. Nếu không đáp ứng các yêu cầu này, thì mô hình trên thiết bị sẽ bị bỏ qua và hình ảnh sẽ được gửi trực tiếp đến máy chủ để xác minh bằng phương pháp kết hợp dành cho các thiết bị cũ này. Theo thời gian, sẽ có thêm nhiều thiết bị có thể giảm tải điện toán từ máy chủ khi phần cứng tiếp tục phát triển.
Tác động
Nhờ tích hợp công nghệ học máy, Tokopedia đã giải quyết thành công tỷ lệ từ chối cao và đạt được những kết quả sau:
- Tỷ lệ từ chối giảm hơn 20%.
- Số lượt phê duyệt thủ công giảm gần 70%.
Điều này không chỉ mang lại trải nghiệm người dùng mượt mà hơn cho người bán mà còn giảm chi phí vận hành cho nhóm Tokopedia.
Kết luận
Nhìn chung, kết quả của nghiên cứu điển hình này cho thấy rằng đối với các trường hợp sử dụng phù hợp, các giải pháp học máy trên thiết bị trên web có thể có giá trị trong việc cải thiện trải nghiệm người dùng và hiệu quả của các tính năng, cũng như tiết kiệm chi phí và mang lại nhiều lợi ích khác cho doanh nghiệp.
Hãy tự mình dùng thử tính năng Phát hiện khuôn mặt MediaPipe bằng MediaPipe Studio và mã mẫu dành cho Trình phát hiện khuôn mặt MediaPipe cho web.
Nếu bạn muốn mở rộng chức năng của ứng dụng web bằng công nghệ học máy trên thiết bị, hãy xem các tài nguyên sau: