iOS-এর জন্য মাইগ্রেট করা

এই নির্দেশিকা থেকে আপনি 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 ক্লাস সরিয়ে দেওয়া হয়েছে, এর সাথে VisionDetectorImageOrientation enum-ও সরানো হয়েছে। ছবির ডিসপ্লে ওরিয়েন্টেশন নির্দিষ্ট করতে, 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 অ্যাপ মুছে দিন।

সহায়তা পাওয়া

আপনার কোনও সমস্যা হলে, আমাদের সাথে যোগাযোগ করার জন্য উপলভ্য চ্যানেলগুলি সম্পর্কে জানতে কমিউনিটি পৃষ্ঠা দেখুন।