Vision: framework voor computervisie in iOS

Auteur: IT Sectr Gepubliceerd: 2026-07-19 Leestijd: 9 min

Vision „ is een framework voor computervisie van Apple, voor het eerst geïntroduceerd in iOS 11 in 2017. Vision bied kant-en-klare algoritmen voor gezichtsdetectie, tekstherkenning (OCR), barcodedetectie, object tracking, beeldclassificatie en contouranalyse „ alles wordt uitgevoerd op het apparaat met behulp van Neural Engine. Volgens Apple WWDC 2023 wordt Vision gebruikt in de standaard “Foto”-app voor gezichtsherkenning en in “Camera” voor realtime tekstdetectie op iPhone en iPad.

Belangrijkste punten

  • Vision „ on-device framework voor computervisie van Apple met volledige analysecyclus op het apparaat.
  • Ondersteunt gezichtsdetectie, tekstherkenning (OCR), barcodes, classificatie en object tracking.
  • Werkt via een uniform VNRequest-mechanisme „ verzoeken aan een afbeelding of videostream.
  • Integreert met Core ML voor aangepaste modellen via VNCoreMLRequest.
  • Framework geoptimaliseerd voor Neural Engine op A12+ chips voor realtime verwerking.

Wat is Vision in iOS?

Vision „ is een hoogwaardig framework voor computervisie dat complexe machine learning-algoritmen abstraheert achter een eenvoudige API voor verzoeken (VNRequest). De ontwikkelaar hoeft geen convolutionele neurale netwerken te begrijpen „ het volstaat om een verzoek van het juiste type te maken, de afbeelding door te geven en het resultaat te ontvangen.

De architectuur van Vision is gebaseerd op het principe Request → Handler → Result: VNImageRequestHandler ontvangt de afbeelding, voert VNRequest uit en retourneert een array van VNObservation met resultaten. Dit maakt het mogelijk om meerdere verzoeken aan één afbeelding te combineren „ bijvoorbeeld tegelijkertijd gezichten en tekst op een foto detecteren.

Vision ondersteunt iOS 11+ en macOS 10.13+. Voor hardwareversnelling via Neural Engine is een A12 Bionic-chip of nieuwer vereist. Op apparaten met A17 Pro en M-serie verwerkt Vision tot 60 frames per seconde voor streaming video.

Belangrijk voordeel van Vision „ volledige privacy: alle berekeningen worden op het apparaat uitgevoerd, afbeeldingen worden niet naar de server gestuurd. Dit maakt het mogelijk het framework te gebruiken in toepassingen die met gevoelige gegevens werken, bijvoorbeeld in medische of bank-apps.

Gezichtsdetectie en -herkenning

VNDetectFaceRectanglesRequest „ het basisverzoek van Vision voor het detecteren van gezichten op een afbeelding. Het retourneert de coördinaten van rechthoeken die elk gezicht begrenzen, zonder identificatie van de specifieke persoon.

Voor een meer gedetailleerde analyse gebruikt u VNDetectFaceLandmarksRequest, dat de belangrijkste punten van het gezicht bepaalt: ogen, wenkbrauwen, neus, mond, kaakcontour. Deze gegevens worden gebruikt voor het toepassen van maskers, emoji-animatie en filters in realtime (zoals in FaceTime en 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 bevat niet alleen boundingBox, maar ook confidence (betrouwbaarheid van 0 tot 1) en landmarks „ een array van gezichtspunten als het verzoek VNDetectFaceLandmarksRequest was. Confidence onder 0.5 duidt meestal op een vals-positief resultaat „ dergelijke resultaten worden aanbevolen om te verwerpen.

Vision ondersteunt ook VNDetectFaceCaptureQualityRequest, dat de kwaliteit van de gezichtsafbeelding beoordeelt: belichting, scherpte, rotatiehoek. Dit is handig voor het selecteren van het beste frame bij gebruikersregistratie of het maken van een avatar.

Tekstherkenning (OCR) met Vision

VNRecognizeTextRequest „ is de ingebouwde OCR-engine van Apple, geïntroduceerd in iOS 13. Het herkent gedrukte tekst op afbeeldingen met ondersteuning voor 13 talen: Engels, Russisch, Chinees, Japans, Koreaans, Italiaans, Duits, Spaans, Portugees, Frans, Arabisch, Vietnamees en Thai.

VNRecognizeTextRequest ondersteunt twee nauwkeurigheidsniveaus: .fast (snel, voor eenvoudige tekst op contrasterende achtergrond) en .accurate (nauwkeurig, voor complexe scènes met verschillende lettertypen en hoeken). .fast werkt 3–5 keer sneller, maar presteert slechter met handschrift en niet-standaard lettertypen.

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

De eigenschap usesLanguageCorrection activeert correctie van herkende tekst met behulp van een taalmodel. Dit verhoogt de nauwkeurigheid voor Engels met 10–15%, maar verlengt de verwerkingstijd. Voor Russisch is correctie ook beschikbaar als de juiste herkenning is gespecificeerd.

Volgens Apple ML Research 2022 bedraagt de nauwkeurigheid van VNRecognizeTextRequest op .accurate-niveau 96% voor duidelijke foto's van documenten in het Engels en ongeveer 88% voor Russisch. Voor tekst op verpakkingen, borden en schermen daalt de nauwkeurigheid naar 75–85%.

Recognition LevelSnelheidNauwkeurigheid (Engels)Ondersteuning Russisch
.fast0.1–0.3 sec~85%Ja
.accurate0.3–1.0 sec~96%Ja

Barcode- en QR-detectie

VNDetectBarcodesRequest „ het Vision-verzoek voor detectie en decodering van barcodes en QR-codes op een afbeelding. Alle belangrijke formaten worden ondersteund: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec en QR.

In tegenstelling tot AVFoundation (AVCaptureMetadataOutput) werkt Vision niet alleen met een videostream, maar ook met statische afbeeldingen „ dit maakt het mogelijk codes te scannen van reeds gemaakte foto's of screenshots. Vision bepaalt ook de boundingBox van de code met pixelprecisie, wat handig is voor animatie van een kader rond de gevonden 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 bevat payloadStringValue (gedecodeerde inhoud), symbology (codetype) en confidence. Voor QR-codes kan de payload een URL, tekst of JSON zijn. Voor EAN/UPC wordt de numerieke productcode geretourneerd, die kan worden gebruikt om het artikel in de database te zoeken.

Vision kan meerdere barcodes op één afbeelding verwerken „ de array observations bevat één object voor elke gevonden code. Dit is handig voor het scannen van productpakketten of documenten met meerdere barcodes.

Object tracking in videostream

VNDetectObjectAtPointRequest en VNSequenceRequestHandler „ Vision-hulpmiddelen voor het volgen van objecten in een videostream. De eerste bepaalt het object op basis van het aanraakpunt van de gebruiker, de tweede volgt het object tussen videoframes.

VNSequenceRequestHandler ontvangt een reeks afbeeldingen (videoframes) en retourneert voor elk frame de bijgewerkte positie van het gevolgde object. Dit wordt gebruikt in augmented reality-toepassingen, videobewerkers en bewakingssystemen.

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
    // Werk objectpositie op scherm bij
}

VNTrackObjectRequest gebruikt een tracking-algoritme op basis van optische stroom „ het traint de detector niet opnieuw op elk frame, maar berekent de verplaatsing van het object ten opzichte van de vorige positie. Dit maakt realtime werking mogelijk, zelfs op apparaten zonder Neural Engine.

Beperking: tracking kan het object verliezen bij snelle beweging, bedekking of plotselinge verandering van belichting. Apple raadt aan om elke 10–15 frames de detectie (VNDetectObjectAtPointRequest) opnieuw te starten voor correctie van de tracking.

Beeldclassificatie en contouranalyse

VNClassifyImageRequest „ is het ingebouwde Vision-model voor beeldclassificatie in 1000 categorieën (ResNet-50-model, getraind op ImageNet). Het verzoek retourneert een array van VNClassificationObservation met categorienaam en betrouwbaarheid.

VNDetectContoursRequest voert contouranalyse van de afbeelding uit „ het extraheert objectgrenzen, wat nuttig is voor segmentatie, contouring en voorverwerking vóór herkenning. Het verzoek retourneert een array van punten die elke contour op de afbeelding beschrijven.

swift
import Vision

// Beeldclassificatie
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 werkt goed voor algemene categorieën (kat, hond, auto, eten), maar is niet geschikt voor specifieke objecten „ daarvoor moet een aangepast Core ML-model worden getraind en VNCoreMLRequest worden gebruikt. Het model van Apple is geoptimaliseerd voor mobiele apparaten en neemt slechts 5 MB in beslag.

VNDetectContoursRequest retourneert contouren als een array van punten met aanduiding van het contortype (extern, intern, gat). Dit verzoek wordt gebruikt voor voorverwerking van afbeeldingen vóór OCR (verbetering van tekstcontrast), voor het tekenen van effecten (omtrek van objecten) en voor vormanalyse.

Vision-verzoekDoeliOS-versie
VNDetectFaceRectanglesRequestZoeken van gezichten in afbeeldingiOS 11
VNRecognizeTextRequestTekstherkenning (OCR)iOS 13
VNDetectBarcodesRequestBarcode- en QR-detectieiOS 11
VNClassifyImageRequestBeeldclassificatieiOS 13
VNDetectContoursRequestContouranalyseiOS 14
VNTrackObjectRequestObject trackingiOS 11

Veelgestelde vragen

Wat is het verschil tussen Vision en Core ML voor computervisie?

Vision biedt kant-en-klare algoritmen (gezichtsdetectie, OCR, barcodes) zonder modeltraining. Core ML „ is de motor voor het uitvoeren van aangepaste modellen. Vision + VNCoreMLRequest maken het mogelijk Core ML-modellen in de Vision-pipeline uit te voeren, met het beste van beide werelden: kant-en-klare Vision-detectoren + aangepaste Core ML-classificatie.

Werkt Vision in realtime op video?

Ja, Vision ondersteunt realtime verwerking van videostreams via VNSequenceRequestHandler voor tracking en via AVCaptureVideoDataOutput voor frame-voor-frame verwerking. Op apparaten met A12+ en Neural Engine verwerkt Vision tot 60 frames per seconde voor gezichtsdetectie. Voor zware taken (OCR, classificatie) wordt aanbevolen elke 5–10 frames te verwerken.

Welke talen ondersteunt VNRecognizeTextRequest?

VNRecognizeTextRequest ondersteunt 13 talen: Engels, Russisch, Chinees (vereenvoudigd en traditioneel), Japans, Koreaans, Italiaans, Duits, Spaans, Portugees, Frans, Arabisch, Vietnamees en Thai. Voor herkenning van meerdere talen op één afbeelding geeft u een array op in de eigenschap recognitionLanguages.

Kan Vision worden gebruikt met een Core ML-model?

Ja, via VNCoreMLRequest. U maakt een Core ML-model, verpakt in VNCoreMLModel, en geeft dit door aan VNCoreMLRequest. Vision beheert automatisch de voorverwerking van de afbeelding (schalen, bijsnijden) en geeft deze door aan het Core ML-model. Het resultaat wordt geretourneerd als VNCoreMLFeatureValueObservation met uitvoergegevens van het model.

Stuurt Vision afbeeldingen naar de Apple-server?

Nee, Vision voert de volledige analyse volledig op het apparaat uit. Afbeeldingen verlaten het apparaat van de gebruiker niet. Dit is de fundamentele architectuur van Apple: alle ML-frameworks (Vision, NaturalLanguage, Core ML, Speech) werken on-device om privacy te waarborgen. Er worden geen gegevens naar Apple-servers gestuurd.

Samenvatting

  • Vision „ on-device framework voor computervisie van Apple met API gebaseerd op VNRequest, beschikbaar vanaf iOS 11 op alle Apple-apparaten.
  • VNDetectFaceRectanglesRequest en VNDetectFaceLandmarksRequest detecteren gezichten en belangrijke punten voor filters, maskers en animatie.
  • VNRecognizeTextRequest „ ingebouwde OCR voor 13 talen met niveaus .fast en .accurate en een nauwkeurigheid tot 96% voor documenten.
  • VNDetectBarcodesRequest decodeert alle populaire barcode- en QR-formaten, zowel op foto's als in videostreams.
  • VNTrackObjectRequest volgt objecten tussen videoframes via optische stroom zonder de detector opnieuw te trainen.
  • Integratie met Core ML via VNCoreMLRequest maakt het mogelijk aangepaste classificatie- en detectiemodellen in de Vision-pipeline uit te voeren.
  • Alle berekeningen worden op het apparaat uitgevoerd met Neural Engine „ geen afbeeldingen worden naar de server gestuurd, volledige gegevensprivacy is gegarandeerd.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook