অবজেক্ট ডিটেক্টরগুলি সনাক্ত করতে পারে কোন কোন বস্তুর পরিচিত সেট উপস্থিত থাকতে পারে এবং প্রদত্ত চিত্র বা একটি ভিডিও স্ট্রীমের মধ্যে তাদের অবস্থান সম্পর্কে তথ্য সরবরাহ করতে পারে। বস্তুর একাধিক শ্রেণীর উপস্থিতি এবং অবস্থান সনাক্ত করার জন্য একটি অবজেক্ট ডিটেক্টরকে প্রশিক্ষণ দেওয়া হয়। উদাহরণস্বরূপ, একটি মডেলকে বিভিন্ন ফলের টুকরা ধারণ করে এমন চিত্র সহ প্রশিক্ষিত করা যেতে পারে, একটি লেবেল সহ যা তারা যে ফলগুলিকে প্রতিনিধিত্ব করে তা নির্দিষ্ট করে (যেমন একটি আপেল, একটি কলা, বা একটি স্ট্রবেরি), এবং প্রতিটি বস্তু কোথায় প্রদর্শিত হবে তা নির্দিষ্ট করে ছবিটি অবজেক্ট ডিটেক্টর সম্পর্কে আরও তথ্যের জন্য অবজেক্ট ডিটেকশন উদাহরণ দেখুন।
আপনার মোবাইল অ্যাপ্লিকেশনগুলিতে আপনার কাস্টম অবজেক্ট ডিটেক্টর বা পূর্বপ্রশিক্ষিতগুলি স্থাপন করতে টাস্ক লাইব্রেরি ObjectDetector
API ব্যবহার করুন৷
অবজেক্ট ডিটেক্টর API এর মূল বৈশিষ্ট্য
ইনপুট ইমেজ প্রক্রিয়াকরণ, ঘূর্ণন, আকার পরিবর্তন, এবং রঙ স্থান রূপান্তর সহ।
মানচিত্র লোকেল লেবেল করুন।
ফলাফল ফিল্টার করতে স্কোর থ্রেশহোল্ড।
টপ-কে সনাক্তকরণ ফলাফল।
লেবেল অনুমোদিত তালিকা এবং অস্বীকৃত।
সমর্থিত অবজেক্ট ডিটেক্টর মডেল
নিম্নলিখিত মডেলগুলি ObjectDetector
API-এর সাথে সামঞ্জস্যপূর্ণ হওয়ার নিশ্চয়তা রয়েছে৷
অটোএমএল ভিশন এজ অবজেক্ট ডিটেকশন দ্বারা তৈরি মডেল।
অবজেক্ট ডিটেক্টরের জন্য টেনসরফ্লো লাইট মডেল মেকার দ্বারা তৈরি মডেলগুলি৷
কাস্টম মডেল যা মডেল সামঞ্জস্যের প্রয়োজনীয়তা পূরণ করে।
জাভাতে অনুমান চালান
একটি অ্যান্ড্রয়েড অ্যাপে অবজেক্ট ObjectDetector
কীভাবে ব্যবহার করবেন তার উদাহরণের জন্য অবজেক্ট ডিটেকশন রেফারেন্স অ্যাপটি দেখুন।
ধাপ 1: Gradle নির্ভরতা এবং অন্যান্য সেটিংস আমদানি করুন
.tflite
মডেল ফাইলটি Android মডিউলের সম্পদ ডিরেক্টরিতে অনুলিপি করুন যেখানে মডেলটি চালানো হবে৷ নির্দিষ্ট করুন যে ফাইলটি সংকুচিত করা উচিত নয়, এবং মডিউলের build.gradle
ফাইলে TensorFlow Lite লাইব্রেরি যোগ করুন:
android {
// Other settings
// Specify tflite file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency
implementation 'org.tensorflow:tensorflow-lite-task-vision'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
ধাপ 2: মডেল ব্যবহার
// Initialization
ObjectDetectorOptions options =
ObjectDetectorOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setMaxResults(1)
.build();
ObjectDetector objectDetector =
ObjectDetector.createFromFileAndOptions(
context, modelFile, options);
// Run inference
List<Detection> results = objectDetector.detect(image);
ObjectDetector
কনফিগার করার জন্য আরও বিকল্পের জন্য সোর্স কোড এবং javadoc দেখুন।
iOS এ অনুমান চালান
ধাপ 1: নির্ভরতা ইনস্টল করুন
টাস্ক লাইব্রেরি CocoaPods ব্যবহার করে ইনস্টলেশন সমর্থন করে। আপনার সিস্টেমে CocoaPods ইনস্টল করা আছে তা নিশ্চিত করুন। নির্দেশাবলীর জন্য অনুগ্রহ করে CocoaPods ইনস্টলেশন গাইড দেখুন।
একটি Xcode প্রকল্পে পড যোগ করার বিষয়ে বিস্তারিত জানার জন্য অনুগ্রহ করে CocoaPods গাইড দেখুন।
Podfile এ TensorFlowLiteTaskVision
পড যোগ করুন।
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
নিশ্চিত করুন যে আপনি অনুমানের জন্য যে .tflite
মডেলটি ব্যবহার করবেন তা আপনার অ্যাপ বান্ডেলে উপস্থিত রয়েছে।
ধাপ 2: মডেল ব্যবহার
সুইফট
// Imports
import TensorFlowLiteTaskVision
// Initialization
guard let modelPath = Bundle.main.path(forResource: "ssd_mobilenet_v1",
ofType: "tflite") else { return }
let options = ObjectDetectorOptions(modelPath: modelPath)
// Configure any additional options:
// options.classificationOptions.maxResults = 3
let detector = try ObjectDetector.detector(options: options)
// Convert the input image to MLImage.
// There are other sources for MLImage. For more details, please see:
// https://developers.google.com/ml-kit/reference/ios/mlimage/api/reference/Classes/GMLImage
guard let image = UIImage (named: "cats_and_dogs.jpg"), let mlImage = MLImage(image: image) else { return }
// Run inference
let detectionResult = try detector.detect(mlImage: mlImage)
উদ্দেশ্য-C
// Imports
#import <TensorFlowLiteTaskVision/TensorFlowLiteTaskVision.h>
// Initialization
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"ssd_mobilenet_v1" ofType:@"tflite"];
TFLObjectDetectorOptions *options = [[TFLObjectDetectorOptions alloc] initWithModelPath:modelPath];
// Configure any additional options:
// options.classificationOptions.maxResults = 3;
TFLObjectDetector *detector = [TFLObjectDetector objectDetectorWithOptions:options
error:nil];
// Convert the input image to MLImage.
UIImage *image = [UIImage imageNamed:@"dogs.jpg"];
// There are other sources for GMLImage. For more details, please see:
// https://developers.google.com/ml-kit/reference/ios/mlimage/api/reference/Classes/GMLImage
GMLImage *gmlImage = [[GMLImage alloc] initWithImage:image];
// Run inference
TFLDetectionResult *detectionResult = [detector detectWithGMLImage:gmlImage error:nil];
TFLObjectDetector
কনফিগার করার জন্য আরও বিকল্পের জন্য সোর্স কোড দেখুন।
পাইথনে অনুমান চালান
ধাপ 1: পিপ প্যাকেজ ইনস্টল করুন
pip install tflite-support
ধাপ 2: মডেল ব্যবহার
# Imports
from tflite_support.task import vision
from tflite_support.task import core
from tflite_support.task import processor
# Initialization
base_options = core.BaseOptions(file_name=model_path)
detection_options = processor.DetectionOptions(max_results=2)
options = vision.ObjectDetectorOptions(base_options=base_options, detection_options=detection_options)
detector = vision.ObjectDetector.create_from_options(options)
# Alternatively, you can create an object detector in the following manner:
# detector = vision.ObjectDetector.create_from_file(model_path)
# Run inference
image = vision.TensorImage.create_from_file(image_path)
detection_result = detector.detect(image)
ObjectDetector
কনফিগার করার জন্য আরও বিকল্পের জন্য সোর্স কোড দেখুন।
C++ এ অনুমান চালান
// Initialization
ObjectDetectorOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<ObjectDetector> object_detector = ObjectDetector::CreateFromOptions(options).value();
// Create input frame_buffer from your inputs, `image_data` and `image_dimension`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer = CreateFromRgbRawBuffer(
image_data, image_dimension);
// Run inference
const DetectionResult result = object_detector->Detect(*frame_buffer).value();
ObjectDetector
কনফিগার করার জন্য আরও বিকল্পের জন্য সোর্স কোড দেখুন।
উদাহরণ ফলাফল
এখানে TensorFlow Hub থেকে ssd mobilenet v1- এর সনাক্তকরণ ফলাফলের একটি উদাহরণ রয়েছে।
Results:
Detection #0 (red):
Box: (x: 355, y: 133, w: 190, h: 206)
Top-1 class:
index : 17
score : 0.73828
class name : dog
Detection #1 (green):
Box: (x: 103, y: 15, w: 138, h: 369)
Top-1 class:
index : 17
score : 0.73047
class name : dog
ইনপুট ইমেজে বাউন্ডিং বাক্সগুলি রেন্ডার করুন:
আপনার নিজস্ব মডেল এবং পরীক্ষার ডেটা সহ ObjectDetector-এর জন্য সাধারণ CLI ডেমো টুল ব্যবহার করে দেখুন।
মডেল সামঞ্জস্যের প্রয়োজনীয়তা
ObjectDetector
API বাধ্যতামূলক TFLite মডেল মেটাডেটা সহ একটি TFLite মডেল আশা করে। TensorFlow Lite Metadata Writer API ব্যবহার করে অবজেক্ট ডিটেক্টরের জন্য মেটাডেটা তৈরির উদাহরণ দেখুন।
সামঞ্জস্যপূর্ণ বস্তু আবিষ্কারক মডেল নিম্নলিখিত প্রয়োজনীয়তা পূরণ করা উচিত:
ইনপুট ইমেজ টেনসর: (kTfLiteUInt8/kTfLiteFloat32)
- আকারের ইমেজ ইনপুট
[batch x height x width x channels]
। - ব্যাচ অনুমান সমর্থিত নয় (
batch
1 হতে হবে)। - শুধুমাত্র RGB ইনপুট সমর্থিত (
channels
3 হতে হবে)। - টাইপ kTfLiteFloat32 হলে, ইনপুট স্বাভাবিককরণের জন্য মেটাডেটার সাথে স্বাভাবিককরণ বিকল্পগুলি সংযুক্ত করা প্রয়োজন।
- আকারের ইমেজ ইনপুট
আউটপুট টেনসর অবশ্যই একটি
DetectionPostProcess
op এর 4টি আউটপুট হতে হবে, যেমন:- অবস্থান টেনসর (kTfLiteFloat32)
- আকারের টেনসর
[1 x num_results x 4]
, অভ্যন্তরীণ বিন্যাসটি আকারে [উপরে, বাম, ডান, নীচে] বাউন্ডিং বাক্সগুলিকে প্রতিনিধিত্ব করে। - BoundingBoxProperties মেটাডেটার সাথে সংযুক্ত করতে হবে এবং অবশ্যই
type=BOUNDARIES
এবং `coordinate_type=RATIO উল্লেখ করতে হবে।
- আকারের টেনসর
ক্লাস টেনসর (kTfLiteFloat32)
- আকারের টেনসর
[1 x num_results]
, প্রতিটি মান একটি শ্রেণীর পূর্ণসংখ্যা সূচক প্রতিনিধিত্ব করে। - ঐচ্ছিক (কিন্তু প্রস্তাবিত) লেবেল মানচিত্র (গুলি) TENSOR_VALUE_LABELS টাইপের সাথে AssociatedFile-s হিসাবে সংযুক্ত করা যেতে পারে, প্রতি লাইনে একটি লেবেল রয়েছে৷ উদাহরণ লেবেল ফাইল দেখুন। ফলাফলের
class_name
ক্ষেত্রটি পূরণ করতে প্রথম যেমন AssociatedFile (যদি থাকে) ব্যবহার করা হয়।display_name
ক্ষেত্রটি AssociatedFile (যদি থাকে) থেকে পূর্ণ হয় যার লোকেলটি তৈরির সময় ব্যবহৃতObjectDetectorOptions
এরdisplay_names_locale
ক্ষেত্রের সাথে মেলে ("en" ডিফল্টরূপে, যেমন ইংরেজি)। এগুলোর কোনোটিই পাওয়া না গেলে, শুধুমাত্র ফলাফলেরindex
ক্ষেত্রটি পূরণ করা হবে।
- আকারের টেনসর
স্কোর টেনসর (kTfLiteFloat32)
- আকারের টেনসর
[1 x num_results]
, প্রতিটি মান সনাক্ত করা বস্তুর স্কোর প্রতিনিধিত্ব করে।
- আকারের টেনসর
সনাক্তকরণ টেনসরের সংখ্যা (kTfLiteFloat32)
- পূর্ণসংখ্যা num_results আকারের একটি টেনসর হিসাবে
[1]
।
- পূর্ণসংখ্যা num_results আকারের একটি টেনসর হিসাবে
- অবস্থান টেনসর (kTfLiteFloat32)