Vision: iOSda kompyuter ko'rish freymvorki

Muallif: IT Sectr Nashr etilgan: 2026-07-19 O'qish vaqti: 9 daq

Vision — bu Apple kompaniyasining kompyuter ko‘rish freymvorki bo‘lib, ilk bor iOS 11 da 2017 yilda taqdim etilgan. Vision yuzlarni aniqlash, matnni tanib olish (OCR), shtrix kodlarni topish, obyektlarni kuzatish, tasvirlarni klassifikatsiyalash va kontur tahlili uchun tayyor algoritmlarni taqdim etadi — barchasi Neural Engine yordamida qurilmada bajariladi. Apple WWDC 2023 ma’lumotlariga ko‘ra, Vision standart “Foto” ilovasida yuzlarni tanib olish va “Kamera” da iPhone va iPad da real vaqtda matnni aniqlash uchun ishlatiladi.

Asosiy ma’lumotlar

  • Vision — qurilmada to‘liq tahlil sikliga ega Apple kompyuter ko‘rish freymvorki.
  • Yuzlarni aniqlash, matnni tanib olish (OCR), shtrix kodlar, klassifikatsiya va obyektlarni kuzatishni qo‘llab-quvvatlaydi.
  • Yagona VNRequest mexanizmi orqali ishlaydi — tasvir yoki video oqimiga so‘rovlar.
  • Maxsus modellar uchun Core ML bilan VNCoreMLRequest orqali integratsiyalanadi.
  • Freymvork real vaqt uchun A12+ chiplarida Neural Engine ga optimallashtirilgan.

iOSda Vision nima?

Vision — bu yuqori darajadagi kompyuter ko‘rish freymvorki bo‘lib, murakkab mashina o‘rganish algoritmlarini oddiy VNRequest API si orqali abstraksiyalaydi. Dasturchi konvolyutsion neyron tarmoqlarni bilishi shart emas — tegishli turdagi so‘rov yaratish, tasvirni uzatish va natijani olish kifoya.

Vision arxitekturasi Request → Handler → Result tamoyiliga asoslangan: VNImageRequestHandler tasvirni qabul qiladi, VNRequest ni bajaradi va natijalar bilan VNObservation massivini qaytaradi. Bu bitta tasvirga bir nechta so‘rovlarni birlashtirish imkonini beradi — masalan, bir vaqtning o‘zida fotosuratdagi yuzlar va matnni aniqlash.

Vision iOS 11+ va macOS 10.13+ ni qo‘llab-quvvatlaydi. Neural Engine orqali apparat tezlashtirish uchun A12 Bionic yoki undan yangiroq chip talab qilinadi. A17 Pro va M seriyali qurilmalarda Vision oqimli video uchun sekundiga 60 kadrgacha ishlaydi.

Asosiy afzallik Vision — to‘liq maxfiylik: barcha hisob-kitoblar qurilmada bajariladi, tasvirlar serverga yuborilmaydi. Bu freymvorkni nozik ma’lumotlar bilan ishlaydigan ilovalarda, masalan tibbiy yoki bank ilovalarida qo‘llash imkonini beradi.

Yuzlarni aniqlash va tanib olish

VNDetectFaceRectanglesRequest — tasvirda yuzlarni aniqlash uchun asosiy Vision so‘rovi. Muayyan shaxsni identifikatsiya qilmasdan, har bir yuzni chegaralovchi to‘rtburchaklar koordinatalarini qaytaradi.

Batafsilroq tahlil uchun VNDetectFaceLandmarksRequest dan foydalaning, u yuzning asosiy nuqtalarini aniqlaydi: ko‘zlar, qoshlar, burun, og‘iz, jag‘ konturi. Bu ma’lumotlar real vaqtda maskalarni qo‘llash, emoji animatsiyasi va filtrlar uchun ishlatiladi (FaceTime va Snapchat dagi kabi).

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 nafaqat boundingBox, balki confidence (0 dan 1 gacha ishonchlilik) va landmarks — agar so‘rov VNDetectFaceLandmarksRequest bo‘lsa, yuz nuqtalari massivini o‘z ichiga oladi. Confidence 0.5 dan past bo‘lsa, odatda noto‘g‘ri aniqlashni bildiradi — bunday natijalarni rad etish tavsiya etiladi.

Vision shuningdek VNDetectFaceCaptureQualityRequest ni qo‘llab-quvvatlaydi, u yuz tasvirining sifatini baholaydi: yoritish, aniqlik, aylanish burchagi. Bu foydalanuvchini ro‘yxatdan o‘tkazishda yoki avatar yaratishda eng yaxshi kadrni tanlash uchun foydalidir.

Vision bilan matnni tanib olish (OCR)

VNRecognizeTextRequest — iOS 13 da taqdim etilgan Apple ning ichki OCR mexanizmi. 13 tilni qo‘llab-quvvatlagan holda tasvirlardagi bosma matnni taniydi: ingliz, rus, xitoy, yapon, koreys, italyan, nemis, ispan, portugal, fransuz, arab, vyetnam va tay.

VNRecognizeTextRequest ikki aniqlik darajasini qo‘llab-quvvatlaydi: .fast (tez, kontrast fonda oddiy matn uchun) va .accurate (aniq, turli shrift va burchakli murakkab sahnalar uchun). .fast 3–5 marta tezroq ishlaydi, lekin qo‘l yozuvi va nostandart shriftlar bilan yomonroq natija beradi.

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 xususiyati til modeli yordamida tanib olingan matnni tuzatishni faollashtiradi. Bu ingliz tili uchun aniqlikni 10–15% ga oshiradi, lekin ishlov berish vaqtini uzaytiradi. Rus tili uchun ham tuzatish mavjud, agar tegishli rekognitsiya ko‘rsatilgan bo‘lsa.

Apple ML Research 2022 ma’lumotlariga ko‘ra, .accurate darajasida VNRecognizeTextRequest aniqligi ingliz tilidagi hujjatlarning aniq fotosuratlari uchun 96% va rus tili uchun taxminan 88% ni tashkil qiladi. Paketlar, belgilar va ekranlardagi matn uchun aniqlik 75–85% gacha pasayadi.

Recognition LevelTezlikAniqlik (ingliz)Rus tili qo‘llab-quvvatlash
.fast0.1–0.3 soniya~85%Ha
.accurate0.3–1.0 soniya~96%Ha

Shtrix kod va QR kodlarni aniqlash

VNDetectBarcodesRequest — tasvirda shtrix kodlar va QR kodlarni aniqlash va dekodlash uchun Vision so‘rovi. Barcha asosiy formatlar qo‘llab-quvvatlanadi: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec va QR.

AVFoundation dan (AVCaptureMetadataOutput) farqli o‘laroq, Vision nafaqat video oqimi bilan, balki statik tasvirlar bilan ham ishlaydi — bu allaqachon olingan fotosuratlar yoki ekran tasvirlaridan kodlarni skanerlash imkonini beradi. Vision shuningdek kodning boundingBox ini piksel aniqligida aniqlaydi, bu topilgan kod atrofida ramka animatsiyasi uchun qulay.

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 (dekodlangan mazmun), symbology (kod turi) va confidence ni o‘z ichiga oladi. QR kodlar uchun payload URL, matn yoki JSON bo‘lishi mumkin. EAN/UPC uchun mahsulotning raqamli kodi qaytariladi, undan ma’lumotlar bazasida tovarni qidirish uchun foydalanish mumkin.

Vision bitta tasvirda bir nechta shtrix kodlarni qayta ishlay oladi – observations massivi har bir topilgan kod uchun bitta obyektni o‘z ichiga oladi. Bu tovar paketlari yoki bir nechta shtrix kodli hujjatlarni skanerlash uchun foydalidir.

Video oqimida obyektlarni kuzatish

VNDetectObjectAtPointRequest va VNSequenceRequestHandler — video oqimida obyektlarni kuzatish uchun Vision vositalari. Birinchisi obyektni foydalanuvchining teginish nuqtasi bilan aniqlaydi, ikkinchisi obyektni video kadrlar orasida kuzatadi.

VNSequenceRequestHandler tasvirlar ketma-ketligini (video kadrlarini) qabul qiladi va har bir kadr uchun kuzatilayotgan obyektning yangilangan pozitsiyasini qaytaradi. Bu kengaytirilgan reallik ilovalari, video muharrirlar va video kuzatuv tizimlarida qo‘llaniladi.

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
    // Obyektning ekrandagi holatini yangilang
}

VNTrackObjectRequest optik oqimga asoslangan kuzatish algoritmidan foydalanadi — har bir kadrda detektorni qayta o‘rgatmaydi, balki obyektning oldingi holatga nisbatan siljishini hisoblaydi. Bu hatto Neural Engine bo‘lmagan qurilmalarda ham real vaqtda ishlash imkonini beradi.

Cheklov: kuzatish tez harakat, yopilish yoki yoritishning keskin o‘zgarishida obyektni yo‘qotishi mumkin. Apple kuzatishni to‘g‘irlash uchun har 10–15 kadrda deteksiyani (VNDetectObjectAtPointRequest) qayta ishga tushirishni tavsiya qiladi.

Tasvirlarni klassifikatsiyalash va kontur tahlili

VNClassifyImageRequest — 1000 toifada tasvirlarni klassifikatsiyalash uchun ichki Vision modeli (ResNet-50 modeli, ImageNet da o‘qitilgan). So‘rov toifa nomi va ishonchlilik bilan VNClassificationObservation massivini qaytaradi.

VNDetectContoursRequest tasvirning kontur tahlilini bajaradi — obyektlarning chegaralarini ajratadi, bu segmentatsiya, konturlash va tanib olishdan oldin dastlabki ishlov berish uchun foydalidir. So‘rov tasvirdagi har bir konturni tavsiflovchi nuqtalar massivini qaytaradi.

swift
import Vision

// Tasvir klassifikatsiyasi
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 umumiy toifalar (mushuk, it, mashina, ovqat) uchun yaxshi ishlaydi, lekin maxsus obyektlar uchun mos emas — ular uchun maxsus Core ML modelini o‘qitish va VNCoreMLRequest dan foydalanish kerak. Apple modeli mobil qurilmalar uchun optimallashtirilgan va atigi 5 MB joy egallaydi.

VNDetectContoursRequest kontur turini ko‘rsatuvchi (tashqi, ichki, teshik) nuqtalar massivi shaklida konturlarni qaytaradi. Bu so‘rov OCR dan oldin tasvirlarni dastlabki qayta ishlash (matn kontrastini yaxshilash), effektlarni chizish (obyekt konturlari) va shakllarni tahlil qilish uchun ishlatiladi.

Vision so‘roviMaqsadiOS versiyasi
VNDetectFaceRectanglesRequestTasvirda yuzlarni qidirishiOS 11
VNRecognizeTextRequestMatnni tanib olish (OCR)iOS 13
VNDetectBarcodesRequestShtrix kod va QR aniqlashiOS 11
VNClassifyImageRequestTasvirlarni klassifikatsiyalashiOS 13
VNDetectContoursRequestKontur tahliliiOS 14
VNTrackObjectRequestObyektlarni kuzatishiOS 11

Tez-tez beriladigan savollar

Kompyuter ko‘rish uchun Vision va Core ML o‘rtasidagi farq nima?

Vision modelni o‘qitmasdan tayyor algoritmlarni taqdim etadi (yuzni aniqlash, OCR, shtrix kodlar). Core ML — bu maxsus modellarni bajarish mexanizmi. Vision + VNCoreMLRequest Vision quvurida Core ML modellarini ishga tushirish imkonini beradi, ikkala dunyoning eng yaxshi tomonlarini birlashtiradi: Vision ning tayyor detektorlari + Core ML ning maxsus klassifikatsiyasi.

Vision real vaqtda videoda ishlaydimi?

Ha, Vision VNSequenceRequestHandler orqali kuzatish va AVCaptureVideoDataOutput orqali kadrma-kadr ishlov berish uchun real vaqtda video oqimini qayta ishlashni qo‘llab-quvvatlaydi. A12+ va Neural Engine li qurilmalarda Vision yuzlarni aniqlash uchun sekundiga 60 kadrgacha ishlaydi. Og‘ir vazifalar (OCR, klassifikatsiya) uchun har 5–10 kadrni qayta ishlash tavsiya etiladi.

VNRecognizeTextRequest qanday tillarni qo‘llab-quvvatlaydi?

VNRecognizeTextRequest 13 tilni qo‘llab-quvvatlaydi: ingliz, rus, xitoy (soddalashtirilgan va an’anaviy), yapon, koreys, italyan, nemis, ispan, portugal, fransuz, arab, vyetnam va tay. Bitta tasvirda bir nechta tillarni tanib olish uchun recognitionLanguages xususiyatida massivni ko‘rsating.

Vision Core ML modeli bilan ishlatilishi mumkinmi?

Ha, VNCoreMLRequest orqali. Siz VNCoreMLModel ga o‘ralgan Core ML modelini yaratasiz va uni VNCoreMLRequest ga uzatasiz. Vision avtomatik ravishda tasvirni oldindan qayta ishlashni (masshtablash, kesish) boshqaradi va uni Core ML modeliga uzatadi. Natija modelning chiqish ma’lumotlari bilan VNCoreMLFeatureValueObservation sifatida qaytariladi.

Vision tasvirlarni Apple serveriga yuboradimi?

Yo‘q, Vision barcha tahlilni to‘liq qurilmada bajaradi. Tasvirlar foydalanuvchi qurilmasini tark etmaydi. Bu Apple ning asosiy arxitekturasi: barcha ML freymvorklari (Vision, NaturalLanguage, Core ML, Speech) maxfiylikni ta’minlash uchun on-device ishlaydi. Hech qanday ma’lumot Apple serverlariga yuborilmaydi.

Xulosa

  • Vision — VNRequest asosidagi API bilan Apple kompaniyasining on-device kompyuter ko‘rish freymvorki, iOS 11 dan boshlab barcha Apple qurilmalarida mavjud.
  • VNDetectFaceRectanglesRequest va VNDetectFaceLandmarksRequest filtrlar, maskalar va animatsiya uchun yuzlar va asosiy nuqtalarni aniqlaydi.
  • VNRecognizeTextRequest — 13 til uchun ichki OCR, .fast va .accurate darajalari bilan hujjatlar uchun 96% gacha aniqlik.
  • VNDetectBarcodesRequest ham fotosuratda, ham video oqimida barcha mashhur shtrix kod formatlarini dekodlaydi.
  • VNTrackObjectRequest detektorni qayta o‘rgatmasdan optik oqim orqali video kadrlar orasida obyektlarni kuzatadi.
  • Core ML integratsiyasi VNCoreMLRequest orqali Vision quvurida maxsus klassifikatsiya va aniqlash modellarini ishga tushirish imkonini beradi.
  • Barcha hisob-kitoblar qurilmada Neural Engine yordamida bajariladi — hech qanday tasvir serverga yuborilmaydi, ma’lumotlarning to‘liq maxfiyligi ta’minlanadi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing