ज़रूरी शर्तें
अपने कोड को माइग्रेट करने से पहले, पक्का करें कि आपने इन ज़रूरी शर्तों को पूरा किया है:
- ML किट, Xcode 13.2.1 या इसके बाद के वर्शन के साथ काम करती है.
- ML किट, iOS 10 या इसके बाद के वर्शन पर काम करती है.
- मशीन लर्निंग किट, 32-बिट आर्किटेक्चर (i386 और armv7) के साथ काम नहीं करती. मशीन लर्निंग किट, 64-बिट आर्किटेक्चर (x86_64 और arm64) के साथ काम करती है.
- एमएल किट लाइब्रेरी को सिर्फ़ कोकोएपॉड के तौर पर उपलब्ध कराया जाता है. आप फ़्रेमवर्क और कोकोएपॉड को एक साथ इस्तेमाल नहीं कर सकते, इसलिए इस लाइब्रेरी का इस्तेमाल करने के लिए आपको सबसे पहले कोकोएपॉड का इस्तेमाल करने के लिए माइग्रेट करना होगा.
Cocoapods अपडेट करें
अपने ऐप्लिकेशन की Podfile में, ML Kit iOS कोको-पॉड के लिए डिपेंडेंसी अपडेट करें:
API | पुराने पॉड का नाम | नए पॉड का नाम |
---|---|---|
बारकोड स्कैन करना | 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 से मॉडल डाउनलोड करना) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
भाषा का आईडी | Firebase/MLNaturalLanguage Firebase/MLNLLanguageID |
GoogleMLKit/LanguageID |
स्मार्ट जवाब | Firebase/MLNaturalLanguage Firebase/MLNLSmart replies |
GoogleMLKit/SmartResponse |
अनुवाद पाएं | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/अनुवाद |
क्लास, ईनम, और टाइप के नाम अपडेट करें
सामान्य तौर पर, क्लास , enum, और टाइप के नाम इस तरह बदले जाने चाहिए:
- Swift: क्लास के नाम और enum से
Vision
प्रीफ़िक्स हटाएं - मकसद-C:
FIRVision
औरFIR
क्लास के नाम और enum प्रीफ़िक्स, दोनों कोMLK
से बदलें
कुछ क्लास के नामों और टाइप के लिए, यह सामान्य नियम लागू नहीं होता:
Swift
पुरानी क्लास या टाइप | नई क्लास या टाइप |
---|---|
AutoMLLocalModel | LocalModel |
AutoMLRemoteModel | CustomRemoteModel |
VisionBarcodeDetectionCallback | BarcodeScanningCallback |
VisionBarcodeDetector | BarcodeScanner |
VisionBarcodeDetectorOptions | BarcodeScannerOptions |
VisionImage | VisionImage (कोई बदलाव नहीं) |
VisionPoint | VisionPoint (कोई बदलाव नहीं) |
VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
पुरानी क्लास या टाइप | नई क्लास या टाइप |
---|---|
FIRAutoMLLocalModel | MLKLocalModel |
FIRAutoMLRemoteModel | MLKCustomRemoteModel |
FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
FIRVisionBarcodeDetector | MLKBarcodeScanner |
FIRVisionBarcodeDetectorOptions | MLKBarcodeScannerOptions |
FIRVisionImage | MLKVisionImage |
FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
FIRVisionPoint | MLKVisionPoint |
Objective-C
तरीकों के नाम अपडेट करना
इन नियमों के मुताबिक तरीके के नाम अपडेट करें:
डोमेन एंट्री पॉइंट क्लास (
Vision
,NaturalLanguage
) अब मौजूद नहीं हैं. इन्हें टास्क के हिसाब से बनाई गई क्लास से बदल दिया गया है. डिटेक्टर पाने के लिए, कॉल को उनके अलग-अलग फ़ैक्ट्री तरीकों से बदलें. साथ ही, हर डिटेक्टर के फ़ैक्ट्री तरीके को सीधे कॉल करें.VisionDetectorImageOrientation
एनम के साथ-साथ,VisionImageMetadata
क्लास को भी हटा दिया गया है. किसी इमेज के डिसप्ले ओरिएंटेशन की जानकारी देने के लिए,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:)
कर दिया गया है, ताकि वह अन्य विज़ुअल एपीआई के साथ काम कर सके.नैचुरल लैंग्वेज एपीआई अब "भाषा कोड" के बजाय, BCP-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())
यहां पुरानी और नए ऑब्जेक्टिव-सी तरीकों के कुछ उदाहरण दिए गए हैं:
ओल्ड
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 टूल ने उस तरीके में बदलाव किया है जो पता लगाए गए ऑब्जेक्ट के लिए, क्लासिफ़िकेशन कैटगरी दिखाता है.
VisionObject
में VisionObjectCategory
को पूर्णांक के बजाय, ObjectLabel
ऑब्जेक्ट में text
के तौर पर दिखाया जाता है. स्ट्रिंग की सभी संभावित कैटगरी को DetectedObjectLabel
की सूची में शामिल किया जाता है.
ध्यान दें कि .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) { ... } }
यहां पुराने और नए ऑब्जेक्टिव-सी कोड का उदाहरण दिया गया है:
ओल्ड
if (object.classificationCategory == FIRVisionObjectCategoryFood) { ... }
नए दर्शक
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) { ... } // or if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) { ... }
Firebase डिपेंडेंसी हटाएं (ज़रूरी नहीं)
यह चरण सिर्फ़ तब लागू होता है, जब ये शर्तें पूरी होती हैं:
- Firebase ML किट सिर्फ़ वह Firebase कॉम्पोनेंट है जिसका इस्तेमाल किया जा रहा है
- आप सिर्फ़ ऑन-डिवाइस एपीआई का इस्तेमाल करते हैं
- आपने मॉडल दिखाने की सुविधा का इस्तेमाल नहीं किया है
अगर ऐसा है, तो माइग्रेशन के बाद Firebase डिपेंडेंसी हटाई जा सकती हैं. यह तरीक़ा अपनाएँ:
- अपने ऐप्लिकेशन की डायरेक्ट्री और Xcode प्रोजेक्ट से GoogleService-Info.plist फ़ाइल को मिटाकर, Firebase कॉन्फ़िगरेशन फ़ाइल हटाएं.
- अपनी Podfile से,
pod 'Firebase/Analytics'
जैसे किसी Firebase कोकोपॉड को हटाएं. - अपने कोड से,
FirebaseApp.configure()
जैसे किसी भी FirebaseApp शुरू करने की प्रक्रिया को हटाएं. - Firebase सहायता साइट पर दिए गए instructions के मुताबिक, Firebase कंसोल पर अपना Firebase ऐप्लिकेशन मिटाएं.
मदद लेना
अगर आपको कोई समस्या होती है, तो कृपया हमारे कम्यूनिटी पेज पर जाएं. यहां हमने उन चैनलों की जानकारी दी है जिनकी मदद से हमसे संपर्क किया जा सकता है.