আপনি একটি ছবিতে স্বীকৃত বস্তুকে লেবেল করতে 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 অ্যাক্সেসের প্রভাব প্রতিরোধ ও প্রশমিত করার জন্য আপনাকে কিছু অতিরিক্ত পদক্ষেপ নিতে হবে।
আপনি একটি ছবিতে স্বীকৃত বস্তুকে লেবেল করতে 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 অ্যাক্সেসের প্রভাব প্রতিরোধ ও প্রশমিত করার জন্য আপনাকে কিছু অতিরিক্ত পদক্ষেপ নিতে হবে।
আপনি একটি ছবিতে স্বীকৃত বস্তুকে লেবেল করতে 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 অ্যাক্সেসের প্রভাব প্রতিরোধ ও প্রশমিত করার জন্য আপনাকে কিছু অতিরিক্ত পদক্ষেপ নিতে হবে।
আপনি একটি ছবিতে স্বীকৃত বস্তুকে লেবেল করতে 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 অ্যাক্সেসের প্রভাব প্রতিরোধ ও প্রশমিত করার জন্য আপনাকে কিছু অতিরিক্ত পদক্ষেপ নিতে হবে।