Vision: framework computer vision di iOS

Penulis: IT Sectr Diterbitkan: 2026-07-19 Waktu membaca: 9 mnt

Vision — adalah framework computer vision dari Apple, pertama kali diperkenalkan di iOS 11 pada tahun 2017. Vision menyediakan algoritma siap pakai untuk deteksi wajah, pengenalan teks (OCR), deteksi barcode, pelacakan objek, klasifikasi gambar, dan analisis kontur — semuanya dijalankan di perangkat menggunakan Neural Engine. Menurut Apple WWDC 2023, Vision digunakan di aplikasi standar “Foto” untuk pengenalan wajah dan di “Kamera” untuk deteksi teks secara real-time di iPhone dan iPad.

Poin Utama

  • Vision — framework computer vision on-device Apple dengan siklus analisis penuh di perangkat.
  • Mendukung deteksi wajah, pengenalan teks (OCR), barcode, klasifikasi, dan pelacakan objek.
  • Bekerja melalui mekanisme terpadu VNRequest — permintaan ke gambar atau streaming video.
  • Terintegrasi dengan Core ML untuk model kustom melalui VNCoreMLRequest.
  • Framework dioptimalkan untuk Neural Engine pada chip A12+ untuk real-time.

Apa itu Vision di iOS?

Vision — adalah framework computer vision tingkat tinggi yang mengabstraksi algoritma machine learning kompleks di balik API permintaan sederhana (VNRequest). Pengembang tidak perlu memahami jaringan saraf konvolusional — cukup membuat permintaan jenis yang sesuai, mengirim gambar, dan mendapatkan hasilnya.

Arsitektur Vision dibangun berdasarkan prinsip Request → Handler → Result: VNImageRequestHandler menerima gambar, menjalankan VNRequest, dan mengembalikan array VNObservation dengan hasil. Ini memungkinkan menggabungkan beberapa permintaan ke satu gambar — misalnya, mendeteksi wajah dan teks secara bersamaan dalam sebuah foto.

Vision mendukung iOS 11+ dan macOS 10.13+. Untuk akselerasi perangkat keras melalui Neural Engine diperlukan chip A12 Bionic atau yang lebih baru. Pada perangkat dengan A17 Pro dan seri M, Vision memproses hingga 60 frame per detik untuk video streaming.

Keunggulan utama Vision — privasi penuh: semua perhitungan dilakukan di perangkat, gambar tidak dikirim ke server. Ini memungkinkan penggunaan framework dalam aplikasi yang bekerja dengan data sensitif, misalnya di aplikasi medis atau perbankan.

Deteksi dan pengenalan wajah

VNDetectFaceRectanglesRequest — permintaan dasar Vision untuk mendeteksi wajah pada gambar. Mengembalikan koordinat persegi panjang yang membatasi setiap wajah, tanpa identifikasi orang tertentu.

Untuk analisis lebih detail gunakan VNDetectFaceLandmarksRequest, yang menentukan titik-titik kunci wajah: mata, alis, hidung, mulut, kontur rahang. Data ini digunakan untuk menerapkan masker, animasi emoji, dan filter secara real-time (seperti di FaceTime dan Snapchat).

swift
import Vision
import UIKit

guard let image = UIImage(named: "photo") else { return }
let request = VNDetectFaceRectanglesRequest()
let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])

try handler.perform([request])
for observation in request.results ?? [] {
    let bbox = observation.boundingBox
    print("Face at x=\\(bbox.origin.x), y=\\(bbox.origin.y)")
}

VNFaceObservation tidak hanya berisi boundingBox, tetapi juga confidence (keyakinan dari 0 hingga 1) dan landmarks — array titik wajah, jika permintaan adalah VNDetectFaceLandmarksRequest. Confidence di bawah 0.5 biasanya berarti deteksi palsu — hasil seperti itu disarankan untuk dibuang.

Vision juga mendukung VNDetectFaceCaptureQualityRequest, yang mengevaluasi kualitas gambar wajah: pencahayaan, ketajaman, sudut rotasi. Ini berguna untuk memilih frame terbaik saat pendaftaran pengguna atau pembuatan avatar.

Pengenalan teks (OCR) dengan Vision

VNRecognizeTextRequest — adalah mesin OCR bawaan Apple, diperkenalkan di iOS 13. Mengenali teks cetak pada gambar dengan dukungan 13 bahasa: Inggris, Rusia, China, Jepang, Korea, Italia, Jerman, Spanyol, Portugis, Prancis, Arab, Vietnam, dan Thai.

VNRecognizeTextRequest mendukung dua tingkat akurasi: .fast (cepat, untuk teks sederhana pada latar kontras) dan .accurate (akurat, untuk pemandangan kompleks dengan font dan sudut berbeda). .fast bekerja 3–5 kali lebih cepat, tetapi lebih buruk dalam menangani tulisan tangan dan font non-standar.

