ছবিতে স্বীকৃত বস্তুগুলিকে লেবেল করার জন্য আপনি Firebase ML ব্যবহার করতে পারেন। এই API এর বৈশিষ্ট্যগুলি সম্পর্কে তথ্যের জন্য ওভারভিউ দেখুন।
শুরু করার আগে
- যদি আপনি ইতিমধ্যেই আপনার অ্যাপে Firebase যোগ না করে থাকেন, তাহলে শুরু করার নির্দেশিকার ধাপগুলি অনুসরণ করে তা করুন।
- Xcode-এ, আপনার অ্যাপ প্রজেক্ট খোলা থাকা অবস্থায়, File > Add Packages- এ নেভিগেট করুন।
- অনুরোধ করা হলে, Firebase Apple platforms SDK সংগ্রহস্থল যোগ করুন:
- Firebase ML লাইব্রেরিটি বেছে নিন।
- আপনার টার্গেটের বিল্ড সেটিংসের অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে
-ObjCফ্ল্যাগ যোগ করুন। - শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।
- আপনার অ্যাপে, Firebase আমদানি করুন:
সুইফট
import FirebaseMLModelDownloader
অবজেক্টিভ-সি
@import FirebaseMLModelDownloader;
যদি আপনি ইতিমধ্যেই আপনার প্রকল্পের জন্য ক্লাউড-ভিত্তিক API সক্রিয় না করে থাকেন, তাহলে এখনই তা করুন:
- Firebase কনসোলে Firebase ML API পৃষ্ঠাটি খুলুন।
যদি আপনি ইতিমধ্যেই আপনার প্রকল্পটিকে পে-অ্যাজ-ইউ-গো ব্লেজ প্রাইসিং প্ল্যানে আপগ্রেড না করে থাকেন, তাহলে আপগ্রেডে ক্লিক করে তা করুন। (আপনার প্রকল্পটি ব্লেজ প্রাইসিং প্ল্যানে না থাকলেই আপনাকে আপগ্রেড করতে বলা হবে।)
শুধুমাত্র ব্লেজ প্রাইসিং প্ল্যানের প্রকল্পগুলিই ক্লাউড-ভিত্তিক API ব্যবহার করতে পারবে।
- যদি ক্লাউড-ভিত্তিক API গুলি ইতিমধ্যেই সক্ষম না থাকে, তাহলে ক্লাউড-ভিত্তিক API গুলি সক্ষম করুন এ ক্লিক করুন।
ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
https://github.com/firebase/firebase-ios-sdk.git
এরপর, কিছু ইন-অ্যাপ সেটআপ করুন:
এখন আপনি ছবি লেবেল করার জন্য প্রস্তুত।
১. ইনপুট ইমেজ প্রস্তুত করুন
UIImage অথবা CMSampleBufferRef ব্যবহার করে একটি VisionImage অবজেক্ট তৈরি করুন।
UIImage ব্যবহার করতে:
- প্রয়োজনে, ছবিটি এমনভাবে ঘোরান যাতে এর
imageOrientationবৈশিষ্ট্য.upহয়। - সঠিকভাবে ঘোরানো
UIImageব্যবহার করে একটিVisionImageঅবজেক্ট তৈরি করুন। কোনও ঘূর্ণন মেটাডেটা নির্দিষ্ট করবেন না—ডিফল্ট মান,.topLeft, ব্যবহার করতে হবে।সুইফট
let image = VisionImage(image: uiImage)
অবজেক্টিভ-সি
FIRVisionImage *image = [[FIRVisionImage alloc] initWithImage:uiImage];
CMSampleBufferRef ব্যবহার করতে:
CMSampleBufferRefবাফারে থাকা চিত্র ডেটার ওরিয়েন্টেশন নির্দিষ্ট করে এমন একটিVisionImageMetadataঅবজেক্ট তৈরি করুন।ছবির ওরিয়েন্টেশন পেতে:
সুইফট
func imageOrientation( deviceOrientation: UIDeviceOrientation, cameraPosition: AVCaptureDevice.Position ) -> VisionDetectorImageOrientation { switch deviceOrientation { case .portrait: return cameraPosition == .front ? .leftTop : .rightTop case .landscapeLeft: return cameraPosition == .front ? .bottomLeft : .topLeft case .portraitUpsideDown: return cameraPosition == .front ? .rightBottom : .leftBottom case .landscapeRight: return cameraPosition == .front ? .topRight : .bottomRight case .faceDown, .faceUp, .unknown: return .leftTop } }
অবজেক্টিভ-সি
- (FIRVisionDetectorImageOrientation) imageOrientationFromDeviceOrientation:(UIDeviceOrientation)deviceOrientation cameraPosition:(AVCaptureDevicePosition)cameraPosition { switch (deviceOrientation) { case UIDeviceOrientationPortrait: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationLeftTop; } else { return FIRVisionDetectorImageOrientationRightTop; } case UIDeviceOrientationLandscapeLeft: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationBottomLeft; } else { return FIRVisionDetectorImageOrientationTopLeft; } case UIDeviceOrientationPortraitUpsideDown: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationRightBottom; } else { return FIRVisionDetectorImageOrientationLeftBottom; } case UIDeviceOrientationLandscapeRight: if (cameraPosition == AVCaptureDevicePositionFront) { return FIRVisionDetectorImageOrientationTopRight; } else { return FIRVisionDetectorImageOrientationBottomRight; } default: return FIRVisionDetectorImageOrientationTopLeft; } }
তারপর, মেটাডেটা অবজেক্ট তৈরি করুন:
সুইফট
let cameraPosition = AVCaptureDevice.Position.back // Set to the capture device you used. let metadata = VisionImageMetadata() metadata.orientation = imageOrientation( deviceOrientation: UIDevice.current.orientation, cameraPosition: cameraPosition )
অবজেক্টিভ-সি
FIRVisionImageMetadata *metadata = [[FIRVisionImageMetadata alloc] init]; AVCaptureDevicePosition cameraPosition = AVCaptureDevicePositionBack; // Set to the capture device you used. metadata.orientation = [self imageOrientationFromDeviceOrientation:UIDevice.currentDevice.orientation cameraPosition:cameraPosition];
-
CMSampleBufferRefঅবজেক্ট এবং রোটেশন মেটাডেটা ব্যবহার করে একটিVisionImageঅবজেক্ট তৈরি করুন:সুইফট
let image = VisionImage(buffer: sampleBuffer) image.metadata = metadata
অবজেক্টিভ-সি
FIRVisionImage *image = [[FIRVisionImage alloc] initWithBuffer:sampleBuffer]; image.metadata = metadata;
২. ইমেজ লেবেলার কনফিগার করুন এবং চালান
একটি ছবিতে অবজেক্ট লেবেল করার জন্য,VisionImage অবজেক্টটিকে VisionImageLabeler এর processImage() পদ্ধতিতে পাস করুন।প্রথমে,
VisionImageLabelerএর একটি উদাহরণ পান:সুইফট
let labeler = Vision.vision().cloudImageLabeler() // Or, to set the minimum confidence required: // let options = VisionCloudImageLabelerOptions() // options.confidenceThreshold = 0.7 // let labeler = Vision.vision().cloudImageLabeler(options: options)অবজেক্টিভ-সি
FIRVisionImageLabeler *labeler = [[FIRVision vision] cloudImageLabeler]; // Or, to set the minimum confidence required: // FIRVisionCloudImageLabelerOptions *options = // [[FIRVisionCloudImageLabelerOptions alloc] init]; // options.confidenceThreshold = 0.7; // FIRVisionImageLabeler *labeler = // [[FIRVision vision] cloudImageLabelerWithOptions:options];তারপর, ছবিটি
processImage()পদ্ধতিতে পাস করুন:সুইফট
labeler.process(image) { labels, error in guard error == nil, let labels = labels else { return } // Task succeeded. // ... }অবজেক্টিভ-সি
[labeler processImage:image completion:^(NSArray<FIRVisionImageLabel *> *_Nullable labels, NSError *_Nullable error) { if (error != nil) { return; } // Task succeeded. // ... }];
৩. লেবেলযুক্ত বস্তু সম্পর্কে তথ্য পান
যদি ইমেজ লেবেলিং সফল হয়, তাহলেVisionImageLabel অবজেক্টের একটি অ্যারে সমাপ্তি হ্যান্ডলারে পাঠানো হবে। প্রতিটি অবজেক্ট থেকে, আপনি ইমেজে স্বীকৃত একটি বৈশিষ্ট্য সম্পর্কে তথ্য পেতে পারেন।উদাহরণস্বরূপ:
সুইফট
for label in labels {
let labelText = label.text
let entityId = label.entityID
let confidence = label.confidence
}
অবজেক্টিভ-সি
for (FIRVisionImageLabel *label in labels) {
NSString *labelText = label.text;
NSString *entityId = label.entityID;
NSNumber *confidence = label.confidence;
}
পরবর্তী পদক্ষেপ
- ক্লাউড এপিআই ব্যবহার করে এমন কোনও অ্যাপ তৈরিতে স্থাপন করার আগে, অননুমোদিত এপিআই অ্যাক্সেসের প্রভাব প্রতিরোধ এবং প্রশমিত করার জন্য আপনার কিছু অতিরিক্ত পদক্ষেপ নেওয়া উচিত।