आप किसी छवि में पहचानी गई वस्तुओं को लेबल करने के लिए फायरबेस एमएल का उपयोग कर सकते हैं। इस एपीआई की विशेषताओं के बारे में जानकारी के लिए अवलोकन देखें।
शुरू करने से पहले
- यदि आपने पहले से ही अपने ऐप में फायरबेस नहीं जोड़ा है, तो आरंभ करने की मार्गदर्शिका में दिए गए चरणों का पालन करके ऐसा करें।
- Xcode में, अपना ऐप प्रोजेक्ट खुला होने पर, फ़ाइल > पैकेज जोड़ें पर नेविगेट करें।
- संकेत मिलने पर, Firebase Apple प्लेटफ़ॉर्म SDK रिपॉजिटरी जोड़ें:
- फायरबेस एमएल लाइब्रेरी चुनें।
- समाप्त होने पर, Xcode स्वचालित रूप से पृष्ठभूमि में आपकी निर्भरता को हल करना और डाउनलोड करना शुरू कर देगा।
- अपने ऐप में, फ़ायरबेस आयात करें:
तीव्र
import FirebaseMLModelDownloader
उद्देश्य सी
@import FirebaseMLModelDownloader;
यदि आपने पहले से ही अपने प्रोजेक्ट के लिए क्लाउड-आधारित एपीआई सक्षम नहीं किया है, तो अभी करें:
- फायरबेस कंसोल का फायरबेस एमएल एपीआई पेज खोलें।
यदि आपने पहले से ही अपने प्रोजेक्ट को ब्लेज़ मूल्य निर्धारण योजना में अपग्रेड नहीं किया है, तो ऐसा करने के लिए अपग्रेड पर क्लिक करें। (आपको केवल तभी अपग्रेड करने के लिए प्रेरित किया जाएगा यदि आपका प्रोजेक्ट ब्लेज़ योजना पर नहीं है।)
केवल ब्लेज़-स्तरीय प्रोजेक्ट ही क्लाउड-आधारित एपीआई का उपयोग कर सकते हैं।
- यदि क्लाउड-आधारित एपीआई पहले से सक्षम नहीं हैं, तो क्लाउड-आधारित एपीआई सक्षम करें पर क्लिक करें।
फायरबेस निर्भरता को स्थापित और प्रबंधित करने के लिए स्विफ्ट पैकेज मैनेजर का उपयोग करें।
https://github.com/firebase/firebase-ios-sdk
इसके बाद, कुछ इन-ऐप सेटअप करें:
अब आप छवियों को लेबल करने के लिए तैयार हैं।
1. इनपुट छवि तैयार करें
UIImage
या CMSampleBufferRef
उपयोग करके एक VisionImage
ऑब्जेक्ट बनाएं।
UIImage
उपयोग करने के लिए:
- यदि आवश्यक हो, तो छवि को घुमाएँ ताकि उसकी
imageOrientation
गुण.up
हो। - सही ढंग से घुमाए गए
UIImage
उपयोग करके एकVisionImage
ऑब्जेक्ट बनाएं। कोई रोटेशन मेटाडेटा निर्दिष्ट न करें—डिफ़ॉल्ट मान,.topLeft
, का उपयोग किया जाना चाहिए।तीव्र
let image = VisionImage(image: uiImage)
उद्देश्य सी
FIRVisionImage *image = [[FIRVisionImage alloc] initWithImage:uiImage];
CMSampleBufferRef
का उपयोग करने के लिए:
एक
VisionImageMetadata
ऑब्जेक्ट बनाएं जोCMSampleBufferRef
बफर में मौजूद छवि डेटा के ओरिएंटेशन को निर्दिष्ट करता है।छवि अभिविन्यास प्राप्त करने के लिए:
तीव्र
func imageOrientation( deviceOrientation: UIDeviceOrientation, cameraPosition: AVCaptureDevice.Position ) -> VisionDetectorImageOrientation { switch deviceOrientation { case .portrait: return cameraPosition == .front ? .leftTop : .rightTop case .landscapeLeft: return cameraPosition == .front ? .bottomLeft : .topLeft case .portraitUpsideDown: return cameraPosition == .front ? .rightBottom : .leftBottom case .landscapeRight: return cameraPosition == .front ? .topRight : .bottomRight case .faceDown, .faceUp, .unknown: return .leftTop } }
उद्देश्य सी
- (FIRVisionDetectorImageOrientation) imageOrientationFromDeviceOrientation:(UIDeviceOrientation)deviceOrientation cameraPosition:(AVCaptureDevicePosition)cameraPosition { switch (deviceOrientation) { case UIDeviceOrientationPortrait: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationLeftTop; } else { return FIRVisionDetectorImageOrientationRightTop; } case UIDeviceOrientationLandscapeLeft: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationBottomLeft; } else { return FIRVisionDetectorImageOrientationTopLeft; } case UIDeviceOrientationPortraitUpsideDown: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationRightBottom; } else { return FIRVisionDetectorImageOrientationLeftBottom; } case UIDeviceOrientationLandscapeRight: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationTopRight; } else { return FIRVisionDetectorImageOrientationBottomRight; } default: return FIRVisionDetectorImageOrientationTopLeft; } }
फिर, मेटाडेटा ऑब्जेक्ट बनाएं:
तीव्र
let cameraPosition = AVCaptureDevice.Position.back // Set to the capture device you used. let metadata = VisionImageMetadata() metadata.orientation = imageOrientation( deviceOrientation: UIDevice.current.orientation, cameraPosition: cameraPosition )
उद्देश्य सी
FIRVisionImageMetadata *metadata = [[FIRVisionImageMetadata alloc] init]; AVCaptureDevicePosition cameraPosition = AVCaptureDevicePositionBack; // Set to the capture device you used. metadata.orientation = [self imageOrientationFromDeviceOrientation:UIDevice.currentDevice.orientation cameraPosition:cameraPosition];
-
CMSampleBufferRef
ऑब्जेक्ट और रोटेशन मेटाडेटा का उपयोग करके एकVisionImage
ऑब्जेक्ट बनाएं:तीव्र
let image = VisionImage(buffer: sampleBuffer) image.metadata = metadata
उद्देश्य सी
FIRVisionImage *image = [[FIRVisionImage alloc] initWithBuffer:sampleBuffer]; image.metadata = metadata;
2. छवि लेबलर को कॉन्फ़िगर करें और चलाएँ
किसी छवि में ऑब्जेक्ट को लेबल करने के लिए,VisionImage
ऑब्जेक्ट को VisionImageLabeler
की processImage()
विधि में पास करें।सबसे पहले,
VisionImageLabeler
का एक उदाहरण प्राप्त करें:तीव्र
let labeler = Vision.vision().cloudImageLabeler() // Or, to set the minimum confidence required: // let options = VisionCloudImageLabelerOptions() // options.confidenceThreshold = 0.7 // let labeler = Vision.vision().cloudImageLabeler(options: options)
उद्देश्य सी
FIRVisionImageLabeler *labeler = [[FIRVision vision] cloudImageLabeler]; // Or, to set the minimum confidence required: // FIRVisionCloudImageLabelerOptions *options = // [[FIRVisionCloudImageLabelerOptions alloc] init]; // options.confidenceThreshold = 0.7; // FIRVisionImageLabeler *labeler = // [[FIRVision vision] cloudImageLabelerWithOptions:options];
फिर, छवि को
processImage()
विधि में पास करें:तीव्र
labeler.process(image) { labels, error in guard error == nil, let labels = labels else { return } // Task succeeded. // ... }
उद्देश्य सी
[labeler processImage:image completion:^(NSArray<FIRVisionImageLabel *> *_Nullable labels, NSError *_Nullable error) { if (error != nil) { return; } // Task succeeded. // ... }];
3. लेबल वाली वस्तुओं के बारे में जानकारी प्राप्त करें
यदि छवि लेबलिंग सफल होती है, तोVisionImageLabel
ऑब्जेक्ट की एक सरणी पूर्णता हैंडलर को पास कर दी जाएगी। प्रत्येक ऑब्जेक्ट से, आप छवि में पहचाने गए फीचर के बारे में जानकारी प्राप्त कर सकते हैं।उदाहरण के लिए:
तीव्र
for label in labels {
let labelText = label.text
let entityId = label.entityID
let confidence = label.confidence
}
उद्देश्य सी
for (FIRVisionImageLabel *label in labels) {
NSString *labelText = label.text;
NSString *entityId = label.entityID;
NSNumber *confidence = label.confidence;
}
अगले कदम
- इससे पहले कि आप क्लाउड एपीआई का उपयोग करने वाले किसी ऐप का उत्पादन शुरू करें, आपको अनधिकृत एपीआई एक्सेस के प्रभाव को रोकने और कम करने के लिए कुछ अतिरिक्त कदम उठाने चाहिए।