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 फ्रेम प्रति सेकंड तक प्रोसेस करता है।
मुख्य लाभ Vision का पूर्ण गोपनीयता है: सभी गणनाएं डिवाइस पर की जाती हैं, इमेज कभी सर्वर पर नहीं भेजी जाती हैं। यह फ्रेमवर्क को संवेदनशील डेटा से निपटने वाले अनुप्रयोगों, जैसे चिकित्सा या बैंकिंग ऐप में उपयोग करने की अनुमति देता है।
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 — 1000 श्रेणियों में इमेज वर्गीकरण के लिए 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें