Vision Apple کا کمپیوٹر ویژن فریم ورک ہے، جو پہلی بار 2017 میں iOS 11 میں متعارف کرایا گیا تھا۔ Vision چہرے کا پتا لگانا، ٹیکسٹ ریکگنیشن (OCR)، بارکوڈ کا پتا لگانا، آبجیکٹ ٹریکنگ، امیج کلاسیفیکیشن اور کنٹور تجزیے کے لیے تیار الگورتھم فراہم کرتا ہے — یہ سب ڈیوائس پر Neural Engine استعمال کرکے انجام ہوتے ہیں۔ Apple WWDC 2023 کے مطابق، Vision کا استعمال معیاری Photos ایپ میں چہرے کی شناخت کے لیے اور Camera ایپ میں iPhone اور iPad پر ریئل ٹائم ٹیکسٹ دریافت کے لیے کیا جاتا ہے۔
اہم نکات
Vision ایک اعلی سطح کا کمپیوٹر ویژن فریم ورک ہے جو پیچیدہ مشین لرننگ الگورتھمز کو ایک سادہ درخواست API (VNRequest) کے پیچھے چھپاتا ہے۔ ڈیویلپر کو کنوولیوشنل نیورل نیٹ ورک کو سمجھنے کی ضرورت نہیں ہے — بس مناسب درخواست کی قسم بنائیں، ایک امیج پاس کریں اور نتیجہ حاصل کریں۔
Vision کا آرکیٹیکچر Request → Handler → Result اصول پر مبنی ہے: VNImageRequestHandler ایک امیج وصول کرتا ہے، VNRequest پر عمل کرتا ہے اور نتائج کے ساتھ VNObservation کی ایک ارے واپس کرتا ہے۔ یہ ایک واحد امیج پر متعدد درخواستوں کو مربوط کرنے کی اجازت دیتا ہے — مثال کے طور پر، ایک فوٹو میں بیک ساتھ چہرے اور ٹیکسٹ کا پتا لگانا۔
Vision iOS 11+ اور macOS 10.13+ کی حمایت کرتا ہے۔ Neural Engine کے ذریعے ہارڈویئر تیزی کے لیے A12 Bionic چپ یا اس سے نئے کی ضرورت ہے۔ A17 Pro اور M سیریز کے آلات پر، Vision سٹریمنگ ویڈیو کے لیے فی سیکنڈ 60 فریم تک پروسیس کرتا ہے۔
بنیادی فائدہ مکمل رازداری ہے: تمام حساب کتاب آلے پر کیے جاتے ہیں، امیجز کبھی سرور پر نہیں بھیجی جاتیں۔ یہ فریم ورک کو حساس ڈیٹا سے کام کرنے والی ایپلیکیشنز، جیسے میڈیکل یا بینکنگ ایپس میں استعمال کرنے کی اجازت دیتا ہے۔
VNDetectFaceRectanglesRequest ایک امیج میں چہرے کا پتا لگانے کے لیے بنیادی Vision درخواست ہے۔ یہ کسی مخصوص فرد کی شناخت کیے بغیر، ہر چہرے کو گھیرنے والے مستطیلات کے مختصات واپس کرتا ہے۔
مزید تفصیلی تجزیے کے لیے، VNDetectFaceLandmarksRequest استعمال کریں، جو چہرے کے اہم نکات کی شناخت کرتا ہے: آنکھیں، ابروئیں، ناک، منہ، جبڑے کی خاکہ۔ یہ ڈیٹا ماسک لگانے، ایموجی اینیمیشن اور ریئل ٹائم فلٹرز (جیسے FaceTime اور Snapchat میں) کے لیے استعمال ہوتا ہے۔
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 تھی تو چہرے کے نکات کی ایک ارے — بھی شامل ہے۔ 0.5 سے کم confidence عموماً غلط مثبت نتیجہ ہوتا ہے — ایسے نتائج کو مسترد کرنے کی سفارش کی جاتی ہے۔
Vision VNDetectFaceCaptureQualityRequest کی بھی حمایت کرتا ہے، جو چہرے کی امیج کے معیار کا جائزہ لیتا ہے: روشنی، تیزی، گھومنے کا زاویہ۔ یہ صارف رجسٹریشن کے دوران بہترین فریم منتخب کرنے یا اوتار بنانے کے لیے مفید ہے۔
VNRecognizeTextRequest Apple کا داخلی OCR انجن ہے، جو iOS 13 میں متعارف کرایا گیا تھا۔ یہ 13 زبانوں کی حمایت کے ساتھ امیجز میں چھپے ٹیکسٹ کو پہچانتا ہے: انگریزی، روسی، چینی، جاپانی، کورین، اطالوی، جرمن، ہسپانوی، پرتگالی، فرانسیسی، عربی، ویتنامی اور تھائی۔
VNRecognizeTextRequest دو درستگی کی سطحوں کی حمایت کرتا ہے: .fast (تیز، متضاد پس منظر پر سادہ ٹیکسٹ کے لیے) اور .accurate (درست، مختلف فانٹ اور زاویوں والے پیچیدہ مناظر کے لیے)۔ .fast 3–5 گنا تیز ہے لیکن ہاتھ سے لکھے ٹیکسٹ اور غیر معیاری فانٹ کو کم مؤثر طریقے سے سنبھالتا ہے۔
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 کے مطابق، .accurate سطح پر VNRecognizeTextRequest کی درستگی انگریزی میں صاف دستاویز کی تصاویر کے لیے 96% اور روسی کے لیے تقریباً 88% ہے۔ پیکیجنگ، سائن اور اسکرین پر ٹیکسٹ کے لیے، درستگی 75–85% تک گر جاتی ہے۔
| شناخت کی سطح | بہاو | درستگی (انگریزی) | روسی کی حمایت |
|---|---|---|---|
| .fast | 0.1–0.3 سیکنڈ | ~85% | ہاں |
| .accurate | 0.3–1.0 سیکنڈ | ~96% | ہاں |
VNDetectBarcodesRequest — امیجز میں بارکوڈ اور QR کوڈ کا پتا لگانے اور ڈی کوڈ کرنے کے لیے Vision درخواست۔ تمام اہم فارمیٹ سپورٹ کیے گئے ہیں: EAN-8، EAN-13، UPC-A، UPC-E، Code 39، Code 93، Code 128، PDF417، Aztec اور QR۔
AVFoundation (AVCaptureMetadataOutput) کے برعکس، Vision نہ صرف ویڈیو سٹریمز بلکہ سٹیٹک امیجز کے ساتھ بھی کام کرتا ہے — موجودہ تصاویر یا اسکرین شاٹ سے کوڈ اسکین کرنے کی اجازت دیتا ہے۔ Vision کوڈ کے boundingBox کو پکسل درستگی کے ساتھ بھی متعین کرتا ہے، جو دریافت شدہ کوڈ کے ارد گرد فریم کو متحرک کرنے کے لیے آسان ہے۔
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 تصاویر کے ایک سیکونس (ویڈیو فریم) کو قبول کرتا ہے اور ہر فریم کے لیے ٹریک کیے گئے آبجیکٹ کی اپڈیٹ شدہ پوزیشن واپس کرتا ہے۔ یہ اگمینٹڈ ریئلٹی ایپس، ویڈیو ایڈیٹرز اور نگرانی کے نظام میں استعمال ہوتا ہے۔
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 ٹریکنگ تصحیح کے لیے ہر 10–15 فریم پر ڈیٹیکشن (VNDetectObjectAtPointRequest) کو دوبارہ شروع کرنے کی سفارش کرتا ہے۔
VNClassifyImageRequest — 1,000 زمروں میں امیج درجہ بندی کے لیے Vision کا داخلی ماڈل (ImageNet پر تربیت شدہ ResNet-50 ماڈل)۔ درخواست زمرے کے نام اور confidence کے ساتھ VNClassificationObservation کی ایک ارے واپس کرتی ہے۔
VNDetectContoursRequest امیج کنٹور تجزیہ کرتا ہے — آبجیکٹ حدود نکالتا ہے، جو سیگمینٹیشن، خاکہ کھینچنے اور شناخت سے پہلے پری پروسیسنگ کے لیے مفید ہے۔ درخواست امیج میں ہر کنٹور کو بیان کرنے والے نکات کی ایک ارے واپس کرتی ہے۔
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 | بارکوڈ اور QR کا پتا لگانا | iOS 11 |
| VNClassifyImageRequest | امیج درجہ بندی | iOS 13 |
| VNDetectContoursRequest | کنٹور تجزیہ | iOS 14 |
| VNTrackObjectRequest | آبجیکٹ ٹریکنگ | iOS 11 |
اکثر پوچھے گئے سوالات
Vision ماڈل تربیت کے بغیر تیار الگورتھم (چہرے کا پتا لگانا، OCR، بارکوڈ) فراہم کرتا ہے۔ Core ML کسٹم ماڈل کو عملی کرنے کا انجن ہے۔ Vision + VNCoreMLRequest Vision پائپ لائن میں Core ML ماڈل چلانے کی اجازت دیتا ہے، دونوں جہانوں کا بہترین حاصل کرتا ہے: Vision کے تیار ڈیٹیکٹر + Core ML کسٹم درجہ بندی۔
ہاں، Vision ٹریکنگ کے لیے VNSequenceRequestHandler اور فریم بہ فریم پروسیسنگ کے لیے AVCaptureVideoDataOutput کے ذریعے ریئل ٹائم ویڈیو سٹریم پروسیسنگ کی حمایت کرتا ہے۔ A12+ اور Neural Engine والے آلات پر، Vision چہرے کا پتا لگانے کے لیے 60 fps تک پروسیس کرتا ہے۔ بھاری کاموں (OCR، درجہ بندی) کے لیے، ہر 5–10 فریم پر پروسیس کرنے کی سفارش کی جاتی ہے۔
VNRecognizeTextRequest 13 زبانوں کی حمایت کرتا ہے: انگریزی، روسی، چینی (سادہ اور روایتی)، جاپانی، کورین، اطالوی، جرمن، ہسپانوی، پرتگالی، فرانسیسی، عربی، ویتنامی اور تھائی۔ ایک واحد امیج میں متعدد زبانوں کو پہچاننے کے لیے، recognitionLanguages پراپرٹی میں ایک ارے متعین کریں۔
ہاں، VNCoreMLRequest کے ذریعے۔ آپ VNCoreMLModel میں لپٹا ایک Core ML ماڈل بناتے ہیں اور اسے VNCoreMLRequest کو پاس کرتے ہیں۔ Vision خودکار طور پر امیج پری پروسیسنگ (اسکیلنگ، کراپنگ) کو سنبھالتا ہے اور اسے Core ML ماڈل میں فیڈ کرتا ہے۔ نتیجہ ماڈل کے آؤٹ پٹ ڈیٹا کے ساتھ VNCoreMLFeatureValueObservation کے طور پر واپس کیا جاتا ہے۔
نہیں، Vision تمام تجزیہ مکمل طور پر آلے پر کرتا ہے۔ تصاویر کبھی صارف کے آلے سے باہر نہیں جاتیں۔ یہ Apple کا بنیادی آرکیٹیکچر ہے: تمام ML فریم ورک (Vision، NaturalLanguage، Core ML، Speech) رازداری کو یقینی بنانے کے لیے آن ڈیوائس کام کرتے ہیں۔ Apple کے سرور پر کوئی ڈیٹا نہیں بھیجا جاتا۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں