Vision: iOS’te bilgisayarlı görü framework’ü

Yazar: IT Sectr Yayınlanma: 2026-07-19 Okuma süresi: 9 dk

Vision Apple’ın bilgisayarlı görü framework’üdür ve ilk olarak 2017’de iOS 11 ile tanıtılmıştır. Vision, yüz algılama, metin tanıma (OCR), barkod algılama, nesne takibi, görüntü sınıflandırma ve kontur analizi için hazır algoritmalar sunar — tümü Neural Engine kullanılarak cihaz üzerinde gerçekleştirilir. Apple WWDC 2023’e göre Vision, standart Fotoğraflar uygulamasında yüz tanıma için ve Kamera uygulamasında iPhone ve iPad’de gerçek zamanlı metin algılama için kullanılır.

Önemli Noktalar

  • Vision — cihaz üzerinde tam analiz döngüsüne sahip Apple’ın cihaz-içi bilgisayarlı görü framework’ü.
  • Yüz algılama, metin tanıma (OCR), barkod, sınıflandırma ve nesne takibini destekler.
  • Birleşik VNRequest mekanizması aracılığıyla çalışır — bir görüntüye veya video akışına istekler.
  • VNCoreMLRequest aracılığıyla özel modeller için Core ML ile entegre olur.
  • Framework, gerçek zamanlı performans için A12+ çiplerde Neural Engine için optimize edilmiştir.

iOS’te Vision nedir?

Vision, karmaşık makine öğrenimi algoritmalarını basit bir istek API’sinin (VNRequest) arkasında soyutlayan üst düzey bir bilgisayarlı görü framework’üdür. Geliştiricinin evrişimli sinir ağlarını anlaması gerekmez — sadece uygun istek türünü oluşturun, bir görüntü gönderin ve sonucu alın.

Vision’ın mimarisi Request → Handler → Result prensibini izler: VNImageRequestHandler bir görüntüyü kabul eder, VNRequest’i yürütür ve sonuçlarla birlikte bir VNObservation dizisi döndürür. Bu, tek bir görüntü üzerinde birden fazla isteği birleştirmeye olanak tanır — örneğin, bir fotoğrafla aynı anda yüzleri ve metni algılamak.

Vision iOS 11+ ve macOS 10.13+’ü destekler. Neural Engine aracılığıyla donanım hızlandırması için A12 Bionic çip veya daha yenisi gerekir. A17 Pro ve M serisi cihazlarda, Vision akış video için saniyede 60 kareye kadar işlem yapar.

Ana avantajı tam gizliliktir: tüm hesaplamalar cihazda yapılır, görüntüler asla bir sunucuya gönderilmez. Bu, framework’ün tıbbi veya bankacılık uygulamaları gibi hassas verilerle çalışan uygulamalarda kullanılmasına olanak tanır.

Yüz algılama ve tanıma

VNDetectFaceRectanglesRequest, bir görüntüde yüzleri algılamak için temel Vision isteğidir. Belirli bir kişiyi tanımlamadan, her yüzü çevreleyen dikdörtgenlerin koordinatlarını döndürür.

Daha ayrıntılı analiz için, yüzün temel noktalarını tanımlayan VNDetectFaceLandmarksRequest’i kullanın: gözler, kaşlar, burun, ağız, çene hattı. Bu veriler, maske uygulamak, emoji animasyonları ve gerçek zamanlı filtreler (FaceTime ve Snapchat’te olduğu gibi) için kullanılır.

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ızca boundingBox değil, aynı zamanda confidence (0’1 arası güven) ve landmarks — istek VNDetectFaceLandmarksRequest ise yüz noktalarından oluşan bir dizi — içerir. 0,5’in altındaki confidence genellikle yanlış pozitif olduğunu gösterir — bu tür sonuçlar atılmalıdır.

Vision ayrıca yüz görüntüsü kalitesini (aydınlatma, keskinlik, dönüş açısı) değerlendiren VNDetectFaceCaptureQualityRequest’i de destekler. Bu, kullanıcı kaydı sırasında en iyi kareyi seçmek veya avatar oluşturmak için kullanışlıdır.

Vision ile metin tanıma (OCR)

VNRecognizeTextRequest, iOS 13 ile tanıtılan Apple’ın yerleşik OCR motorudur. 13 dili destekleyerek görüntülerdeki basılı metni tanır: İngilizce, Rusça, Çince, Japonca, Korece, İtalyanca, Almanca, İspanyolca, Portekizce, Fransızca, Arapça, Vietnamca ve Tayca.

VNRecognizeTextRequest iki doğruluk seviyesini destekler: .fast (hızlı, kontrastlı arka plandaki basit metin için) ve .accurate (doğru, farklı yazı tipleri ve açılara sahip karmaşık sahneler için). .fast 3–5 kat daha hızlıdır ancak el yazısı metni ve standart olmayan yazı tiplerini daha az etkili bir şekilde işler.

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 özelliği, bir dil modeli kullanarak tanınan metin düzeltmesini etkinleştirir. Bu, İngilizce doğruluğunu %10–15 artırır ancak işlem süresini uzatır. Uygun tanıma belirtildiğinde Rusça dil düzeltmesi de mevcuttur.

Apple ML Research 2022’ye göre, .accurate seviyesindeki VNRecognizeTextRequest doğruluğu, İngilizce net belge fotoğrafları için %96 ve Rusça için yaklaşık %88’dir. Paketler, tabelalar ve ekranlardaki metin için doğruluk %75–85’e düşer.

Tanıma SeviyesiHızDoğruluk (İngilizce)Rusça Desteği
.fast0,1–0,3 sn~%85Evet
.accurate0,3–1,0 sn~%96Evet

Barkod ve QR kod algılama

VNDetectBarcodesRequest — görüntülerde barkod ve QR kodlarını algılamak ve çözmek için bir Vision isteği. Tüm ana formatlar desteklenir: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec ve QR.

AVFoundation’dan (AVCaptureMetadataOutput) farklı olarak, Vision yalnızca video akışlarıyla değil, aynı zamanda statik görüntülerle de çalışır — mevcut fotoğraflardan veya ekran görüntülerinden kod taramasına olanak tanır. Vision ayrıca kodun boundingBox’ını piksel hassasiyetiyle belirler; bu, algılanan kodun etrafında bir çerçeve canlandırmak için kullanışlıdır.

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 (çözülen içerik), symbology (kod türü) ve confidence içerir. QR kodları için yük bir URL, metin veya JSON olabilir. EAN/UPC için, bir veritabanında ürünü aramak için kullanılabilecek sayısal bir ürün kodu döndürülür.

Vision, tek bir görüntüde birden çok barkodu işleyebilir — observations dizisi, algılanan her kod için bir nesne içerir. Bu, ürün gruplarını veya birden çok barkoda sahip belgeleri taramak için kullanışlıdır.

Video akışında nesne takibi

VNDetectObjectAtPointRequest ve VNSequenceRequestHandler — video akışındaki nesneleri izlemek için Vision araçları. İlki, kullanıcının dokunma noktasıyla bir nesneyi tanımlar, ikincisi video kareleri arasında bir nesneyi izler.

VNSequenceRequestHandler, bir dizi görüntüyü (video kareleri) kabul eder ve her kare için izlenen nesnenin güncellenmiş konumunu döndürür. Bu, artırılmış gerçeklik uygulamalarında, video düzenleyicilerinde ve gözetim sistemlerinde kullanılır.

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
    // Ekrandaki nesne konumunu güncelle
}

VNTrackObjectRequest, optik akış tabanlı bir izleme algoritması kullanır — dedektörü her karede yeniden eğitmez, ancak nesnenin önceki konumuna göre yer değiştirmesini hesaplar. Bu, Neural Engine olmayan cihazlarda bile gerçek zamanlı performans sağlar.

Sınırlama: hızlı hareket, tıkanma veya ani aydınlatma değişiklikleri sırasında izleme nesneyi kaybedebilir. Apple, izleme düzeltmesi için her 10–15 karede bir algılamayı (VNDetectObjectAtPointRequest) yeniden başlatmayı önerir.

Görüntü sınıflandırma ve kontur analizi

VNClassifyImageRequest, 1.000 kategoride görüntü sınıflandırması için Vision’ın yerleşik modelidir (ImageNet üzerinde eğitilmiş ResNet-50 modeli). İstek, kategori adı ve güven ile VNClassificationObservation dizisi döndürür.

VNDetectContoursRequest, görüntü kontur analizi yapar — nesne sınırlarını çıkarır, segmentasyon, ana hat çizme ve tanıma öncesi ön işleme için kullanışlıdır. İstek, görüntüdeki her konturu tanımlayan bir dizi nokta döndürür.

swift
import Vision

// Görüntü sınıflandırma
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, genel kategoriler (kedi, köpek, araba, yiyecek) için iyi çalışır ancak belirli nesneler için uygun değildir — bunlar için özel bir Core ML modeli eğitmeniz ve VNCoreMLRequest kullanmanız gerekir. Apple’ın modeli mobil cihazlar için optimize edilmiştir ve yalnızca 5 MB yer kaplar.

VNDetectContoursRequest, kontur türüyle (dış, iç, delik) birlikte nokta dizisi olarak konturları döndürür. Bu istek, OCR öncesi görüntü ön işleme (metin kontrastını iyileştirme), efekt çizme (nesne ana hatları) ve şekil analizi için kullanılır.

Vision İsteğiAmaçiOS Sürümü
VNDetectFaceRectanglesRequestGörüntülerde yüz aramaiOS 11
VNRecognizeTextRequestMetin tanıma (OCR)iOS 13
VNDetectBarcodesRequestBarkod ve QR algılamaiOS 11
VNClassifyImageRequestGörüntü sınıflandırmaiOS 13
VNDetectContoursRequestKontur analiziiOS 14
VNTrackObjectRequestNesne takibiiOS 11

Sıkça Sorulan Sorular

Bilgisayarlı görü için Vision ve Core ML arasındaki fark nedir?

Vision, model eğitimi olmadan hazır algoritmalar (yüz algılama, OCR, barkod) sağlar. Core ML, özel modelleri çalıştırmak için motordur. Vision + VNCoreMLRequest, Vision ardışık düzeneğinde Core ML modellerini çalıştırarak her iki dünyanın en iyisini sunar: Vision’ın hazır dedektörleri + Core ML özel sınıflandırması.

Vision videoda gerçek zamanlı çalışır mı?

Evet, Vision, izleme için VNSequenceRequestHandler ve kare kare işleme için AVCaptureVideoDataOutput aracılığıyla gerçek zamanlı video akışı işlemeyi destekler. A12+ ve Neural Engine’e sahip cihazlarda, Vision yüz algılama için 60 fps’ye kadar işlem yapar. Ağır görevler (OCR, sınıflandırma) için her 5–10 karede bir işlem yapılması önerilir.

VNRecognizeTextRequest hangi dilleri destekler?

VNRecognizeTextRequest 13 dili destekler: İngilizce, Rusça, Çince (basitleştirilmiş ve geleneksel), Japonca, Korece, İtalyanca, Almanca, İspanyolca, Portekizce, Fransızca, Arapça, Vietnamca ve Tayca. Tek bir görüntüde birden çok dili tanımak için recognitionLanguages özelliğinde bir dizi belirtin.

Vision bir Core ML modeliyle kullanılabilir mi?

Evet, VNCoreMLRequest aracılığıyla. VNCoreMLModel içine sarılmış bir Core ML modeli oluşturur ve bunu VNCoreMLRequest’e iletirsiniz. Vision, görüntü ön işlemeyi (ölçeklendirme, kırpma) otomatik olarak halleder ve Core ML modeline besler. Sonuç, modelin çıkış verileriyle birlikte VNCoreMLFeatureValueObservation olarak döndürülür.

Vision görüntüleri Apple’ın sunucusuna gönderir mi?

Hayır, Vision tüm analizi tamamen cihazda gerçekleştirir. Görüntüler asla kullanıcının cihazından çıkmaz. Bu Apple’ın temel mimarisidir: tüm ML framework’leri (Vision, NaturalLanguage, Core ML, Speech) gizliliği sağlamak için cihaz üzerinde çalışır. Apple’ın sunucularına hiçbir veri gönderilmez.

Özet

  • Vision — VNRequest tabanlı API ile Apple’ın cihaz-içi bilgisayarlı görü framework’ü, iOS 11’den itibaren tüm Apple cihazlarında kullanılabilir.
  • VNDetectFaceRectanglesRequest ve VNDetectFaceLandmarksRequest filtreler, maskeler ve animasyonlar için yüzleri ve anahtar noktaları algılar.
  • VNRecognizeTextRequest — .fast ve .accurate seviyeleriyle 13 dil için yerleşik OCR, belgeler için %96’ya kadar doğruluk.
  • VNDetectBarcodesRequest hem fotoğraflarda hem de video akışlarında tüm popüler barkod ve QR kod formatlarını çözer.
  • VNTrackObjectRequest, dedektörü yeniden eğitmeden optik akış aracılığıyla video kareleri arasında nesneleri izler.
  • VNCoreMLRequest aracılığıyla Core ML entegrasyonu, Vision ardışık düzeneğinde özel sınıflandırma ve algılama modellerinin çalıştırılmasını sağlar.
  • Tüm hesaplamalar Neural Engine kullanılarak cihazda gerçekleştirilir — sunuculara görüntü gönderilmez ve tam veri gizliliği sağlanır.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun