ML Kit: thư viện và ML cho Android và iOS

Tác giả: IT Sectr Đã đăng: 2026-07-18 Thời gian đọc: 10 phút

ML Kit là SDK di động của Google để tích hợp các mô hình ML có sẵn vào ứng dụng Android và iOS. ML Kit cung cấp API cho nhận dạng văn bản, phát hiện khuôn mặt, quét mã vạch, nhận dạng đối tượng, dịch văn bản, phát hiện tư thế và phân đoạn hình ảnh — tất cả các mô hình đều hoạt động trên thiết bị (on-device) mà không cần kết nối máy chủ. Theo Google ML Kit, 2025, thư viện được sử dụng trong hơn 100.000 ứng dụng, xử lý hơn 2 tỷ yêu cầu mỗi ngày

Những điểm chính

  • ML Kit — SDK Google cho các tính năng ML trong ứng dụng di động
  • Trên thiết bị — tất cả mô hình hoạt động cục bộ, không cần internet
  • API sẵn có — văn bản, khuôn mặt, mã vạch, đối tượng, dịch thuật, tư thế
  • Đa nền tảng — hỗ trợ Android và iOS qua API thống nhất
  • Mô hình tùy chỉnh — tải mô hình TFLite của riêng bạn

ML Kit là gì: khả năng và kiến trúc

ML Kit là SDK tương thích Firebase dành cho nền tảng di động cung cấp 14 API ML cho Android và iOS. ML Kit đã thay thế Firebase ML (tên cũ) vào năm 2020 và hiện có sẵn dưới dạng SDK độc lập qua Google Play Services (Android) hoặc CocoaPods/SPM (iOS). Lợi thế chính là tất cả các mô hình đều hoạt động trên thiết bị, đảm bảo quyền riêng tư dữ liệu và hoạt động ngoại tuyến.

Kiến trúc ML Kit được xây dựng xoay quanh hai chế độ: bundled (mô hình được nhúng trong APK/IPA) và downloaded (mô hình được tải xuống qua Google Play Services ở lần gọi đầu tiên). Chế độ bundled khởi động tức thì nhưng tăng kích thước ứng dụng thêm 5–20 MB. Chế độ downloaded tiết kiệm dung lượng nhưng cần internet ở lần khởi chạy đầu tiên. Google khuyên dùng downloaded cho các API không được sử dụng trên mọi màn hình (Object Detection, Pose Detection).

Tùy chỉnh qua TFLite — ML Kit cho phép tải mô hình TensorFlow Lite của riêng bạn qua Custom Model API. Điều này mang lại sự linh hoạt — sử dụng API có sẵn cho các tác vụ tiêu chuẩn và mô hình riêng cho các tác vụ cụ thể. ML Kit cung cấp bộ xử lý Đầu vào/Đầu ra phổ quát hoạt động với ByteBuffer và FloatArray. Theo Google (2025), 40% dự án ML Kit kết hợp API có sẵn và mô hình tùy chỉnh.

kotlin
// Thiết lập ML Kit Text Recognition (Android)
val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)

val image = InputImage.fromBitmap(bitmap)
recognizer.process(image)
    .addOnSuccessListener { result ->
        for (block in result.textBlocks) {
            Log.d("MLKit", block.text)
        }
    }
    .addOnFailureListener { error ->
        // Lỗi xử lý
    }

Firebase vs độc lập — ML Kit có thể được sử dụng với Firebase (chức năng Cloud, Analytics, Crashlytics) hoặc dưới dạng SDK độc lập không cần Firebase. Chế độ độc lập kết nối qua Google Play Services (Android) mà không cần thiết lập tài khoản Firebase. API Cloud có sẵn qua Firebase (Cloud Vision, Natural Language) cho các tác vụ cần mạng nơ-ron trên máy chủ Google — nhưng các tính năng này phải trả phí và không phải on-device.

ML Kit Text Recognition: nhận dạng văn bản

ML Kit Text Recognition — API nhận dạng ký tự quang học (OCR) trên hình ảnh. Hỗ trợ hai chế độ: Latin-based (Latin, Cyrillic, chữ số — 45 ngôn ngữ) và Chinese/Japanese/Korean (CJK — ngôn ngữ biểu ý). Nhận dạng Latin sử dụng mô hình V2 (nhanh hơn) hoặc V1 (độ chính xác cao). V2 cho tốc độ 10–30 ms mỗi khung hình, V1 — 50–100 ms.

Khả năng của Text Recognition bao gồm nhận dạng văn bản in và viết tay, phát hiện hướng văn bản, phát hiện dòng, từ và ký tự, xác định ngôn ngữ văn bản. API trả về cấu trúc: Text → TextBlock → Line → Element (Word/Symbol). Mỗi phần tử có khung bao (bounding box), độ tin cậy và văn bản được nhận dạng. Theo Google (2025), độ chính xác của ML Kit Text Recognition V2 trên chữ Latin là 96%, trên Cyrillic — 91%.

Text Recognition thời gian thực — sử dụng với CameraX hoặc Camera2 cho luồng video. Tạo ImageAnalysis.Analyzer và truyền khung hình đến ML Kit. Để tối ưu hiệu suất, giảm độ phân giải khung hình xuống 480p (640x480) — đây là sự cân bằng tối ưu giữa tốc độ và độ chính xác. ML Kit tự động xử lý xoay hình ảnh, nhưng để có tốc độ tối đa, hãy truyền hình ảnh theo đúng hướng.

kotlin
// Nhận dạng văn bản với CameraX Analyzer
class TextAnalyzer : ImageAnalysis.Analyzer {
    private val recognizer = TextRecognition.getClient(
        TextRecognizerOptions.DEFAULT_OPTIONS
    )

    override fun analyze(image: ImageProxy) {
        val inputImage = InputImage.fromMediaImage(
            image.image, image.imageInfo.rotationDegrees
        )
        recognizer.process(inputImage)
            .addOnSuccessListener { /* text found */ }
            .addOnCompleteListener { image.close() }
    }
}

Tối ưu hóa Text Recognition: sử dụng ImageDecoder để cải thiện nhận dạng hình ảnh mờ hoặc tối. Đối với văn bản in — TextRecognizerOptions.DEFAULT_OPTIONS (mô hình V2). Đối với văn bản viết tay — TextRecognizerOptions.SCRIPT_LATIN (chính xác hơn nhưng chậm hơn). Trong các dự án IT Sectr, chúng tôi sử dụng V2 để nhận dạng tài liệu và mô hình Latin cho séc và biên lai.

ML Kit Face Detection: phát hiện khuôn mặt và đường viền

ML Kit Face Detection — API phát hiện khuôn mặt trong hình ảnh và video. Phát hiện khung bao khuôn mặt, tọa độ mắt, mũi, miệng, tai (468 điểm đường viền) và các biểu cảm cơ bản: cười, miệng mở, mắt nhắm. Face Detection là một trong những API nhanh nhất của ML Kit: 5–15 ms mỗi khung hình tùy thuộc vào số lượng khuôn mặt và điểm đường viền.

Các chế độ Face Detection: chế độ đường viền (468 điểm đường viền khuôn mặt để phủ mặt nạ/bộ lọc chính xác), chế độ phân loại (phát hiện cười, mắt mở), chế độ mốc (điểm chính không có đường viền). Các chế độ được kết hợp trong FaceDetectorOptions. Bật tất cả chế độ làm chậm quá trình phát hiện 2–3 lần — hãy sử dụng bộ tối thiểu cần thiết cho tác vụ của bạn.

Face Detection trong ứng dụng AR — dựa trên các điểm đường viền, ML Kit xây dựng mặt nạ khuôn mặt cho các bộ lọc giống Snapchat. ML Kit trả về 468 điểm với tọa độ x, y, z (z = độ sâu). Các điểm được cập nhật 30–60 lần mỗi giây trên các thiết bị hiện đại. Để phủ AR, hãy sử dụng FaceMeshDetector (phiên bản chuyên dụng) — nó cũng trả về các tam giác lưới để tạo kết cấu.

kotlin
// Phát hiện khuôn mặt với điểm đường viền
val options = FaceDetectorOptions.Builder()
    .setPerformanceMode(FaceDetectorOptions.PerformanceMode.FAST)
    .setContourMode(FaceDetectorOptions.ContourMode.ALL)
    .setClassificationMode(FaceDetectorOptions.ClassificationMode.ALL)
    .build()
val detector = FaceDetection.getClient(options)

detector.process(inputImage)
    .addOnSuccessListener { faces ->
        faces.forEach { face ->
            val bounds = face.boundingBox
            val smileProb = face.smilingProbability
        }
    }

Giới hạn của Face Detection: API không nhận dạng khuôn mặt của ai (nhận dạng khuôn mặt) — chỉ phát hiện khuôn mặt. Để nhận dạng danh tính, hãy sử dụng FaceNet hoặc ArcFace trên mô hình TFLite tùy chỉnh. ML Kit hoạt động chính xác với khuôn mặt ở góc lên đến 45°, có kính và khẩu trang một phần. Đối với góc nghiêng (90°), độ chính xác giảm xuống 40–60%.

ML Kit Barcode Scanning: đọc tất cả định dạng mã

ML Kit Barcode Scanning — API đọc và giải mã mã vạch 1D (EAN, UPC, Code 128) và 2D (QR, Data Matrix, PDF417). Barcode Scanning phát hiện mã trong hình ảnh — không giống như ZXing yêu cầu mã phải chiếm gần như toàn bộ khung hình. ML Kit phát hiện mã ở mọi kích thước và hướng, bao gồm nhiều mã trong một khung hình (chế độ đa mã vạch).

Định dạng được hỗ trợ: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar, QR, Data Matrix, PDF417, Aztec. ML Kit tự động xác định định dạng — không cần chỉ định loại mã. Trong sản xuất, hãy sử dụng setBarcodeFormats() để giới hạn định dạng được hỗ trợ — điều này tăng tốc quét 30–50% bằng cách loại trừ các thuật toán giải mã không cần thiết.

Barcode Scanning thời gian thực — tương tự như Text Recognition, tích hợp với CameraX. ML Kit xử lý khung hình ở tốc độ lên đến 60 FPS. Để có tốc độ tối đa, hãy bật setPerformanceMode(PerformanceMode.FAST). ML Kit Barcode Scanning nhanh hơn ZXing 2–3 lần và chính xác hơn trong việc phát hiện mã bị mờ hoặc bị che một phần. Theo Google (2025), ML Kit Barcode Scanning có độ chính xác 98.5% dưới ánh sáng tiêu chuẩn.

kotlin
// Quét mã vạch với bộ lọc định dạng
val options = BarcodeScannerOptions.Builder()
    .setBarcodeFormats(Barcode.FORMAT_QR_CODE,
        Barcode.FORMAT_EAN_13)
    .build()
val scanner = BarcodeScanning.getClient(options)

scanner.process(inputImage)
    .addOnSuccessListener { barcodes ->
        barcodes.forEach { barcode ->
            val value = barcode.rawValue
            val type = barcode.format
        }
    }

So sánh với ZXing: ML Kit nhanh hơn, chính xác hơn và dễ tích hợp hơn. ZXing là mã nguồn mở, hoạt động hoàn toàn ngoại tuyến, không yêu cầu Google Play Services. ML Kit yêu cầu Google Play Services (Android) hoặc CocoaPods (iOS). Đối với ứng dụng chạy trên thiết bị không có Google (Huawei, Amazon Fire), hãy sử dụng ZXing dự phòng. Đối với các thiết bị khác — ML Kit, vì nó cung cấp UX tốt hơn nhờ phát hiện đa mã.

Object Detection và Pose Detection trong ML Kit

ML Kit Object Detection — API phát hiện và theo dõi đối tượng trong hình ảnh. Phát hiện đối tượng từ hơn 1000 danh mục (lớp ImageNet) — người, động vật, phương tiện, đồ gia dụng. Object Detection hoạt động ở hai chế độ: single-image (ảnh đơn) và streaming (luồng video có theo dõi). Chế độ streaming theo dõi đối tượng giữa các khung hình, gán cho mỗi đối tượng một ID theo dõi duy nhất.

Pose Detection — API xác định tư thế con người qua 33 điểm chính (bộ xương): đầu, vai, khuỷu tay, cổ tay, hông, đầu gối, bàn chân. Xác định tọa độ (x, y, z) và độ tin cậy của mỗi điểm. Pose Detection được sử dụng trong máy theo dõi thể dục (đếm số lần lặp, kiểm tra tư thế), ứng dụng AR (hình đại diện bắt chước chuyển động) và phân tích thể thao. Tốc độ — 10–30 ms mỗi khung hình tùy theo số lượng người.

Object Tracking — ML Kit Object Detection với theo dõi giữa các khung hình sử dụng bộ theo dõi dựa trên Optical Flow. Khi một đối tượng được phát hiện, bộ theo dõi sẽ bám theo mà không cần phát hiện lại, tiết kiệm CPU/GPU. Nếu bộ theo dõi mất đối tượng (chuyển động nhanh, bị che khuất), ML Kit khởi động lại quá trình phát hiện. Theo Google (2025), bộ theo dõi giữ đối tượng trong 95% khung hình ở tốc độ lên đến 30 km/h.

kotlin
// Phát hiện tư thế (bộ xương người)
val poseDetector = PoseDetection.getClient(
    PoseDetectorOptions.Builder()
        .setDetectorMode(PoseDetectorOptions.STREAM_MODE)
        .build()
)

poseDetector.process(inputImage)
    .addOnSuccessListener { pose ->
        pose.allPoseLandmarks.forEach { landmark ->
            val type = landmark.landmarkType // VAI_TRÁI, KHUỶU_TAY_PHẢI...
            val position = landmark.position3D
        }
    }

Selfie Segmentation — API phân đoạn người khỏi hình ảnh (tách người khỏi nền). Trả về mặt nạ độ tin cậy cho mỗi pixel. Selfie Segmentation được sử dụng để làm mờ hoặc thay thế nền trong cuộc gọi video, trình chỉnh sửa ảnh và ứng dụng AR. Mặt nạ được trả về dưới dạng UInt8Array có kích thước bằng ảnh gốc — mỗi pixel chứa giá trị từ 0.0 (nền) đến 1.0 (người).

Mô hình TFLite tùy chỉnh trong ML Kit

Custom Model API — khả năng tải và chạy các mô hình TensorFlow Lite của riêng bạn qua giao diện ML Kit. ML Kit cung cấp API Đầu vào/Đầu ra thống nhất: ByteBuffer làm đầu vào, FloatArray/TensorImage làm đầu ra. Điều này cho phép tận dụng lợi thế của ML Kit (quản lý mô hình, xử lý hình ảnh, tích hợp CameraX) với các mô hình tùy chỉnh cho nhận dạng khuôn mặt, phân loại đối tượng, NLP và hơn thế nữa.

Tải mô hình — đặt tệp .tflite trong assets/ (Android) hoặc bundle (iOS) và tải qua CustomModelDownloadConditions hoặc Firebase Model Manager. Để tải xuống các mô hình lớn (5+ MB), hãy sử dụng điều kiện tải xuống: Wi-Fi, đang sạc, nền. Google khuyên nên tải mô hình ở lần khởi chạy ứng dụng đầu tiên, không phải tại thời điểm sử dụng lần đầu.

kotlin
// Đang tải mô hình TFLite tùy chỉnh
val conditions = CustomModelDownloadConditions.Builder()
    .requireWifi()
    .build()
val remoteModel = CustomRemoteModel.Builder("my_model")
    .setRemoteModelName("my_model_v2")
    .build()

remoteModel.download(conditions)
    .addOnSuccessListener { /* model ready */ }
    .addOnFailureListener {
        // Sử dụng mô hình đi kèm từ assets
    }

Tối ưu hóa mô hình tùy chỉnh: sử dụng TFLite Converter với khả năng tương thích delegate. Để có hiệu suất tối đa, hãy lượng tử hóa mô hình (INT8) — điều này giảm kích thước mô hình 4 lần và tăng tốc suy luận 2–3 lần qua XNNPACK Delegate. ML Kit Custom Model API hỗ trợ Dynamic Shape (batch = 1), Image Input (UInt8, Float32) và Tensor Output.

Câu hỏi thường gặp

ML Kit trong Android là gì?

ML Kit là SDK của Google với các mô hình ML có sẵn cho Android và iOS. Bao gồm API cho nhận dạng văn bản (OCR), phát hiện khuôn mặt, quét mã vạch, nhận dạng đối tượng, phát hiện tư thế, dịch thuật và phân đoạn. Hoạt động trên thiết bị, không cần internet. Kết nối qua Google Play Services (Android) hoặc CocoaPods (iOS) tối thiểu — chỉ với một dòng phụ thuộc.

ML Kit khác TensorFlow Lite như thế nào?

ML Kit — SDK cấp cao với API sẵn có cho các tác vụ cụ thể (văn bản, khuôn mặt, mã). TensorFlow Lite — môi trường chạy cấp thấp để chạy bất kỳ mô hình TFLite nào. ML Kit bao gồm TFLite bên trong nhưng cung cấp mã sẵn có và tối ưu hóa cho các tác vụ tiêu chuẩn. Nếu bạn cần nhận dạng văn bản — ML Kit (5 dòng mã). Nếu bạn có mạng nơ-ron riêng — TFLite (20+ dòng).

ML Kit có hoạt động không cần internet không?

Có, tất cả API ML Kit chính (Text Recognition, Face Detection, Barcode Scanning, Object Detection, Pose Detection, Image Labeling) đều hoạt động hoàn toàn trên thiết bị mà không cần kết nối internet sau khi tải mô hình ban đầu. API Cloud (Cloud Vision, Natural Language) là tùy chọn và cần internet. Đối với mô hình đã tải xuống, chỉ cần internet cho lần tải mô hình đầu tiên.

Có thể sử dụng ML Kit trên iOS không?

Có, ML Kit hỗ trợ đầy đủ iOS qua CocoaPods hoặc Swift Package Manager. API tương tự như phiên bản Android. Đối với iOS, ML Kit sử dụng Vision Framework và Core ML bên trong — các mô hình chạy trên Apple Neural Engine (A12+). ML Kit trên iOS hoạt động với UIImage, CVPixelBuffer và CMSampleBuffer. Hỗ trợ iOS 12+ và Xcode 15+.

ML Kit có miễn phí không?

Có, API on-device của ML Kit hoàn toàn miễn phí, không giới hạn số lượng yêu cầu. API Cloud (qua Firebase) phải trả phí sau hạn mức miễn phí ($200/tháng miễn phí). Mô hình on-device không yêu cầu tài khoản Firebase — ML Kit hoạt động độc lập qua Google Play Services. Đối với ứng dụng thương mại, ML Kit on-device là lựa chọn an toàn với chi phí vận hành bằng không.

Tổng kết

  • ML Kit — SDK Google với 14 API ML sẵn có cho Android và iOS
  • Text Recognition — OCR cho Latin (45 ngôn ngữ) và CJK, độ chính xác 91–96%
  • Face Detection — 468 điểm đường viền, cười, mắt mở, 5–15 ms
  • Barcode Scanning — tất cả định dạng mã, đa mã, nhanh hơn ZXing 2–3 lần
  • Pose Detection — 33 điểm bộ xương người, theo dõi thời gian thực
  • Custom Model API — mô hình TFLite của riêng bạn qua giao diện thống nhất
  • Trên thiết bị — tất cả mô hình hoạt động cục bộ, miễn phí, không cần internet

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm