Vision: iOS-da kompüter görmə freymvorku

Müəllif: IT Sectr Dərc olunub: 2026-07-19 Oxuma vaxtı: 9 dəq

Vision — Apple-dan kompüter görmə freymvorkudur, ilk dəfə iOS 11-də 2017-ci ildə təqdim edilmişdir. Vision üz aşkarlama, mətn tanıma (OCR), ştrixkod aşkarlama, obyekt izləmə, təsvir klassifikasiyası və kontur analizi üçün hazır alqoritmlər təqdim edir — bütün bunlar Neural Engine istifadə edərək cihazda yerinə yetirilir. Apple WWDC 2023 məlumatına görə, Vision standart “Foto” tətbiqində üz tanıma və “Kamera”da iPhone və iPad-də real vaxtda mətn aşkarlama üçün istifadə olunur.

Əsas məqamlar

  • Vision — cihazda tam analiz dövrü ilə Apple kompüter görmə freymvorku.
  • Üz aşkarlama, mətn tanıma (OCR), ştrixkodlar, təsnifat və obyekt izləməni dəstəkləyir.
  • Vahid VNRequest mexanizmi — təsvir və ya video axınına sorğular vasitəsilə işləyir.
  • Xüsusi modellər üçün Core ML ilə VNCoreMLRequest vasitəsilə inteqrasiya olunur.
  • Freymvork real vaxt üçün A12+ çiplərində Neural Engine-ə uyğun optimallaşdırılıb.

iOS-da Vision nədir?

Vision — yüksək səviyyəli kompüter görmə freymvorkudur, mürəkkəb maşın öyrənmə alqoritmlərini sadə VNRequest API-si ilə abstraksiya edir. Tərtibatçı konvolyusiyalı neyron şəbəkələri bilməlidir — sadəcə lazımi tipli sorğu yaratmaq, təsviri ötürmək və nəticəni almaq kifayətdir.

Vision arxitekturası Request → Handler → Result prinsipi üzərində qurulub: VNImageRequestHandler təsviri qəbul edir, VNRequest-i yerinə yetirir və nəticələrlə VNObservation massivi qaytarır. Bu, bir təsvirə bir neçə sorğunu birləşdirməyə imkan verir — məsələn, eyni anda fotoşəkildə üzləri və mətni aşkarlamaq.

Vision iOS 11+ və macOS 10.13+-u dəstəkləyir. Neural Engine vasitəsilə aparat sürətləndirməsi üçün A12 Bionic və ya daha yeni çip tələb olunur. A17 Pro və M seriyalı cihazlarda Vision axın videosu üçün saniyədə 60 kadr emal edir.

Əsas üstünlük Vision — tam məxfilik: bütün hesablamalar cihazda yerinə yetirilir, təsvirlər serverə göndərilmir. Bu, freymvorku həssas məlumatlarla işləyən tətbiqlərdə, məsələn tibbi və ya bank tətbiqlərində istifadə etməyə imkan verir.

Üz aşkarlama və tanıma

VNDetectFaceRectanglesRequest — təsvirdə üzləri aşkarlamaq üçün əsas Vision sorğusu. Konkret şəxsi identifikasiya etmədən hər üzü məhdudlaşdıran düzbucaqlıların koordinatlarını qaytarır.

Daha ətraflı analiz üçün VNDetectFaceLandmarksRequest istifadə edin, o, üzün əsas nöqtələrini müəyyən edir: gözlər, qaşlar, burun, ağız, çənə konturu. Bu məlumatlar real vaxtda maskaların tətbiqi, emoji animasiyası və filtrlər üçün istifadə olunur (FaceTime və Snapchat-dakı kimi).

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 yalnız boundingBox deyil, həm də confidence (0-dan 1-ə qədər inam) və landmarks — sorğu VNDetectFaceLandmarksRequest idisə, üz nöqtələrinin massivini ehtiva edir. Confidence 0.5-dən aşağı olduqda adətən yanlış aşkarlama deməkdir — belə nəticələrin atılması tövsiyə olunur.

Vision həmçinin VNDetectFaceCaptureQualityRequest-i dəstəkləyir, o, üz təsvirinin keyfiyyətini qiymətləndirir: işıqlandırma, kəskinlik, dönmə bucağı. Bu, istifadəçi qeydiyyatı zamanı ən yaxşı kadrı seçmək və ya avatar yaratmaq üçün faydalıdır.

Vision ilə mətn tanıma (OCR)

VNRecognizeTextRequest — iOS 13-də təqdim edilmiş Apple-ın daxili OCR mühərrikidir. 13 dil dəstəyi ilə təsvirlərdə çap mətnini tanıyır: ingilis, rus, çin, yapon, koreya, italyan, alman, ispan, portuqal, fransız, ərəb, vyetnam və tay.

VNRecognizeTextRequest iki dəqiqlik səviyyəsini dəstəkləyir: .fast (sürətli, kontrast fonunda sadə mətn üçün) və .accurate (dəqiq, müxtəlif şrift və bucaqları olan mürəkkəb səhnələr üçün). .fast 3–5 dəfə sürətli işləyir, lakin əlyazma mətni və qeyri-standart şriftlərlə daha pis nəticə göstərir.

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 xassəsi dil modeli istifadə edərək tanınan mətnin korreksiyasını aktivləşdirir. Bu, ingilis dili üçün dəqiqliyi 10–15% artırır, lakin emal müddətini uzadır. Rus dili üçün də korreksiya mövcuddur, əgər müvafiq rekognisiya göstərilibsə.

Apple ML Research 2022 məlumatına görə, .accurate səviyyəsində VNRecognizeTextRequest dəqiqliyi ingilis dilində aydın sənəd fotoları üçün 96% və rus dili üçün təxminən 88% təşkil edir. Paketlərdə, lövhələrdə və ekranlarda mətn üçün dəqiqlik 75–85%-ə qədər azalır.

Recognition LevelSürətDəqiqlik (ingilis)Rus dili dəstəyi
.fast0.1–0.3 san~85%Bəli
.accurate0.3–1.0 san~96%Bəli

Ştrixkod və QR aşkarlama

VNDetectBarcodesRequest — təsvirdə ştrixkodları və QR kodları aşkarlamaq və dekodlaşdırmaq üçün Vision sorğusu. Bütün əsas formatlar dəstəklənir: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec və QR.

AVFoundation-dan (AVCaptureMetadataOutput) fərqli olaraq, Vision yalnız video axını ilə deyil, həm də statik təsvirlərlə işləyir — bu, artıq çəkilmiş fotolardan və ya ekran görüntülərindən kodları skan etməyə imkan verir. Vision həmçinin kodun boundingBox-unu piksel dəqiqliyi ilə müəyyən edir, bu da tapılan kodun ətrafında çərçivə animasiyası üçün əlverişlidir.

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 (dekodlaşdırılmış məzmun), symbology (kod növü) və confidence ehtiva edir. QR kodları üçün payload URL, mətn və ya JSON ola bilər. EAN/UPC üçün məlumat bazasında məhsul axtarışı üçün istifadə edilə bilən rəqəmli məhsul kodu qaytarılır.

Vision bir təsvirdə bir neçə ştrixkodu emal edə bilər — observations massivi hər tapılan kod üçün bir obyekt ehtiva edir. Bu, mal paketlərini və ya çoxsaylı ştrixkodlu sənədləri skan etmək üçün faydalıdır.

Video axınında obyekt izləmə

VNDetectObjectAtPointRequestVNSequenceRequestHandler — video axınında obyekt izləmək üçün Vision alətləri. Birincisi obyekti istifadəçinin toxunma nöqtəsi ilə müəyyən edir, ikincisi obyekti video kadrlar arasında izləyir.

VNSequenceRequestHandler təsvirlər ardıcıllığını (video kadrları) qəbul edir və hər kadr üçün izlənilən obyektin yenilənmiş mövqeyini qaytarır. Bu, genişləndirilmiş reallıq tətbiqlərində, video redaktorlarda və müşahidə sistemlərində istifadə olunur.

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
    // Obyektin ekrandakı mövqeyini yenilə
}

VNTrackObjectRequest optik axın əsasında izləmə alqoritmindən istifadə edir — hər kadrda detektoru yenidən öyrətməz, əvvəlki vəziyyətə nisbətən obyektin yerdəyişməsini hesablayır. Bu, hətta Neural Engine olmayan cihazlarda real vaxtda işləməyə imkan verir.

Məhdudiyyət: izləmə sürətli hərəkət, örtülmə və ya işıqlandırmanın kəskin dəyişməsi zamanı obyekti itirə bilər. Apple izləməni düzəltmək üçün hər 10–15 kadrdan bir deteksiyanı (VNDetectObjectAtPointRequest) yenidən başlatmağı tövsiyə edir.

Təsvir klassifikasiyası və kontur analizi

VNClassifyImageRequest — 1000 kateqoriya üzrə təsvir klassifikasiyası üçün daxili Vision modelidir (ResNet-50 modeli, ImageNet-də təlim keçmiş). Sorğu kateqoriya adı və inamla VNClassificationObservation massivi qaytarır.

VNDetectContoursRequest təsvirin kontur analizini yerinə yetirir — obyektlərin sərhədlərini ayırır, bu, seqmentasiya, konturlama və tanımadan əvvəl ilkin emal üçün faydalıdır. Sorğu təsvirdə hər konturu təsvir edən nöqtələr massivi qaytarır.

swift
import Vision

// Təsvir klassifikasiyası
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 ümumi kateqoriyalar (pişik, it, maşın, yemək) üçün yaxşı işləyir, lakin spesifik obyektlər üçün uyğun deyil — onlar üçün xüsusi Core ML modeli öyrətmək və VNCoreMLRequest istifadə etmək lazımdır. Apple modeli mobil cihazlar üçün optimallaşdırılıb və cəmi 5 MB yer tutur.

VNDetectContoursRequest kontur növünü göstərən (xarici, daxili, deşik) nöqtələr massivi şəklində konturları qaytarır. Bu sorğu OCR-dən əvvəl təsvirlərin ilkin emalı (mətn kontrastını yaxşılaşdırma), effektlərin çəkilməsi (obyekt konturları) və formaların analizi üçün istifadə olunur.

Vision sorğusuTəyinatiOS versiyası
VNDetectFaceRectanglesRequestTəsvirdə üz axtarışıiOS 11
VNRecognizeTextRequestMətn tanıma (OCR)iOS 13
VNDetectBarcodesRequestŞtrixkod və QR aşkarlamaiOS 11
VNClassifyImageRequestTəsvir klassifikasiyasıiOS 13
VNDetectContoursRequestKontur analiziiOS 14
VNTrackObjectRequestObyekt izləməiOS 11

Tez-tez verilən suallar

Kompüter görmə üçün Vision və Core ML arasında fərq nədir?

Vision model öyrətmədən hazır alqoritmlər təqdim edir (üz aşkarlama, OCR, ştrixkodlar). Core ML — xüsusi modelləri yerinə yetirmək üçün mühərrikdir. Vision + VNCoreMLRequest Vision boru kəmərində Core ML modellərini işə salmağa imkan verir, hər ikisinin ən yaxşı tərəflərini birləşdirir: Vision-un hazır detektorları + Core ML-in xüsusi klassifikasiyası.

Vision real vaxtda videoda işləyirmi?

Bəli, Vision VNSequenceRequestHandler vasitəsilə izləmə və AVCaptureVideoDataOutput vasitəsilə kadr-kadr emalı üçün real vaxtda video axını emalını dəstəkləyir. A12+ və Neural Engine olan cihazlarda Vision üz aşkarlama üçün saniyədə 60 kadr emal edir. Ağır tapşırıqlar (OCR, klassifikasiya) üçün hər 5–10 kadrı emal etmək tövsiyə olunur.

VNRecognizeTextRequest hansı dilləri dəstəkləyir?

VNRecognizeTextRequest 13 dil dəstəkləyir: ingilis, rus, çin (sadələşdirilmiş və ənənəvi), yapon, koreya, italyan, alman, ispan, portuqal, fransız, ərəb, vyetnam və tay. Bir təsvirdə bir neçə dili tanımaq üçün recognitionLanguages xassəsində massiv göstərin.

Vision Core ML modeli ilə istifadə edilə bilərmi?

Bəli, VNCoreMLRequest vasitəsilə. Siz VNCoreMLModel-ə bükülmüş Core ML modeli yaradır və onu VNCoreMLRequest-ə ötürürsünüz. Vision avtomatik olaraq təsvirin ilkin emalını (miqyaslama, kəsmə) idarə edir və Core ML modelinə ötürür. Nəticə modelin çıxış məlumatları ilə VNCoreMLFeatureValueObservation kimi qaytarılır.

Vision təsvirləri Apple serverinə göndərir?

Xeyr, Vision bütün analizi tamamilə cihazda yerinə yetirir. Təsvirlər istifadəçinin cihazını tərk etmir. Bu, Apple-ın əsas arxitekturasıdır: bütün ML freymvorkları (Vision, NaturalLanguage, Core ML, Speech) məxfilik təmin etmək üçün on-device işləyir. Heç bir məlumat Apple serverlərinə göndərilmir.

Xülasə

  • Vision — VNRequest əsaslı API ilə Apple-ın on-device kompüter görmə freymvorku, iOS 11-dən etibarən bütün Apple cihazlarında mövcuddur.
  • VNDetectFaceRectanglesRequestVNDetectFaceLandmarksRequest filtrlər, maskalar və animasiya üçün üzləri və əsas nöqtələri aşkarlayır.
  • VNRecognizeTextRequest — 13 dil üçün daxili OCR, .fast və .accurate səviyyələri ilə sənədlər üçün 96% dəqiqlik.
  • VNDetectBarcodesRequest həm foto, həm də video axınında bütün populyar ştrixkod formatlarını dekodlaşdırır.
  • VNTrackObjectRequest detektoru yenidən öyrətmədən optik axın vasitəsilə video kadrlar arasında obyektləri izləyir.
  • Core ML inteqrasiyası VNCoreMLRequest vasitəsilə Vision boru kəmərində xüsusi klassifikasiya və aşkarlama modellərini işə salmağa imkan verir.
  • Bütün hesablamalar cihazda Neural Engine istifadə edərək yerinə yetirilir — heç bir təsvir serverə göndərilmir, məlumatların tam məxfiliyi təmin edilir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun