Vision: фрејмворк компјутерског вида у iOS-у

Аутор: IT Sectr Објављено: 2026-07-19 Време читања: 9 мин

Vision „ је фрејмворк компјутерског вида компаније Apple, први пут представљен у iOS 11 2017. године. Vision пружа готове алгоритме за детекцију лица, препознавање текста (OCR), откривање бар кодова, праћење објеката, класификацију слика и анализу контура „ све се извршава на уређају коришћењем Neural Engine-а. Према подацима Apple WWDC 2023, Vision се користи у стандардној апликацији „Фотографије" за препознавање лица и у „Камери" за детекцију текста у реалном времену на iPhone и iPad уређајима.

Главне карактеристике

  • Vision „ on-device фрејмворк компјутерског вида компаније Apple са комплетним циклусом анализе на уређају.
  • Подржава детекцију лица, препознавање текста (OCR), бар кодове, класификацију и праћење објеката.
  • Ради кроз јединствени механизам VNRequest „ захтјеве према слици или видео стриму.
  • Интегрише се са Core ML за прилагођене моделе путем VNCoreMLRequest-а.
  • Фрејмворк је оптимизован за Neural Engine на чиповима A12+ за рад у реалном времену.

Шта је Vision у iOS-у?

Vision „ је високонивоски фрејмворк компјутерског вида који апстрахује сложене алгоритме машинског учења иза једноставног API-ја захтјева (VNRequest). Програмер не мора да разумије конволуционе неуронске мреже „ довољно је да креира захтјев одговарајућег типа, пошаље слику и добије резултат.

Архитектура Vision-а је изграђена на принципу Request → Handler → Result: VNImageRequestHandler прима слику, извршава VNRequest и враћа низ VNObservation са резултатима. Ово омогућава комбиновање више захтјева према једној слици „ на примјер, истовремено откривање лица и текста на фотографији.

Vision подржава iOS 11+ и macOS 10.13+. За хардверско убрзање путем Neural Engine-а потребан је чип A12 Bionic или новији. На уређајима са A17 Pro и М серијом, Vision обрађује до 60 кадрова у секунди за стримовање видеа.

Кључна предност Vision-а „ потпуна повјерљивост: сва израчунавања се обављају на уређају, слике се не шаљу на сервер. Ово омогућава коришћење фрејмворка у апликацијама које раде са осјетљивим подацима, на примјер у медицинским или банкарским.

Детекција и препознавање лица

VNDetectFaceRectanglesRequest „ основни захтјев Vision-а за откривање лица на слици. Враћа координате правоугаоника који ограничавају свако лице, без идентификације конкретне особе.

За детаљнију анализу користите VNDetectFaceLandmarksRequest, који одређује кључне тачке лица: очи, обрве, нос, уста, контуру вилице. Ови подаци се користе за наношење маски, анимацију емоџија и филтера у реалном времену (као у FaceTime и 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 садржи не само boundingBox, већ и confidence (поузданост од 0 до 1) и landmarks „ низ тачака лица, ако је захтјев био VNDetectFaceLandmarksRequest. Confidence испод 0.5 обично значи лажно позитиван резултат „ такве резултате се препоручује одбацити.

Vision такође подржава VNDetectFaceCaptureQualityRequest, који оцјењује квалитет слике лица: освјетљење, оштрину, угао ротације. Ово је корисно за одабир најбољег кадра при регистрацији корисника или креирању аватара.

Препознавање текста (OCR) са Vision-ом

VNRecognizeTextRequest „ је уграђени OCR мотор компаније Apple, представљен у iOS 13. Препознаје штампани текст на сликама са подршком за 13 језика: енглески, руски, кинески, јапански, корејски, италијански, њемачки, шпански, португалски, француски, арапски, вијетнамски и тајландски.

VNRecognizeTextRequest подржава два нивоа прецизности: .fast (брз, за једноставан текст на контрастној позадини) и .accurate (прецизан, за сложене сцене са различитим фонтовима и угловима). .fast ради 3–5 пута брже, али се лошије носи са рукописним текстом и нестандардним фонтовима.

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

Својство usesLanguageCorrection укључује корекцију препознатог текста коришћењем језичког модела. Ово повећава прецизност за енглески за 10–15%, али повећава вријеме обраде. За руски језик корекција је такође доступна ако је наведено одговарајуће препознавање.

Према подацима Apple ML Research 2022, прецизност VNRecognizeTextRequest-а на нивоу .accurate износи 96% за јасне фотографије докумената на енглеском и око 88% за руски. За текст на паковањима, натписима и екранима прецизност опада на 75–85%.

Recognition LevelБрзинаПрецизност (енглески)Подршка за руски
.fast0.1–0.3 сек~85%Да
.accurate0.3–1.0 сек~96%Да

Откривање бар кодова и QR кодова

VNDetectBarcodesRequest „ захтјев Vision-а за откривање и декодирање бар кодова и QR кодова на слици. Подржани су сви главни формати: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec и QR.

За разлику од AVFoundation (AVCaptureMetadataOutput), Vision ради не само са видео стримом, већ и са статичним сликама „ ово омогућава скенирање кодова са већ направљених фотографија или снимака екрана. Vision такође одређује boundingBox кода са прецизношћу до пиксела, што је згодно за анимацију оквира око пронађеног кода.

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 садржи payloadStringValue (декодирани садржај), symbology (тип кода) и confidence. За QR кодове, payload може бити URL, текст или JSON. За EAN/UPC враћа се нумерички код производа који се може користити за претрагу артикла у бази података.

Vision може да обради више бар кодова на једној слици „ низ observations садржи по један објекат за сваки пронађени код. Ово је корисно за скенирање пакета производа или докумената са више бар кодова.

Праћење објеката у видео стриму

VNDetectObjectAtPointRequest и VNSequenceRequestHandler „ алати Vision-а за праћење објеката у видео стриму. Први одређује објекат по тачки додира корисника, други прати објекат између кадрова видеа.

VNSequenceRequestHandler прима низ слика (кадрове видеа) и за сваки кадар враћа ажурирану позицију предмета који се прати. Ово се користи у апликацијама проширене стварности, видео едиторима и системима за видео надзор.

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
    // Ажурирај позицију објекта на екрану
}

VNTrackObjectRequest користи алгоритам праћења заснован на оптичком протоку „ не обучава поново детектор на сваком кадру, већ израчунава помјерање објекта у односу на претходни положај. Ово омогућава рад у реалном времену чак и на уређајима без Neural Engine-а.

Ограничење: праћење може изгубити објекат при брзом покрету, прекривању или наглој промјени освјетљења. Apple препоручује поновно покретање детекције (VNDetectObjectAtPointRequest) сваких 10–15 кадрова ради корекције праћења.

Класификација слика и анализа контура

VNClassifyImageRequest „ уграђени модел Vision-а за класификацију слика у 1000 категорија (модел ResNet-50, обучен на ImageNet-у). Захтјев враћа низ VNClassificationObservation са називом категорије и поузданошћу.

VNDetectContoursRequest врши анализу контура слике „ издваја границе објеката, што је корисно за сегментацију, оцртавање и предобраду прије препознавања. Захтјев враћа низ тачака које описују сваку контуру на слици.

swift
import Vision

// Класификација слике
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 добро ради за опште категорије (мачка, пас, аутомобил, храна), али није погодан за специфичне објекте „ за њих је потребно обучити прилагођени Core ML модел и користити VNCoreMLRequest. Модел компаније Apple је оптимизован за мобилне уређаје и заузима само 5 MB.

VNDetectContoursRequest враћа контуре у облику низа тачака са назнаком типа контуре (спољашња, унутрашња, рупа). Овај захтјев се користи за предобраду слика прије OCR-а (побољшање контраста текста), за цртање ефеката (оцртавање објеката) и за анализу облика.

Vision захтјевНамјенаiOS верзија
VNDetectFaceRectanglesRequestПроналажење лица на слициiOS 11
VNRecognizeTextRequestПрепознавање текста (OCR)iOS 13
VNDetectBarcodesRequestДетекција бар кодова и QRiOS 11
VNClassifyImageRequestКласификација сликаiOS 13
VNDetectContoursRequestАнализа контураiOS 14
VNTrackObjectRequestПраћење објекатаiOS 11

Често постављана питања

Која је разлика између Vision-а и Core ML-а за компјутерски вид?

Vision пружа готове алгоритме (детекција лица, OCR, бар кодови) без обучавања модела. Core ML „ је мотор за извршавање прилагођених модела. Vision + VNCoreMLRequest омогућавају покретање Core ML модела у Vision пајплајну, комбинујући најбоље из оба свијета: готови детектори Vision-а + прилагођена класификација Core ML-а.

Да ли Vision ради у реалном времену на видеу?

Да, Vision подржава обраду видео стрима у реалном времену путем VNSequenceRequestHandler-а за праћење и путем AVCaptureVideoDataOutput-а за обраду кадар по кадар. На уређајима са A12+ и Neural Engine-ом, Vision обрађује до 60 кадрова у секунди за детекцију лица. За тешке задатке (OCR, класификација) препоручује се обрада сваког 5–10 кадра.

Које језике подржава VNRecognizeTextRequest?

VNRecognizeTextRequest подржава 13 језика: енглески, руски, кинески (поједностављени и традиционални), јапански, корејски, италијански, њемачки, шпански, португалски, француски, арапски, вијетнамски и тајландски. За препознавање више језика на једној слици наведите низ у својству recognitionLanguages.

Може ли се Vision користити са Core ML моделом?

Да, путем VNCoreMLRequest-а. Креирате Core ML модел, умотан у VNCoreMLModel, и proслиjеђивати га VNCoreMLRequest-у. Vision аутоматски управља предобрадом слике (скалирање, исијецање) и proслиjеђује је Core ML моделу. Резултат се враћа као VNCoreMLFeatureValueObservation са излазним подацима модела.

Да ли Vision шаље слике на Apple сервер?

Не, Vision обавља цијелу анализу потпуно на уређају. Слике не напуштају уређај корисника. Ово је фундаментална архитектура компаније Apple: сви ML фрејмворкови (Vision, NaturalLanguage, Core ML, Speech) раде on-device ради обезбјеђења приватности. Никакви подаци се не шаљу на Apple сервере.

Закључак

  • Vision „ on-device фрејмворк компјутерског вида компаније Apple са API-јем заснованим на VNRequest-у, доступан од iOS 11 на свим Apple уређајима.
  • VNDetectFaceRectanglesRequest и VNDetectFaceLandmarksRequest откривају лица и кључне тачке за филтере, маске и анимације.
  • VNRecognizeTextRequest „ уграђени OCR за 13 језика са нивоима .fast и .accurate и прецизношћу до 96% за документе.
  • VNDetectBarcodesRequest декодира све популарне формате бар кодова и QR кодова како на фотографијама, тако и у видео стриму.
  • VNTrackObjectRequest прати објекте између кадрова видеа путем оптичког протока без поновног обучавања детектора.
  • Интеграција са Core ML-ом путем VNCoreMLRequest-а омогућава покретање прилагођених модела класификације и детекције унутар Vision пајплајна.
  • Сва израчунавања се обављају на уређају коришћењем Neural Engine-а „ никакве слике се не шаљу на сервер, уз потпуну повјерљивост података.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође