Vision: framework ng computer vision sa iOS

May-akda: IT Sectr Nai-publish: 2026-07-19 Oras ng pagbabasa: 9 min

Vision — ay isang framework ng computer vision mula sa Apple, unang ipinakilala sa iOS 11 noong 2017. Nagbibigay ang Vision ng mga handa na algorithm para sa pagtuklas ng mukha, pagkilala ng teksto (OCR), pagtuklas ng barcode, pagsubaybay ng bagay, pag-uuri ng larawan, at pagsusuri ng contour — lahat ay isinasagawa sa device gamit ang Neural Engine. Ayon sa Apple WWDC 2023, ginagamit ang Vision sa karaniwang app na “Mga Larawan” para sa pagkilala ng mukha at sa “Camera” para sa real-time na pagtuklas ng teksto sa iPhone at iPad.

Mga Pangunahing Punto

  • Vision — on-device framework ng computer vision ng Apple na may buong siklo ng pagsusuri sa device.
  • Sinusuportahan ang pagtuklas ng mukha, pagkilala ng teksto (OCR), barcode, pag-uuri, at pagsubaybay ng bagay.
  • Gumagana sa pamamagitan ng pinag-isang mekanismo ng VNRequest — mga kahilingan sa larawan o video stream.
  • Nakikipag-ugnayan sa Core ML para sa mga custom na modelo sa pamamagitan ng VNCoreMLRequest.
  • Framework na na-optimize para sa Neural Engine sa mga chip na A12+ para sa real-time.

Ano ang Vision sa iOS?

Vision — ay isang mataas na antas ng framework ng computer vision na nag-aabstrak ng mga kumplikadong algorithm ng machine learning sa likod ng simpleng API ng mga kahilingan (VNRequest). Hindi kailangan ng developer na maunawaan ang convolutional neural network — sapat na upang lumikha ng isang kahilingan ng tamang uri, ipadala ang larawan, at matanggap ang resulta.

Ang arkitektura ng Vision ay binuo sa prinsipyong Request → Handler → Result: Ang VNImageRequestHandler ay tumatanggap ng larawan, isinasagawa ang VNRequest, at nagbabalik ng array ng VNObservation na may mga resulta. Pinapayagan nito ang pagsasama-sama ng maraming kahilingan sa isang larawan — halimbawa, sabay na pagtuklas ng mga mukha at teksto sa isang larawan.

Sinusuportahan ng Vision ang iOS 11+ at macOS 10.13+. Para sa hardware acceleration sa pamamagitan ng Neural Engine, kinakailangan ang A12 Bionic chip o mas bago. Sa mga device na may A17 Pro at M series, pinoproseso ng Vision ang hanggang 60 frames bawat segundo para sa streaming video.

Pangunahing bentahe ng Vision — ganap na pagkapribado: lahat ng pagkalkula ay isinasagawa sa device, ang mga larawan ay hindi ipinapadala sa server. Pinapayagan nito ang paggamit ng framework sa mga app na gumagana sa sensitibong data, halimbawa sa medikal o banking app.

Pagtuklas at pagkilala ng mukha

VNDetectFaceRectanglesRequest — ang pangunahing kahilingan ng Vision para sa pagtuklas ng mga mukha sa isang larawan. Nagbabalik ito ng mga coordinate ng mga parihaba na naglilimita sa bawat mukha, nang walang pagkakakilanlan ng partikular na tao.

Para sa mas detalyadong pagsusuri gamitin ang VNDetectFaceLandmarksRequest, na tumutukoy sa mga pangunahing punto ng mukha: mata, kilay, ilong, bibig, contour ng panga. Ang data na ito ay ginagamit para sa paglalagay ng maskara, animation ng emoji, at mga filter sa real-time (tulad ng sa FaceTime at 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 ay naglalaman hindi lamang ng boundingBox, kundi pati na rin ng confidence (tiwala mula 0 hanggang 1) at landmarks — array ng mga punto ng mukha, kung ang kahilingan ay VNDetectFaceLandmarksRequest. Ang confidence na mas mababa sa 0.5 ay karaniwang nangangahulugan ng maling pagtuklas — ang mga naturang resulta ay inirerekomenda na itapon.

Sinusuportahan din ng Vision ang VNDetectFaceCaptureQualityRequest, na sinusuri ang kalidad ng larawan ng mukha: ilaw, talas, anggulo ng pag-ikot. Ito ay kapaki-pakinabang para sa pagpili ng pinakamahusay na frame sa pagpaparehistro ng user o paggawa ng avatar.

Pagkilala ng teksto (OCR) gamit ang Vision

VNRecognizeTextRequest — ay ang built-in na OCR engine ng Apple, ipinakilala sa iOS 13. Kinikilala nito ang naka-print na teksto sa mga larawan na may suporta para sa 13 wika: Ingles, Ruso, Chinese, Japanese, Korean, Italyano, Aleman, Espanyol, Portuges, Pranses, Arabic, Vietnamese, at Thai.

VNRecognizeTextRequest ay sumusuporta sa dalawang antas ng katumpakan: .fast (mabilis, para sa simpleng teksto sa contrast background) at .accurate (tumpak, para sa kumplikadong mga eksena na may iba't ibang font at anggulo). Ang .fast ay gumagana nang 3–5 beses na mas mabilis, ngunit mas mahina sa paghawak ng sulat-kamay na teksto at hindi karaniwang mga font.

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

Ang property na usesLanguageCorrection ay nag-a-activate ng pagwawasto ng kinikilalang teksto gamit ang isang modelo ng wika. Pinapataas nito ang katumpakan para sa Ingles ng 10–15%, ngunit pinahaba ang oras ng pagproseso. Para sa wikang Ruso, ang pagwawasto ay magagamit din kung ang naaangkop na pagkilala ay tinukoy.

Ayon sa Apple ML Research 2022, ang katumpakan ng VNRecognizeTextRequest sa antas na .accurate ay 96% para sa malinaw na mga larawan ng dokumento sa Ingles at mga 88% para sa Ruso. Para sa teksto sa mga packaging, karatula, at screen, ang katumpakan ay bumababa sa 75–85%.

Recognition LevelBilisKatumpakan (Ingles)Suporta sa Ruso
.fast0.1–0.3 seg~85%Oo
.accurate0.3–1.0 seg~96%Oo

Pagtuklas ng barcode at QR

VNDetectBarcodesRequest — ang kahilingan ng Vision para sa pagtuklas at pag-decode ng mga barcode at QR code sa larawan. Lahat ng pangunahing format ay sinusuportahan: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec, at QR.

Hindi tulad ng AVFoundation (AVCaptureMetadataOutput), ang Vision ay gumagana hindi lamang sa video stream, kundi pati na rin sa mga static na larawan — pinapayagan nito ang pag-scan ng mga code mula sa mga larawang kuha na o screenshot. Tinutukoy din ng Vision ang boundingBox ng code na may katumpakan ng pixel, na maginhawa para sa animation ng frame sa paligid ng nakitang code.

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 ay naglalaman ng payloadStringValue (na-decode na nilalaman), symbology (uri ng code), at confidence. Para sa QR code, ang payload ay maaaring URL, teksto, o JSON. Para sa EAN/UPC, ang numerikong code ng produkto ay ibinabalik, na maaaring gamitin para sa paghahanap ng item sa database.

Maaaring iproseso ng Vision ang maraming barcode sa isang larawan — ang array ng observations ay naglalaman ng isang bagay para sa bawat nakitang code. Ito ay kapaki-pakinabang para sa pag-scan ng mga pakete ng produkto o dokumento na may maraming barcode.

Pagsubaybay ng bagay sa video stream

VNDetectObjectAtPointRequest at VNSequenceRequestHandler — mga tool ng Vision para sa pagsubaybay ng mga bagay sa video stream. Ang una ay tumutukoy ng bagay sa pamamagitan ng touch point ng user, ang pangalawa ay sumusubaybay sa bagay sa pagitan ng mga frame ng video.

VNSequenceRequestHandler ay tumatanggap ng pagkakasunod-sunod ng mga larawan (mga frame ng video) at para sa bawat frame ay nagbabalik ng na-update na posisyon ng sinusubaybayang bagay. Ito ay ginagamit sa augmented reality apps, video editor, at video surveillance system.

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
    // I-update ang posisyon ng bagay sa screen
}

VNTrackObjectRequest ay gumagamit ng tracking algorithm batay sa optical flow — hindi nito muling sinasanay ang detector sa bawat frame, kundi kinakalkula ang displacement ng bagay kaugnay sa dating posisyon. Pinapayagan nito ang real-time na paggana kahit sa mga device na walang Neural Engine.

Limitasyon: maaaring mawala ng tracking ang bagay sa mabilis na paggalaw, pagtakip, o biglaang pagbabago ng ilaw. Inirerekomenda ng Apple na i-restart ang detection (VNDetectObjectAtPointRequest) tuwing 10–15 frame para sa pagwawasto ng tracking.

Pag-uuri ng larawan at pagsusuri ng contour

VNClassifyImageRequest — ay ang built-in na modelo ng Vision para sa pag-uuri ng larawan sa 1000 kategorya (modelong ResNet-50, sinanay sa ImageNet). Ang kahilingan ay nagbabalik ng array ng VNClassificationObservation na may pangalan ng kategorya at tiwala.

VNDetectContoursRequest ay nagsasagawa ng pagsusuri ng contour ng larawan — kinukuha ang mga hangganan ng bagay, na kapaki-pakinabang para sa segmentation, contouring, at pre-processing bago ang pagkilala. Ang kahilingan ay nagbabalik ng array ng mga punto na naglalarawan ng bawat contour sa larawan.

swift
import Vision

// Pag-uuri ng larawan
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 ay mahusay na gumagana para sa pangkalahatang kategorya (pusa, aso, kotse, pagkain), ngunit hindi angkop para sa mga tiyak na bagay — para sa mga ito kailangan sanayin ang isang custom na modelo ng Core ML at gamitin ang VNCoreMLRequest. Ang modelo mula sa Apple ay na-optimize para sa mobile device at tumatagal lamang ng 5 MB.

VNDetectContoursRequest ay nagbabalik ng mga contour bilang array ng mga punto na may indikasyon ng uri ng contour (panlabas, panloob, butas). Ang kahilingang ito ay ginagamit para sa pre-processing ng mga larawan bago ang OCR (pagpapabuti ng contrast ng teksto), para sa pagguhit ng mga epekto (pagbalangkas ng bagay), at para sa pagsusuri ng hugis.

Kahilingan ng VisionLayuninBersyon ng iOS
VNDetectFaceRectanglesRequestPaghahanap ng mga mukha sa larawaniOS 11
VNRecognizeTextRequestPagkilala ng teksto (OCR)iOS 13
VNDetectBarcodesRequestPagtuklas ng barcode at QRiOS 11
VNClassifyImageRequestPag-uuri ng larawaniOS 13
VNDetectContoursRequestPagsusuri ng contouriOS 14
VNTrackObjectRequestPagsubaybay ng bagayiOS 11

Mga Madalas Itanong

Ano ang pagkakaiba ng Vision at Core ML para sa computer vision?

Vision ay nagbibigay ng mga handa na algorithm (pagtuklas ng mukha, OCR, barcode) nang walang pagsasanay ng modelo. Ang Core ML — ay ang engine para sa pagpapatakbo ng mga custom na modelo. Ang Vision + VNCoreMLRequest ay nagpapahintulot sa pagpapatakbo ng mga modelo ng Core ML sa pipeline ng Vision, pinagsasama ang pinakamahusay sa parehong mundo: mga handa na detector ng Vision + custom na pag-uuri ng Core ML.

Gumagana ba ang Vision sa real-time sa video?

Oo, sinusuportahan ng Vision ang real-time na pagproseso ng video stream sa pamamagitan ng VNSequenceRequestHandler para sa tracking at sa pamamagitan ng AVCaptureVideoDataOutput para sa frame-by-frame na pagproseso. Sa mga device na may A12+ at Neural Engine, pinoproseso ng Vision ang hanggang 60 frames bawat segundo para sa pagtuklas ng mukha. Para sa mabibigat na gawain (OCR, pag-uuri), inirerekomenda na iproseso ang bawat 5–10 frame.

Anong mga wika ang sinusuportahan ng VNRecognizeTextRequest?

VNRecognizeTextRequest ay sumusuporta sa 13 wika: Ingles, Ruso, Chinese (pinasimple at tradisyonal), Japanese, Korean, Italyano, Aleman, Espanyol, Portuges, Pranses, Arabic, Vietnamese, at Thai. Para sa pagkilala ng maraming wika sa isang larawan, tukuyin ang isang array sa property na recognitionLanguages.

Maaari bang gamitin ang Vision sa isang modelo ng Core ML?

Oo, sa pamamagitan ng VNCoreMLRequest. Gumawa ka ng modelo ng Core ML na nakabalot sa VNCoreMLModel, at ipadala ito sa VNCoreMLRequest. Awtomatikong pinangangasiwaan ng Vision ang pre-processing ng larawan (pag-scale, pag-crop) at ipinapadala ito sa modelo ng Core ML. Ang resulta ay ibinabalik bilang VNCoreMLFeatureValueObservation na may output data ng modelo.

Nagpapadala ba ang Vision ng mga larawan sa server ng Apple?

Hindi, ang Vision ay nagsasagawa ng buong pagsusuri nang ganap sa device. Ang mga larawan ay hindi umaalis sa device ng user. Ito ang pangunahing arkitektura ng Apple: lahat ng ML framework (Vision, NaturalLanguage, Core ML, Speech) ay gumagana on-device upang matiyak ang privacy. Walang data na ipinapadala sa mga server ng Apple.

Buod

  • Vision — on-device framework ng computer vision ng Apple na may API na batay sa VNRequest, magagamit mula sa iOS 11 sa lahat ng Apple device.
  • VNDetectFaceRectanglesRequest at VNDetectFaceLandmarksRequest ay tumutuklas ng mga mukha at pangunahing punto para sa mga filter, mask, at animation.
  • VNRecognizeTextRequest — built-in na OCR para sa 13 wika na may mga antas .fast at .accurate at katumpakan hanggang 96% para sa mga dokumento.
  • VNDetectBarcodesRequest ay nagde-decode ng lahat ng sikat na format ng barcode at QR kapwa sa larawan at sa video stream.
  • VNTrackObjectRequest ay sumusubaybay ng mga bagay sa pagitan ng mga frame ng video sa pamamagitan ng optical flow nang hindi muling sinasanay ang detector.
  • Integrasyon sa Core ML sa pamamagitan ng VNCoreMLRequest ay nagpapahintulot sa pagpapatakbo ng mga custom na modelo ng pag-uuri at pagtuklas sa loob ng pipeline ng Vision.
  • Lahat ng pagkalkula ay isinasagawa sa device gamit ang Neural Engine — walang larawang ipinapadala sa server, tiyak ang ganap na privacy ng data.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din