iOS-এ Firebase ML-এর সাহায্যে ল্যান্ডমার্ক চিনুন

একটি ছবিতে সুপরিচিত ল্যান্ডমার্কগুলি সনাক্ত করতে আপনি Firebase ML ব্যবহার করতে পারেন।

শুরু করার আগে

    যদি আপনি ইতিমধ্যেই আপনার অ্যাপে Firebase যোগ না করে থাকেন, তাহলে শুরু করার নির্দেশিকার ধাপগুলি অনুসরণ করে তা করুন।

    ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।

    1. Xcode-এ, আপনার অ্যাপ প্রজেক্ট খোলা থাকা অবস্থায়, File > Add Packages- এ নেভিগেট করুন।
    2. অনুরোধ করা হলে, Firebase Apple platforms SDK সংগ্রহস্থল যোগ করুন:
    3.   https://github.com/firebase/firebase-ios-sdk.git
    4. Firebase ML লাইব্রেরিটি বেছে নিন।
    5. আপনার টার্গেটের বিল্ড সেটিংসের অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে -ObjC ফ্ল্যাগ যোগ করুন।
    6. শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।

    এরপর, কিছু ইন-অ্যাপ সেটআপ করুন:

    1. আপনার অ্যাপে, Firebase আমদানি করুন:

      সুইফট

      import FirebaseMLModelDownloader

      অবজেক্টিভ-সি

      @import FirebaseMLModelDownloader;
  1. যদি আপনি ইতিমধ্যেই আপনার প্রকল্পের জন্য ক্লাউড-ভিত্তিক API সক্রিয় না করে থাকেন, তাহলে এখনই তা করুন:

    1. Firebase কনসোলে Firebase ML API পৃষ্ঠাটি খুলুন।
    2. যদি আপনি ইতিমধ্যেই আপনার প্রকল্পটিকে পে-অ্যাজ-ইউ-গো ব্লেজ প্রাইসিং প্ল্যানে আপগ্রেড না করে থাকেন, তাহলে আপগ্রেডে ক্লিক করে তা করুন। (আপনার প্রকল্পটি ব্লেজ প্রাইসিং প্ল্যানে না থাকলেই আপনাকে আপগ্রেড করতে বলা হবে।)

      শুধুমাত্র ব্লেজ প্রাইসিং প্ল্যানের প্রকল্পগুলিই ক্লাউড-ভিত্তিক API ব্যবহার করতে পারবে।

    3. যদি ক্লাউড-ভিত্তিক API গুলি ইতিমধ্যেই সক্ষম না থাকে, তাহলে ক্লাউড-ভিত্তিক API গুলি সক্ষম করুন এ ক্লিক করুন।

ল্যান্ডমার্ক ডিটেক্টর কনফিগার করুন

ডিফল্টরূপে, ক্লাউড ডিটেক্টর মডেলের স্থিতিশীল সংস্করণ ব্যবহার করে এবং সর্বোচ্চ ১০টি ফলাফল প্রদান করে। যদি আপনি এই সেটিংসগুলির যেকোনো একটি পরিবর্তন করতে চান, তাহলে নিম্নলিখিত উদাহরণের মতো একটি VisionCloudDetectorOptions অবজেক্ট দিয়ে সেগুলি নির্দিষ্ট করুন:

সুইফট

let options = VisionCloudDetectorOptions()
options.modelType = .latest
options.maxResults = 20

অবজেক্টিভ-সি

  FIRVisionCloudDetectorOptions *options =
      [[FIRVisionCloudDetectorOptions alloc] init];
  options.modelType = FIRVisionCloudModelTypeLatest;
  options.maxResults = 20;
  

পরবর্তী ধাপে, ক্লাউড ডিটেক্টর অবজেক্ট তৈরি করার সময় VisionCloudDetectorOptions অবজেক্টটি পাস করুন।

ল্যান্ডমার্ক ডিটেক্টর চালান

একটি ছবিতে ল্যান্ডমার্ক সনাক্ত করতে, ছবিটিকে UIImage অথবা CMSampleBufferRef হিসেবে VisionCloudLandmarkDetector এর detect(in:) পদ্ধতিতে পাঠান:

  1. VisionCloudLandmarkDetector এর একটি উদাহরণ পান:

    সুইফট

    lazy var vision = Vision.vision()
    
    let cloudDetector = vision.cloudLandmarkDetector(options: options)
    // Or, to use the default settings:
    // let cloudDetector = vision.cloudLandmarkDetector()

    অবজেক্টিভ-সি

    FIRVision *vision = [FIRVision vision];
    FIRVisionCloudLandmarkDetector *landmarkDetector = [vision cloudLandmarkDetector];
    // Or, to change the default settings:
    // FIRVisionCloudLandmarkDetector *landmarkDetector =
    //     [vision cloudLandmarkDetectorWithOptions:options];
  2. ক্লাউড ভিশন কল করার জন্য, ছবিটিকে base64-এনকোডেড স্ট্রিং হিসেবে ফরম্যাট করতে হবে। UIImage প্রক্রিয়া করতে:

    সুইফট

    guard let imageData = uiImage.jpegData(compressionQuality: 1.0) else { return }
    let base64encodedImage = imageData.base64EncodedString()

    অবজেক্টিভ-সি

    NSData *imageData = UIImageJPEGRepresentation(uiImage, 1.0f);
    NSString *base64encodedImage =
      [imageData base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];
  3. তারপর, ছবিটি detect(in:) পদ্ধতিতে পাস করুন:

    সুইফট

    cloudDetector.detect(in: visionImage) { landmarks, error in
      guard error == nil, let landmarks = landmarks, !landmarks.isEmpty else {
        // ...
        return
      }
    
      // Recognized landmarks
      // ...
    }

    অবজেক্টিভ-সি

    [landmarkDetector detectInImage:image
                         completion:^(NSArray<FIRVisionCloudLandmark *> *landmarks,
                                      NSError *error) {
      if (error != nil) {
        return;
      } else if (landmarks != nil) {
        // Got landmarks
      }
    }];

স্বীকৃত ল্যান্ডমার্ক সম্পর্কে তথ্য পান

যদি ল্যান্ডমার্ক স্বীকৃতি সফল হয়, তাহলে VisionCloudLandmark অবজেক্টের একটি অ্যারে সমাপ্তি হ্যান্ডলারের কাছে পাঠানো হবে। প্রতিটি অবজেক্ট থেকে, আপনি ছবিতে স্বীকৃত একটি ল্যান্ডমার্ক সম্পর্কে তথ্য পেতে পারেন।

উদাহরণস্বরূপ:

সুইফট

for landmark in landmarks {
  let landmarkDesc = landmark.landmark
  let boundingPoly = landmark.frame
  let entityId = landmark.entityId

  // A landmark can have multiple locations: for example, the location the image
  // was taken, and the location of the landmark depicted.
  for location in landmark.locations {
    let latitude = location.latitude
    let longitude = location.longitude
  }

  let confidence = landmark.confidence
}

অবজেক্টিভ-সি

for (FIRVisionCloudLandmark *landmark in landmarks) {
   NSString *landmarkDesc = landmark.landmark;
   CGRect frame = landmark.frame;
   NSString *entityId = landmark.entityId;

   // A landmark can have multiple locations: for example, the location the image
   // was taken, and the location of the landmark depicted.
   for (FIRVisionLatitudeLongitude *location in landmark.locations) {
     double latitude = [location.latitude doubleValue];
     double longitude = [location.longitude doubleValue];
   }

   float confidence = [landmark.confidence floatValue];
}

পরবর্তী পদক্ষেপ