इस गाइड में, iOS के लिए ML Kit for Firebase से डेटा माइग्रेट करने का तरीका बताया गया है.
ज़रूरी शर्तें
अपना कोड माइग्रेट करने से पहले, पक्का करें कि आपने ये ज़रूरी शर्तें पूरी कर ली हों:
- ML Kit, Xcode 13.2.1 या इसके बाद के वर्शन पर काम करता है.
- ML Kit, iOS के 15.5 या इसके बाद के वर्शन पर काम करता है.
- ML Kit, 32-बिट वाले आर्किटेक्चर (i386 और armv7) पर काम नहीं करता. ML Kit, 64-बिट वाले आर्किटेक्चर (x86_64 और arm64) पर काम करता है.
- ML Kit की लाइब्रेरी, सिर्फ़ cocoapods के तौर पर उपलब्ध है. फ़्रेमवर्क और cocoapods को एक साथ इस्तेमाल नहीं किया जा सकता. इसलिए, इस लाइब्रेरी का इस्तेमाल करने के लिए, आपको पहले cocoapods पर माइग्रेट करना होगा.
Cocoapods को अपडेट करना
अपने ऐप्लिकेशन की Podfile में, iOS के लिए ML Kit के cocoapods की डिपेंडेंसी अपडेट करें:
| एपीआई | पॉड के पुराने नाम | पॉड के नए नाम |
|---|---|---|
| बारकोड स्कैन करने की सुविधा | Firebase/MLVision Firebase/MLVisionBarcodeModel |
GoogleMLKit/BarcodeScanning |
| चेहरे की पहचान करने की सुविधा | Firebase/MLVision Firebase/MLVisionFaceModel |
GoogleMLKit/FaceDetection |
| इमेज को लेबल करने की सुविधा | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/ImageLabeling |
| ऑब्जेक्ट का पता लगाने और उसे ट्रैक करने की सुविधा | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
| टेक्स्ट की पहचान करने की सुविधा | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/TextRecognition |
| AutoML की मदद से इमेज को लेबल करने की सुविधा (बंडल किया गया मॉडल) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
| AutoML की मदद से इमेज को लेबल करने की सुविधा (डाउनलोड किया गया मॉडल) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom कस्टम मॉडल को होस्ट करने और डाउनलोड करने के लिए, अपने मॉडल को Cloud Storage पर ले जाएं. साथ ही, उन्हें स्थानीय मॉडल के तौर पर लोड करने के लिए, अपने ऐप्लिकेशन में डाउनलोड लॉजिक जोड़ें. ज़्यादा जानकारी के लिए, Firebase ML से Cloud Storage पर माइग्रेट करने की गाइड देखें. |
| भाषा की पहचान करने की सुविधा | Firebase/MLNaturalLanguage Firebase/MLNLLanguageID |
GoogleMLKit/LanguageID |
| स्मार्ट जवाब की सुविधा | Firebase/MLNaturalLanguage Firebase/MLNLSmartReply |
GoogleMLKit/SmartReply |
| अनुवाद करने की सुविधा | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Translate |
क्लास, enum, और टाइप के नाम अपडेट करना
आम तौर पर, क्लास, enum, और टाइप के नाम इस तरह से बदलने होते हैं:
- Swift: क्लास के नामों और enum से
Visionप्रीफ़िक्स हटाएं - Objective-C: क्लास के नामों और enum के
FIRVisionऔरFIRदोनों प्रीफ़िक्स कोMLKसे बदलें
कुछ क्लास के नामों और टाइप पर यह सामान्य नियम लागू नहीं होता:
Swift
| क्लास या टाइप का पुराना नाम | क्लास या टाइप का नया नाम |
|---|---|
| AutoMLLocalModel | LocalModel |
| AutoMLRemoteModel | LocalModel इसे मैन्युअल तरीके से डाउनलोड करना होगा. Firebase पर होस्ट किए गए रिमोट मॉडल, अब काम नहीं करते. ज़्यादा जानकारी के लिए, Firebase ML से Cloud Storage पर माइग्रेट करने की गाइड देखें. |
| VisionBarcodeDetectionCallback | BarcodeScanningCallback |
| VisionBarcodeDetector | BarcodeScanner |
| VisionBarcodeDetectorOptions | BarcodeScannerOptions |
| VisionImage | VisionImage (कोई बदलाव नहीं) |
| VisionPoint | VisionPoint (कोई बदलाव नहीं) |
| VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
| VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
| क्लास या टाइप का पुराना नाम | क्लास या टाइप का नया नाम |
|---|---|
| FIRAutoMLLocalModel | MLKLocalModel |
| FIRAutoMLRemoteModel | MLKLocalModel इसे मैन्युअल तरीके से डाउनलोड करना होगा. Firebase पर होस्ट किए गए रिमोट मॉडल, अब काम नहीं करते. ज़्यादा जानकारी के लिए, Firebase ML से Cloud Storage पर माइग्रेट करने की गाइड देखें. |
| FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
| FIRVisionBarcodeDetector | MLKBarcodeScanner |
| FIRVisionBarcodeDetectorOptions | MLKBarcodeScannerOptions |
| FIRVisionImage | MLKVisionImage |
| FIRVisionPoint | MLKVisionPoint |
| FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
| FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
मेथड के नाम अपडेट करना
मेथड के नाम इन नियमों के मुताबिक अपडेट करें:
डोमेन के एंट्री पॉइंट वाली क्लास (
Vision,NaturalLanguage) अब मौजूद नहीं हैं. इन्हें, टास्क के हिसाब से बनाई गई क्लास से बदल दिया गया है. डिटेक्टर पाने के लिए, उनके अलग-अलग फ़ैक्ट्री मेथड के कॉल को, हर डिटेक्टर के फ़ैक्ट्री मेथड के सीधे कॉल से बदलें.VisionImageMetadataक्लास कोVisionDetectorImageOrientationenum के साथ हटा दिया गया है. किसी इमेज के डिसप्ले ओरिएंटेशन की जानकारी देने के लिए,VisionImageकीorientationप्रॉपर्टी का इस्तेमाल करें.नया
TextRecognizerइंस्टेंस पाने के लिए,onDeviceTextRecognizerमेथड का नाम बदलकरtextRecognizerकर दिया गया है.टेक्स्ट की पहचान करने के नतीजों वाली क्लास से, कॉन्फ़िडेंस प्रॉपर्टी हटा दी गई है. इनमें
TextElement,TextLine, औरTextBlockशामिल हैं.ImageLabelerका नया इंस्टेंस पाने के लिए,onDeviceImageLabelerऔरonDeviceImageLabeler(options:)मेथड को मर्ज कर दिया गया है. साथ ही, इनका नाम बदलकरimageLabeler(options:)कर दिया गया है.ObjectDetectorका नया इंस्टेंस पाने के लिए,objectDetectorमेथड को हटा दिया गया है. इसके बजाय,objectDetector(options:)का इस्तेमाल करें.typeप्रॉपर्टी कोImageLabelerसे हटा दिया गया है. साथ ही, इमेज को लेबल करने के नतीजों वाली क्लास,ImageLabelसेentityIDप्रॉपर्टी हटा दी गई है.बारकोड स्कैन करने के एपीआई
detect(in _:, completion:)का नाम बदलकरprocess(_:, completion:)कर दिया गया है, ताकि यह विज़न एपीआई के साथ काम कर सके.नेचुरल लैंग्वेज एपीआई अब "भाषा कोड" के बजाय "भाषा टैग" शब्द का इस्तेमाल करते हैं. भाषा टैग, बीसीपी-47 स्टैंडर्ड के मुताबिक तय किए जाते हैं.
TranslateLanguageअब अपने कॉन्स्टैंट के लिए, भाषा टैग (जैसे,.en) के बजाय, पढ़ने में आसान नाम (जैसे,.english) का इस्तेमाल करता है.
यहां Swift के पुराने और नए मेथड के कुछ उदाहरण दिए गए हैं:
पुराना
let options = VisionOnDeviceImageLabelerOptions()
options.confidenceThreshold = 0.75
let labeler = Vision.vision().onDeviceImageLabeler(options: options)
let detector = Vision.vision().faceDetector(options: options)
let localModel = AutoMLLocalModel(manifestPath: "automl/manifest.json")
let options = VisionOnDeviceAutoMLImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = 0.75
let labeler = vision.onDeviceAutoMLImageLabeler(options: options)
let detector = Vision.vision().objectDetector()
नई सुविधा
let options = ImageLabelerOptions()
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)
let detector = FaceDetector.faceDetector(options: options)
let localModel = LocalModel(manifestPath: "automl/manifest.json")
let options = CustomImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)
let detector = ObjectDetector.objectDetector(options: ObjectDetectorOptions())
यहां Objective-C के पुराने और नए मेथड के कुछ उदाहरण दिए गए हैं:
पुराना
FIRVisionOnDeviceImageLabelerOptions *options = [[FIRVisionOnDeviceImageLabelerOptions alloc] init]; options.confidenceThreshold = 0.75; FIRVisionImageLabeler *labeler = [[FIRVision vision] onDeviceImageLabelerWithOptions:options]; FIRVisionFaceDetector *detector = [[FIRVision vision] faceDetectorWithOptions: options]; FIRAutoMLLocalModel *localModel = [[FIRAutoMLLocalModel alloc] initWithManifestPath:@"automl/manifest.json"]; FIRVisionOnDeviceAutoMLImageLabelerOptions *options = [[FIRVisionOnDeviceAutoMLImageLabelerOptions alloc] initWithLocalModel: localModel]; options.confidenceThreshold = 0.75 FIRVisionImageLabeler *labeler = [[FIRVision vision] onDeviceAutoMLImageLabelerWithOptions:options]; FIRVisionObjectDetector *detector = [[FIRVision vision] objectDetector];
नई सुविधा
MLKImageLabelerOptions *options = [[MLKImageLabelerOptions alloc] init]; options.confidenceThreshold = @(0.75); MLKImageLabeler *labeler = [MLKImageLabeler imageLabelerWithOptions:options]; MLKFaceDetector *detector = [MLKFaceDetector faceDetectorWithOptions:options]; MLKLocalModel *localModel = [[MLKLocalModel alloc] initWithManifestPath:@"automl/manifest.json"]; MLKCustomImageLabelerOptions *options = [[MLKCustomImageLabelerOptions alloc] initWithLocalModel:localModel]; options.confidenceThreshold = @(0.75) MLKImageLabeler *labeler = [MLKImageLabeler imageLabelerWithOptions:options]; MLKObjectDetectorOptions *options = [[MLKObjectDetectorOptions alloc] init]; MLKObjectDetector *detector = [MLKObjectDetector objectDetectorWithOptions:options];
एपीआई से जुड़े बदलाव
ऑब्जेक्ट का पता लगाने और उसे ट्रैक करने की सुविधा
अगर आपका ऐप्लिकेशन, ऑब्जेक्ट क्लासिफ़िकेशन का इस्तेमाल करता है, तो ध्यान रखें कि नए SDK टूल में, पता लगाए गए ऑब्जेक्ट के लिए क्लासिफ़िकेशन कैटगरी दिखाने का तरीका बदल गया है.
VisionObjectCategory को VisionObject में, इंटिजर के बजाय
ObjectLabel ऑब्जेक्ट में text के तौर पर दिखाया जाता है. DetectedObjectLabel enum में, सभी संभावित स्ट्रिंग कैटगरी शामिल होती हैं.
ध्यान दें कि .unknown कैटगरी हटा दी गई है. अगर किसी ऑब्जेक्ट को क्लासिफ़ाई करने का कॉन्फ़िडेंस कम होता है, तो क्लासिफ़ायर कोई लेबल नहीं दिखाता.
यहां Swift के पुराने और नए कोड का उदाहरण दिया गया है:
पुराना
if (object.classificationCategory == .food) {
...
}नई सुविधा
if let label = object.labels.first {
if (label.text == DetectedObjectLabel.food.rawValue) {
...
}
}
// or
if let label = object.labels.first {
if (label.index == DetectedObjectLabelIndex.food.rawValue) {
...
}
}यहां Objective-C के पुराने और नए कोड का उदाहरण दिया गया है:
पुराना
if (object.classificationCategory == FIRVisionObjectCategoryFood) {
...
}नई सुविधा
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) {
...
}
// or
if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) {
...
}Firebase की डिपेंडेंसी हटाना
माइग्रेशन के बाद, Firebase की डिपेंडेंसी हटाएं. यह तरीका अपनाएं:
- Firebase कॉन्फ़िगरेशन फ़ाइल हटाने के लिए, अपने ऐप्लिकेशन की डायरेक्ट्री और Xcode प्रोजेक्ट से
GoogleService-Info.plistफ़ाइल मिटाएं. - अपनी
Podfile से, Firebase का कोई भी cocoapod हटाएं. जैसे,
pod 'Firebase/Analytics'. - अपने कोड से, FirebaseApp का कोई भी इनिशियलाइज़ेशन हटाएं. जैसे,
FirebaseApp.configure(). - Firebase सहायता साइट पर दिए गए निर्देशों के मुताबिक, Firebase कंसोल पर जाकर अपना Firebase ऐप्लिकेशन मिटाएं.
मदद लेना
अगर आपको कोई समस्या आती है, तो कृपया हमारा कम्यूनिटी पेज देखें. इस पेज पर, हमसे संपर्क करने के लिए उपलब्ध चैनलों की जानकारी दी गई है.