আপনি একটি ছবিতে স্বীকৃত বস্তুকে লেবেল করতে Firebase ML ব্যবহার করতে পারেন। এই API এর বৈশিষ্ট্য সম্পর্কে তথ্যের জন্য ওভারভিউ দেখুন।
আপনি শুরু করার আগে
- আপনি যদি ইতিমধ্যে আপনার অ্যাপে Firebase যোগ না করে থাকেন, তাহলে শুরু করার নির্দেশিকাতে দেওয়া ধাপগুলি অনুসরণ করে তা করুন৷
- Xcode-এ, আপনার অ্যাপ প্রকল্প খোলার সাথে, ফাইল > প্যাকেজ যোগ করুন- এ নেভিগেট করুন।
- অনুরোধ করা হলে, Firebase Apple প্ল্যাটফর্ম SDK সংগ্রহস্থল যোগ করুন:
- Firebase ML লাইব্রেরি বেছে নিন।
- আপনার লক্ষ্যের বিল্ড সেটিংসের অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে
-ObjC
পতাকা যোগ করুন। - শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে পটভূমিতে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।
- আপনার অ্যাপে, Firebase আমদানি করুন:
সুইফট
import FirebaseMLModelDownloader
উদ্দেশ্য-C
@import FirebaseMLModelDownloader;
আপনি যদি ইতিমধ্যে আপনার প্রকল্পের জন্য ক্লাউড-ভিত্তিক API সক্ষম না করে থাকেন তবে এখনই তা করুন:
- Firebase কনসোলের Firebase ML APIs পৃষ্ঠা খুলুন।
আপনি যদি ইতিমধ্যেই আপনার প্রোজেক্টকে ব্লেজ প্রাইসিং প্ল্যানে আপগ্রেড না করে থাকেন, তা করতে আপগ্রেড এ ক্লিক করুন। (যদি আপনার প্রকল্পটি ব্লেজ প্ল্যানে না থাকে তবেই আপনাকে আপগ্রেড করার জন্য অনুরোধ করা হবে।)
শুধুমাত্র ব্লেজ-স্তরের প্রকল্পগুলি ক্লাউড-ভিত্তিক API ব্যবহার করতে পারে।
- যদি ক্লাউড-ভিত্তিক APIগুলি ইতিমধ্যে সক্ষম না থাকে, তাহলে ক্লাউড-ভিত্তিক APIগুলি সক্ষম করুন ক্লিক করুন৷
ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
https://github.com/firebase/firebase-ios-sdk.git
এরপরে, কিছু ইন-অ্যাপ সেটআপ সম্পাদন করুন:
এখন আপনি ইমেজ লেবেল প্রস্তুত.
1. ইনপুট ইমেজ প্রস্তুত করুন
একটি UIImage
বা একটি CMSampleBufferRef
ব্যবহার করে একটি VisionImage
অবজেক্ট তৈরি করুন।
একটি UIImage
ব্যবহার করতে:
- প্রয়োজনে, চিত্রটিকে ঘোরান যাতে এটির
imageOrientation
বৈশিষ্ট্য.up
হয়। - সঠিকভাবে ঘোরানো
UIImage
ব্যবহার করে একটিVisionImage
অবজেক্ট তৈরি করুন। কোনো ঘূর্ণন মেটাডেটা নির্দিষ্ট করবেন না—ডিফল্ট মান,.topLeft
, ব্যবহার করতে হবে।সুইফট
let image = VisionImage(image: uiImage)
উদ্দেশ্য-C
FIRVisionImage *image = [[FIRVisionImage alloc] initWithImage:uiImage];
একটি CMSampleBufferRef
ব্যবহার করতে:
একটি
VisionImageMetadata
অবজেক্ট তৈরি করুন যাCMSampleBufferRef
বাফারে থাকা চিত্র ডেটার অভিযোজন নির্দিষ্ট করে।ইমেজ ওরিয়েন্টেশন পেতে:
সুইফট
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 } }
উদ্দেশ্য-C
- (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 )
উদ্দেশ্য-C
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
উদ্দেশ্য-C
FIRVisionImage *image = [[FIRVisionImage alloc] initWithBuffer:sampleBuffer]; image.metadata = metadata;
2. ইমেজ লেবেলার কনফিগার করুন এবং চালান
একটি ছবিতে অবজেক্ট লেবেল করতে,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)
উদ্দেশ্য-C
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. // ... }
উদ্দেশ্য-C
[labeler processImage:image completion:^(NSArray<FIRVisionImageLabel *> *_Nullable labels, NSError *_Nullable error) { if (error != nil) { return; } // Task succeeded. // ... }];
3. লেবেলযুক্ত বস্তু সম্পর্কে তথ্য পান
ইমেজ লেবেলিং সফল হলে,VisionImageLabel
অবজেক্টের একটি অ্যারে সমাপ্তি হ্যান্ডলারে পাঠানো হবে। প্রতিটি বস্তু থেকে, আপনি চিত্রে স্বীকৃত একটি বৈশিষ্ট্য সম্পর্কে তথ্য পেতে পারেন।যেমন:
সুইফট
for label in labels {
let labelText = label.text
let entityId = label.entityID
let confidence = label.confidence
}
উদ্দেশ্য-C
for (FIRVisionImageLabel *label in labels) {
NSString *labelText = label.text;
NSString *entityId = label.entityID;
NSNumber *confidence = label.confidence;
}
পরবর্তী পদক্ষেপ
- আপনি একটি ক্লাউড API ব্যবহার করে এমন একটি অ্যাপ উৎপাদনে স্থাপন করার আগে, অননুমোদিত API অ্যাক্সেসের প্রভাব প্রতিরোধ ও প্রশমিত করার জন্য আপনাকে কিছু অতিরিক্ত পদক্ষেপ নিতে হবে।