এই নির্দেশিকা থেকে আপনি iOS-এর জন্য Firebase-এর ML Kit থেকে কীভাবে মাইগ্রেট করবেন তা জানতে পারবেন।
পূর্বশর্ত
আপনার কোড মাইগ্রেট করা শুরু করার আগে, আপনি এইসব প্রয়োজনীয়তা পূরণ করেছেন কিনা তা নিশ্চিত করুন:
- ML Kit, Xcode 13.2.1 বা তার পরবর্তী ভার্সনে কাজ করে।
- ML Kit iOS ভার্সন 15.5 বা তার পরবর্তী যেকোনও ভার্সনে কাজ করে।
- ML Kit ৩২-বিট আর্কিটেকচারে (i386 ও armv7) কাজ করে না। ML Kit 64-বিট আর্কিটেকচার (x86_64 ও arm64) সাপোর্ট করে।
- ML Kit লাইব্রেরি শুধুমাত্র cocoapods হিসেবে প্রদান করা হয়। আপনি ফ্রেমওয়ার্ক ও cocoapods একসাথে ব্যবহার করতে পারবেন না, তাই এই লাইব্রেরি ব্যবহার করতে হলে আপনাকে প্রথমে cocoapods-এ মাইগ্রেট করতে হবে।
Cocoapods আপডেট করুন
আপনার অ্যাপের Podfile-এ ML Kit iOS cocoapods-এর জন্য ডিপেন্ডেন্সি আপডেট করুন:
| 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/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 |
ক্লাস, এনুম ও টাইপের নাম আপডেট করা
সাধারণত, ক্লাস, এনুম ও টাইপের নাম নিম্নলিখিতভাবে পরিবর্তন করতে হবে:
- Swift: ক্লাসের নাম এবং এনাম থেকে
Visionপ্রিফিক্স সরান - Objective-C:
FIRVisionএবংFIRক্লাস নাম এবং enum প্রিফিক্স দুটিই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:)ব্যবহার করুন।ImageLabelerথেকেtypeপ্রপার্টি সরিয়ে দেওয়া হয়েছে এবং ইমেজ লেবেলিং ফলাফল ক্লাস থেকেentityIDপ্রপার্টি সরিয়ে দেওয়া হয়েছে,ImageLabel।অন্যান্য Vision API-এর সাথে সামঞ্জস্য বজায় রাখতে, বারকোড স্ক্যানিং API-এর
detect(in _:, completion:)নাম পরিবর্তন করেprocess(_:, completion:)রাখা হয়েছে।Natural Language API এখন "ভাষা কোড"-এর পরিবর্তে "ভাষা ট্যাগ" (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())
এখানে পুরনো ও নতুন 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];
API-নির্দিষ্ট পরিবর্তন
অবজেক্ট শনাক্তকরণ ও ট্র্যাকিং
আপনার অ্যাপে অবজেক্ট শ্রেণীবিভাগ ব্যবহার করা হলে, মনে রাখবেন যে নতুন SDK, শনাক্ত করা অবজেক্টের জন্য শ্রেণীবিভাগ বিভাগ রিটার্ন করার পদ্ধতি পরিবর্তন করেছে।
VisionObject-এর মধ্যে VisionObjectCategory একটি পূর্ণসংখ্যার পরিবর্তে
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 নির্ভরতা সরিয়ে দিন। এই ধাপগুলি অনুসরণ করুন:
- আপনার অ্যাপের ডিরেক্টরি এবং Xcode প্রোজেক্ট থেকে
GoogleService-Info.plistফাইল মুছে দিয়ে Firebase কনফিগারেশন ফাইল সরিয়ে দিন। - আপনার Podfile থেকে
pod 'Firebase/Analytics'-এর মতো যেকোনও Firebase cocoapod সরিয়ে দিন। - আপনার কোড থেকে
FirebaseApp.configure()-এর মতো FirebaseApp ইনিশিয়ালাইজেশন সরিয়ে দিন। - Firebase সহায়তা সাইটে দেওয়া নির্দেশাবলী অনুসারে Firebase কনসোলে আপনার Firebase অ্যাপ মুছে দিন।
সহায়তা পাওয়া
আপনার কোনও সমস্যা হলে, আমাদের সাথে যোগাযোগ করার জন্য উপলভ্য চ্যানেলগুলি সম্পর্কে জানতে কমিউনিটি পৃষ্ঠা দেখুন।