Vision: számítógépes látás keretrendszer iOS-ben

Szerző: IT Sectr Megjelenés: 2026-07-19 Olvasási idő: 9 perc

Vision „ az Apple számítógépes látás keretrendszere, amelyet először az iOS 11-ben mutattak be 2017-ben. A Vision kész algoritmusokat kínál arcok detektálásához, szövegfelismeréshez (OCR), vonalkódok észleléséhez, objektumok követéséhez, képek osztályozásához és kontúrok elemzéséhez „ minden az eszközön történik a Neural Engine segítségével. Az Apple WWDC 2023 adatai szerint a Vision a szabványos „Fotók" alkalmazásban arcfelismerésre, a „Kamera" alkalmazásban pedig valós idejű szövegfelismerésre használatos iPhone-on és iPad-en.

Főbb pontok

  • Vision „ on-device számítógépes látás keretrendszer az Apple-től, teljes elemzési ciklussal az eszközön.
  • Támogatja az arcfelismerést, szövegfelismerést (OCR), vonalkódokat, osztályozást és objektumkövetést.
  • Egységes VNRequest mechanizmuson keresztül működik „ kérések egy képhez vagy videófolyamhoz.
  • Integrálódik a Core ML-lel egyedi modellekhez a VNCoreMLRequest-en keresztül.
  • A keretrendszer optimalizálva van a Neural Engine-hez A12+ chipeken valós idejű működéshez.

Mi az a Vision iOS-ben?

Vision „ egy magas szintű számítógépes látás keretrendszer, amely elvonatkoztatja a komplex gépi tanulási algoritmusokat egy egyszerű kérés API (VNRequest) mögé. A fejlesztőnek nem kell ismernie a konvolúciós neurális hálózatokat „ elég létrehozni egy megfelelő típusú kérést, átadni a képet és megkapni az eredményt.

A Vision architektúrája a Request → Handler → Result elvre épül: a VNImageRequestHandler fogadja a képet, végrehajtja a VNRequest-et, és visszaad egy VNObservation tömböt eredményekkel. Ez lehetővé teszi több kérés kombinálását egy képhez „ például egyszerre arcok és szöveg detektálása egy fényképen.

A Vision támogatja az iOS 11+ és macOS 10.13+ rendszereket. A Neural Engine-en keresztüli hardveres gyorsításhoz A12 Bionic vagy újabb chip szükséges. Az A17 Pro és M sorozatú eszközökön a Vision akár 60 képkockát is feldolgoz másodpercenként streaming videóhoz.

Fő előnye a Vision-nak „ teljes adatvédelem: minden számítás az eszközön történik, a képek nem kerülnek a szerverre. Ez lehetővé teszi a keretrendszer használatát érzékeny adatokkal dolgozó alkalmazásokban, például egészségügyi vagy banki alkalmazásokban.

Arcok detektálása és felismerése

VNDetectFaceRectanglesRequest „ a Vision alapszintű kérése arcok észlelésére egy képen. Visszaadja az egyes arcokat határoló téglalapok koordinátáit, a konkrét személy azonosítása nélkül.

Részletesebb elemzéshez használja a VNDetectFaceLandmarksRequest-et, amely meghatározza az arc kulcspontjait: szemek, szemöldök, orr, száj, állkapocs kontúr. Ezeket az adatokat maszkok alkalmazásához, emoji animációkhoz és szűrőkhöz használják valós időben (mint a FaceTime és Snapchat esetében).

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 nemcsak a boundingBox-ot, hanem a confidence-t (megbízhatóság 0-tól 1-ig) és a landmarks-ot is tartalmazza „ az arc pontjainak tömbjét, ha a kérés VNDetectFaceLandmarksRequest volt. A 0.5 alatti confidence általában hamis találatot jelent „ az ilyen eredmények elutasítása javasolt.

A Vision támogatja továbbá a VNDetectFaceCaptureQualityRequest-et, amely értékeli az arc képminőségét: megvilágítás, élesség, elforgatási szög. Ez hasznos a legjobb képkocka kiválasztásához felhasználói regisztrációnál vagy avatar létrehozásánál.

Szövegfelismerés (OCR) a Vision segítségével

VNRecognizeTextRequest „ az Apple beépített OCR motorja, amelyet iOS 13-ban mutattak be. Felismeri a nyomtatott szöveget képeken 13 nyelv támogatásával: angol, orosz, kínai, japán, koreai, olasz, német, spanyol, portugál, francia, arab, vietnami és thai.

VNRecognizeTextRequest két pontossági szintet támogat: .fast (gyors, egyszerű szöveghez kontrasztos háttéren) és .accurate (pontos, összetett jelenetekhez különböző betűtípusokkal és szögekkel). A .fast 3–5-ször gyorsabb, de rosszabbul bánik a kézírással és nem szabványos betűtípusokkal.

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

A usesLanguageCorrection tulajdonság bekapcsolja a felismert szöveg korrekcióját egy nyelvi modell segítségével. Ez 10–15%-kal növeli a pontosságot angol nyelv esetén, de meghosszabbítja a feldolgozási időt. Orosz nyelv esetén a korrekció szintén elérhető, ha a megfelelő felismerés meg van adva.

Az Apple ML Research 2022 adatai szerint a VNRecognizeTextRequest pontossága .accurate szinten 96% a tiszta dokumentumfotóknál angol nyelven és körülbelül 88% orosz nyelven. Csomagolásokon, táblákon és képernyőkön lévő szövegnél a pontosság 75–85%-ra csökken.

Recognition LevelSebességPontosság (angol)Orosz támogatás
.fast0.1–0.3 mp~85%Igen
.accurate0.3–1.0 mp~96%Igen

Vonalkódok és QR-kódok észlelése

VNDetectBarcodesRequest „ a Vision kérése vonalkódok és QR-kódok észlelésére és dekódolására egy képen. Az összes fő formátum támogatott: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec és QR.

Az AVFoundation-től (AVCaptureMetadataOutput) eltérően a Vision nemcsak videófolyammal, hanem statikus képekkel is működik „ ez lehetővé teszi kódok szkennelését már elkészített fényképekről vagy képernyőképekről. A Vision meghatározza a kód boundingBox-át pixelpontossággal, ami kényelmes a megtalált kód körüli keret animálásához.

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 tartalmazza a payloadStringValue-t (dekódolt tartalom), a symbology-t (kód típusa) és a confidence-t. QR-kódok esetén a payload lehet URL, szöveg vagy JSON. EAN/UPC esetén a termék numerikus kódja kerül visszaadásra, amely felhasználható a termék adatbázisban való kereséséhez.

A Vision több vonalkódot is feldolgozhat egyetlen képen „ az observations tömb minden megtalált kódhoz egy objektumot tartalmaz. Ez hasznos termékcsomagok vagy több vonalkóddal rendelkező dokumentumok szkenneléséhez.

Objektumok követése videófolyamban

VNDetectObjectAtPointRequest és VNSequenceRequestHandler „ a Vision eszközei objektumok követésére videófolyamban. Az első a felhasználó érintési pontja alapján határozza meg az objektumot, a második az objektumot követi a videóképkockák között.

VNSequenceRequestHandler képek sorozatát (videóképkockákat) fogadja, és minden képkockához visszaadja a követett objektum frissített pozícióját. Ezt kiterjesztett valóság alkalmazásokban, videószerkesztőkben és videó megfigyelő rendszerekben használják.

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
    // Objektum pozíciójának frissítése a képernyőn
}

VNTrackObjectRequest optikai áramláson alapuló követési algoritmust használ „ nem tanítja újra a detektort minden képkockán, hanem kiszámítja az objektum elmozdulását az előző pozícióhoz képest. Ez lehetővé teszi a valós idejű működést még Neural Engine nélküli eszközökön is.

Korlátozás: a követés elveszítheti az objektumot gyors mozgás, takarás vagy hirtelen fényváltozás esetén. Az Apple azt javasolja, hogy a detektálást (VNDetectObjectAtPointRequest) 10–15 képkockánként indítsa újra a követés korrekciójához.

Képek osztályozása és kontúrok elemzése

VNClassifyImageRequest „ a Vision beépített modellje képek osztályozására 1000 kategóriában (ResNet-50 modell, ImageNet-en tanítva). A kérés visszaad egy VNClassificationObservation tömböt a kategória nevével és a megbízhatósággal.

VNDetectContoursRequest a kép kontúrelemzését végzi „ kivonja az objektumok határait, ami hasznos szegmentáláshoz, kontúrozáshoz és előfeldolgozáshoz a felismerés előtt. A kérés visszaad egy pontokból álló tömböt, amely leírja az egyes kontúrokat a képen.

swift
import Vision

// Kép osztályozás
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 jól működik általános kategóriákra (macska, kutya, autó, étel), de nem alkalmas specifikus objektumokra „ ezekhez egyedi Core ML modellt kell tanítani és VNCoreMLRequest-et használni. Az Apple modellje mobil eszközökre optimalizált, és mindössze 5 MB helyet foglal.

VNDetectContoursRequest a kontúrokat pontok tömbjeként adja vissza a kontúr típusának megjelölésével (külső, belső, lyuk). Ezt a kérést képek OCR előtti előfeldolgozásához (szöveg kontrasztjának javítása), effektek rajzolásához (objektumok körvonalazása) és alakzatok elemzéséhez használják.

Vision kérésRendeltetésiOS verzió
VNDetectFaceRectanglesRequestArcok keresése a képeniOS 11
VNRecognizeTextRequestSzövegfelismerés (OCR)iOS 13
VNDetectBarcodesRequestVonalkód és QR detektálásiOS 11
VNClassifyImageRequestKépek osztályozásaiOS 13
VNDetectContoursRequestKontúrelemzésiOS 14
VNTrackObjectRequestObjektumok követéseiOS 11

Gyakran Ismételt Kérdések

Mi a különbség a Vision és a Core ML között számítógépes látás tekintetében?

Vision kész algoritmusokat biztosít (arcfelismerés, OCR, vonalkódok) modell tanítása nélkül. A Core ML „ egy motor egyedi modellek végrehajtásához. A Vision + VNCoreMLRequest lehetővé teszi a Core ML modellek futtatását a Vision pipeline-ban, egyesítve mindkét világ legjobbját: a Vision kész detektorai + a Core ML egyedi osztályozása.

Működik a Vision valós időben videón?

Igen, a Vision támogatja a videófolyam valós idejű feldolgozását a VNSequenceRequestHandler-en keresztül követéshez és az AVCaptureVideoDataOutput-on keresztül képkockánkénti feldolgozáshoz. A12+ és Neural Engine eszközökön a Vision akár 60 képkockát is feldolgoz másodpercenként arcfelismeréshez. Nehéz feladatoknál (OCR, osztályozás) javasolt minden 5–10. képkocka feldolgozása.

Milyen nyelveket támogat a VNRecognizeTextRequest?

VNRecognizeTextRequest 13 nyelvet támogat: angol, orosz, kínai (egyszerűsített és hagyományos), japán, koreai, olasz, német, spanyol, portugál, francia, arab, vietnami és thai. Több nyelv felismeréséhez egy képen adjon meg egy tömböt a recognitionLanguages tulajdonságban.

Használható a Vision Core ML modellel?

Igen, a VNCoreMLRequest-en keresztül. Létrehoz egy Core ML modellt, amely VNCoreMLModel-be van csomagolva, és átadja a VNCoreMLRequest-nek. A Vision automatikusan kezeli a kép előfeldolgozását (méretezés, vágás), és továbbítja a Core ML modellnek. Az eredmény VNCoreMLFeatureValueObservation-ként kerül visszaadásra a modell kimeneti adataival.

Küldi a Vision a képeket az Apple szerverére?

Nem, a Vision teljes mértékben az eszközön végzi az elemzést. A képek nem hagyják el a felhasználó eszközét. Ez az Apple alapvető architektúrája: minden ML keretrendszer (Vision, NaturalLanguage, Core ML, Speech) on-device működik az adatvédelem biztosítása érdekében. Semmilyen adat nem kerül az Apple szervereire.

Összefoglalás

  • Vision „ on-device számítógépes látás keretrendszer az Apple-től VNRequest-alapú API-val, elérhető iOS 11-től kezdve minden Apple eszközön.
  • VNDetectFaceRectanglesRequest és VNDetectFaceLandmarksRequest arcokat és kulcspontokat detektálnak szűrőkhöz, maszkokhoz és animációkhoz.
  • VNRecognizeTextRequest „ beépített OCR 13 nyelvhez .fast és .accurate szintekkel, akár 96%-os pontossággal dokumentumoknál.
  • VNDetectBarcodesRequest dekódolja az összes népszerű vonalkód és QR formátumot mind fényképeken, mind videófolyamban.
  • VNTrackObjectRequest objektumokat követ videóképkockák között optikai áramláson keresztül a detektor újratanítása nélkül.
  • Core ML integráció a VNCoreMLRequest-en keresztül lehetővé teszi egyedi osztályozási és detektálási modellek futtatását a Vision pipeline-on belül.
  • Minden számítás az eszközön történik a Neural Engine segítségével „ semmilyen kép nem kerül a szerverre, teljes adatvédelem biztosított.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is