swift
import Vision

let textRequest = VNRecognizeTextRequest { request, _ in
    guard let observations = request.results as? [VNRecognizedTextObservation]
    else { return }
    for observation in observations {
        let topCandidate = observation.topCandidates(1).first
        print(topCandidate?.string ?? "")
    }
}
textRequest.recognitionLevel = .accurate
textRequest.usesLanguageCorrection = true

Properti usesLanguageCorrection mengaktifkan koreksi teks yang dikenali menggunakan model bahasa. Ini meningkatkan akurasi untuk bahasa Inggris sebesar 10–15%, tetapi memperpanjang waktu pemrosesan. Untuk bahasa Rusia, koreksi juga tersedia jika pengenalan yang sesuai ditentukan.

Menurut Apple ML Research 2022, akurasi VNRecognizeTextRequest pada level .accurate adalah 96% untuk foto dokumen jelas dalam bahasa Inggris dan sekitar 88% untuk bahasa Rusia. Untuk teks pada kemasan, papan nama, dan layar, akurasi turun menjadi 75–85%.

Recognition LevelKecepatanAkurasi (Inggris)Dukungan Rusia
.fast0.1–0.3 detik~85%Ya
.accurate0.3–1.0 detik~96%Ya

Deteksi barcode dan QR

VNDetectBarcodesRequest — permintaan Vision untuk mendeteksi dan mendekode barcode dan QR pada gambar. Semua format utama didukung: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec, dan QR.

Tidak seperti AVFoundation (AVCaptureMetadataOutput), Vision bekerja tidak hanya dengan streaming video, tetapi juga dengan gambar statis — ini memungkinkan memindai kode dari foto yang sudah diambil atau tangkapan layar. Vision juga menentukan boundingBox kode dengan akurasi piksel, yang nyaman untuk animasi bingkai di sekitar kode yang ditemukan.

swift
import Vision

let barcodeRequest = VNDetectBarcodesRequest { request, _ in
    guard let observations = request.results as? [VNBarcodeObservation]
    else { return }
    for observation in observations {
        let payload = observation.payloadStringValue ?? ""
        print("Barcode: \\(payload), Symbology: \\(observation.symbology.rawValue)"
    }
}

VNBarcodeObservation berisi payloadStringValue (konten yang didekode), symbology (jenis kode), dan confidence. Untuk kode QR, payload bisa berupa URL, teks, atau JSON. Untuk EAN/UPC, kode numerik produk dikembalikan, yang dapat digunakan untuk mencari barang di database.

Vision dapat memproses beberapa barcode pada satu gambar — array observations berisi satu objek untuk setiap kode yang ditemukan. Ini berguna untuk memindai paket produk atau dokumen dengan beberapa barcode.

Pelacakan objek dalam streaming video

VNDetectObjectAtPointRequest dan VNSequenceRequestHandler — alat Vision untuk melacak objek dalam streaming video. Yang pertama menentukan objek berdasarkan titik sentuhan pengguna, yang kedua melacak objek antar frame video.

VNSequenceRequestHandler menerima urutan gambar (frame video) dan untuk setiap frame mengembalikan posisi yang diperbarui dari objek yang dilacak. Ini digunakan dalam aplikasi augmented reality, editor video, dan sistem pengawasan video.

swift
import Vision

let trackingRequest = VNTrackObjectRequest(detectedObjectObservation: initialObservation)
let sequenceHandler = VNSequenceRequestHandler()

for frame in videoFrames {
    try sequenceHandler.perform([trackingRequest],
        on: frame.cgImage!)
    let newBBox = trackingRequest.results?.first?.boundingBox
    // Perbarui posisi objek di layar
}

VNTrackObjectRequest menggunakan algoritma pelacakan berbasis aliran optik — tidak melatih ulang detektor pada setiap frame, tetapi menghitung perpindahan objek relatif terhadap posisi sebelumnya. Ini memungkinkan bekerja secara real-time bahkan pada perangkat tanpa Neural Engine.

Keterbatasan: pelacakan dapat kehilangan objek saat gerakan cepat, tertutup, atau perubahan pencahayaan mendadak. Apple merekomendasikan untuk memulai ulang deteksi (VNDetectObjectAtPointRequest) setiap 10–15 frame untuk koreksi pelacakan.

Klasifikasi gambar dan analisis kontur

VNClassifyImageRequest — adalah model Vision bawaan untuk klasifikasi gambar ke dalam 1000 kategori (model ResNet-50, dilatih pada ImageNet). Permintaan mengembalikan array VNClassificationObservation dengan nama kategori dan keyakinan.

VNDetectContoursRequest melakukan analisis kontur gambar — mengekstrak batas objek, yang berguna untuk segmentasi, pembuatan kontur, dan pra-pemrosesan sebelum pengenalan. Permintaan mengembalikan array titik yang menggambarkan setiap kontur pada gambar.

swift
import Vision

// Klasifikasi gambar
let classificationRequest = VNClassifyImageRequest { request, _ in
    guard let results = request.results as? [VNClassificationObservation]
    else { return }
    let topMatch = results.prefix(3).filter { $0.confidence > 0.3 }
    for match in topMatch {
        print("\\(match.identifier): \\(match.confidence)"
    }
}

VNClassifyImageRequest bekerja dengan baik untuk kategori umum (kucing, anjing, mobil, makanan), tetapi tidak cocok untuk objek spesifik — untuk itu perlu melatih model Core ML kustom dan menggunakan VNCoreMLRequest. Model dari Apple dioptimalkan untuk perangkat seluler dan hanya memakan 5 MB.

VNDetectContoursRequest mengembalikan kontur dalam bentuk array titik dengan indikasi jenis kontur (eksternal, internal, lubang). Permintaan ini digunakan untuk pra-pemrosesan gambar sebelum OCR (meningkatkan kontras teks), untuk menggambar efek (garis objek), dan untuk analisis bentuk.

Permintaan VisionTujuanVersi iOS
VNDetectFaceRectanglesRequestPencarian wajah di gambariOS 11
VNRecognizeTextRequestPengenalan teks (OCR)iOS 13
VNDetectBarcodesRequestDeteksi barcode dan QRiOS 11
VNClassifyImageRequestKlasifikasi gambariOS 13
VNDetectContoursRequestAnalisis konturiOS 14
VNTrackObjectRequestPelacakan objekiOS 11

Pertanyaan yang Sering Diajukan

Apa perbedaan antara Vision dan Core ML untuk computer vision?

Vision menyediakan algoritma siap pakai (deteksi wajah, OCR, barcode) tanpa pelatihan model. Core ML — adalah mesin untuk menjalankan model kustom. Vision + VNCoreMLRequest memungkinkan menjalankan model Core ML dalam pipeline Vision, menggabungkan yang terbaik dari keduanya: detektor siap pakai Vision + klasifikasi kustom Core ML.

Apakah Vision bekerja secara real-time pada video?

Ya, Vision mendukung pemrosesan streaming video secara real-time melalui VNSequenceRequestHandler untuk pelacakan dan melalui AVCaptureVideoDataOutput untuk pemrosesan frame per frame. Pada perangkat dengan A12+ dan Neural Engine, Vision memproses hingga 60 frame per detik untuk deteksi wajah. Untuk tugas berat (OCR, klasifikasi), disarankan untuk memproses setiap 5–10 frame.

Bahasa apa saja yang didukung VNRecognizeTextRequest?

VNRecognizeTextRequest mendukung 13 bahasa: Inggris, Rusia, China (sederhana dan tradisional), Jepang, Korea, Italia, Jerman, Spanyol, Portugis, Prancis, Arab, Vietnam, dan Thai. Untuk pengenalan beberapa bahasa pada satu gambar, tentukan array di properti recognitionLanguages.

Bisakah Vision digunakan dengan model Core ML?

Ya, melalui VNCoreMLRequest. Anda membuat model Core ML yang dibungkus dalam VNCoreMLModel, dan memberikannya ke VNCoreMLRequest. Vision secara otomatis menangani pra-pemrosesan gambar (penskalaan, pemotongan) dan meneruskannya ke model Core ML. Hasil dikembalikan sebagai VNCoreMLFeatureValueObservation dengan data keluaran model.

Apakah Vision mengirim gambar ke server Apple?

Tidak, Vision melakukan seluruh analisis sepenuhnya di perangkat. Gambar tidak meninggalkan perangkat pengguna. Ini adalah arsitektur fundamental Apple: semua framework ML (Vision, NaturalLanguage, Core ML, Speech) bekerja on-device untuk memastikan privasi. Tidak ada data yang dikirim ke server Apple.

Ringkasan

  • Vision — framework computer vision on-device Apple dengan API berbasis VNRequest, tersedia sejak iOS 11 di semua perangkat Apple.
  • VNDetectFaceRectanglesRequest dan VNDetectFaceLandmarksRequest mendeteksi wajah dan titik kunci untuk filter, masker, dan animasi.
  • VNRecognizeTextRequest — OCR bawaan untuk 13 bahasa dengan level .fast dan .accurate serta akurasi hingga 96% untuk dokumen.
  • VNDetectBarcodesRequest mendekode semua format barcode dan QR populer baik di foto maupun streaming video.
  • VNTrackObjectRequest melacak objek antar frame video melalui aliran optik tanpa melatih ulang detektor.
  • Integrasi dengan Core ML melalui VNCoreMLRequest memungkinkan menjalankan model klasifikasi dan deteksi kustom dalam pipeline Vision.
  • Semua perhitungan dilakukan di perangkat menggunakan Neural Engine — tidak ada gambar yang dikirim ke server, privasi data terjamin sepenuhnya.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga