পাইথনের জন্য ইন্টারেক্টিভ ইমেজ সেগমেন্টেশন গাইড

MediaPipe ইন্টারেক্টিভ ইমেজ সেগমেন্টার টাস্ক একটি ইমেজে একটি অবস্থান নেয়, সেই অবস্থানে একটি অবজেক্টের সীমানা অনুমান করে এবং ইমেজ ডেটা হিসাবে অবজেক্টের জন্য সেগমেন্টেশন প্রদান করে। এই নির্দেশাবলী আপনাকে দেখায় কিভাবে পাইথন ভাষার সাথে ইন্টারেক্টিভ ইমেজ সেগমেন্টার ব্যবহার করতে হয়। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।

কোড উদাহরণ

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

সেটআপ

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

প্যাকেজ

মিডিয়াপাইপ ইন্টারেক্টিভ ইমেজ সেগমেন্টার টাস্কের জন্য mediapipe প্যাকেজ প্রয়োজন। আপনি নিম্নলিখিত কমান্ড দিয়ে প্রয়োজনীয় নির্ভরতা ইনস্টল করতে পারেন:

$ python -m pip install mediapipe

আমদানি

ইন্টারেক্টিভ ইমেজ সেগমেন্টার টাস্ক ফাংশন অ্যাক্সেস করতে নিম্নলিখিত ক্লাসগুলি আমদানি করুন:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision

মডেল

MediaPipe ইন্টারেক্টিভ ইমেজ সেগমেন্টার টাস্কের জন্য একটি প্রশিক্ষিত মডেল প্রয়োজন যা এই কাজের সাথে সামঞ্জস্যপূর্ণ। ইন্টারেক্টিভ ইমেজ সেগমেন্টারের জন্য উপলব্ধ প্রশিক্ষিত মডেল সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ মডেল বিভাগটি দেখুন।

মডেল নির্বাচন করুন এবং ডাউনলোড করুন, এবং তারপর আপনার প্রকল্প ডিরেক্টরির মধ্যে এটি সংরক্ষণ করুন:

model_path = '/absolute/path/to/model.tflite'

model_asset_path প্যারামিটারের মধ্যে মডেলের পাথ নির্দিষ্ট করুন, যেমনটি নীচে দেখানো হয়েছে:

base_options = BaseOptions(model_asset_path=model_path)

টাস্ক তৈরি করুন

MediaPipe ইন্টারেক্টিভ ইমেজ সেগমেন্টার টাস্কটি টাস্ক সেট আপ করতে create_from_options ফাংশন ব্যবহার করে। create_from_options ফাংশন কনফিগারেশন অপশন পরিচালনার জন্য মান গ্রহণ করে। কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন বিকল্পগুলি দেখুন। নিম্নলিখিত কোডটি এই কাজটি কীভাবে তৈরি এবং কনফিগার করতে হয় তা প্রদর্শন করে।

BaseOptions = mp.tasks.BaseOptions
InteractiveSegmenter = mp.tasks.vision.InteractiveSegmenter
InteractiveSegmenterOptions = mp.tasks.vision.InteractiveSegmenterOptions
VisionRunningMode = mp.tasks.vision.RunningMode

# Create a image segmenter instance with the image mode:
options = InteractiveSegmenterOptions(
    base_options=BaseOptions(model_asset_path='/path/to/model.task'),
    running_mode=VisionRunningMode.IMAGE,
    output_type=InteractiveSegmenterOptions.OutputType.CATEGORY_MASK)
with InteractiveSegmenter.create_from_options(options) as segmenter:
# segmenter is initialized and ready to use

কনফিগারেশন অপশন

এই টাস্কে পাইথন অ্যাপ্লিকেশনের জন্য নিম্নলিখিত কনফিগারেশন বিকল্প রয়েছে:

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
output_category_mask যদি True তে সেট করা হয়, আউটপুটে একটি uint8 ইমেজ হিসাবে একটি বিভাজন মাস্ক অন্তর্ভুক্ত থাকে, যেখানে প্রতিটি পিক্সেল মান নির্দেশ করে যে পিক্সেলটি আগ্রহের এলাকায় অবস্থিত বস্তুর অংশ কিনা। { True, False } False
output_confidence_masks যদি True তে সেট করা হয়, আউটপুটে একটি ফ্লোট মান চিত্র হিসাবে একটি বিভাজন মাস্ক অন্তর্ভুক্ত থাকে, যেখানে প্রতিটি ফ্লোট মান আত্মবিশ্বাসের প্রতিনিধিত্ব করে যে পিক্সেলটি আগ্রহের এলাকায় অবস্থিত বস্তুর অংশ। { True, False } True
display_names_locale টাস্কের মডেলের মেটাডেটাতে প্রদত্ত প্রদর্শন নামের জন্য ব্যবহার করার জন্য লেবেলের ভাষা সেট করে, যদি উপলব্ধ থাকে। ইংরেজির জন্য ডিফল্ট হল en । আপনি TensorFlow Lite Metadata Writer API ব্যবহার করে একটি কাস্টম মডেলের মেটাডেটাতে স্থানীয় লেবেল যোগ করতে পারেন স্থানীয় কোড en

ডেটা প্রস্তুত করুন

একটি ইমেজ ফাইল বা একটি নম্পি অ্যারে হিসাবে আপনার ইনপুট প্রস্তুত করুন, তারপর এটিকে mediapipe.Image ইমেজ অবজেক্টে রূপান্তর করুন।

# Load the input image from an image file.
mp_image = mp.Image.create_from_file('/path/to/image')

# Load the input image from a numpy array.
mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)

ইন্টারেক্টিভ ইমেজ সেগমেন্টারের জন্য ডেটার প্রস্তুতি দেখানো কোড উদাহরণের জন্য, কোডের উদাহরণ দেখুন।

টাস্ক চালান

ইন্টারেক্টিভ ইমেজ সেগমেন্টার অনুমানকে ট্রিগার করতে segment ফাংশন ব্যবহার করে। ইমেজ সেগমেন্টেশনের জন্য, এর মধ্যে রয়েছে প্রি-প্রসেসিং ইনপুট ডেটা, সেগমেন্টেশন মডেল চালানো এবং সেগমেন্টেড মাস্কে কাঁচা মডেলের আউটপুট পোস্টপ্রসেস করা।

নিম্নলিখিত কোড উদাহরণ টাস্ক মডেলের সাথে প্রক্রিয়াকরণ চালানো কিভাবে দেখায়।

RegionOfInterest = vision.InteractiveSegmenterRegionOfInterest
# Perform image segmentation on the provided single image.
# The image segmenter must be created with the image mode.
roi = RegionOfInterest(format=RegionOfInterest.Format.KEYPOINT,
                          keypoint=NormalizedKeypoint(x, y))
segmented_masks = segmenter.segment(mp_image, roi)

ইন্টারেক্টিভ ইমেজ সেগমেন্টার ইনফারেন্স চালানোর আরও সম্পূর্ণ উদাহরণের জন্য, কোড উদাহরণ দেখুন।

হ্যান্ডেল এবং প্রদর্শন ফলাফল

ইন্টারেক্টিভ ইমেজ সেগমেন্টারের আউটপুট ফলাফল হল Image ডেটার একটি তালিকা, এবং আপনি টাস্ক কনফিগার করার সময় আপনি কী সেট করেছেন তার উপর নির্ভর করে একটি বিভাগ মাস্ক, কনফিডেন্স মাস্ক বা উভয়ই অন্তর্ভুক্ত থাকতে পারে। আপনি যদি output_category_mask True তে সেট করেন, তাহলে আউটপুট হল একটি তালিকা যাতে একটি uint8 ইমেজ হিসেবে একক সেগমেন্টেড মাস্ক থাকে। পিক্সেল মান নির্দেশ করে যে এটি আগ্রহের এলাকায় বস্তুর অংশ কিনা। ইনপুট চিত্রের স্বীকৃত বিভাগ সূচক। আপনি যদি output_confidence_masks True তে সেট করেন, আউটপুট হল একটি চ্যানেলের তালিকা যার মধ্যে পিক্সেল মান রয়েছে [0,1] সীমার মধ্যে থাকা পিক্সেলের আত্মবিশ্বাসের স্কোরকে প্রতিনিধিত্ব করে যেটি আগ্রহের ক্ষেত্রে বস্তুর সাথে সম্পর্কিত।

নিম্নলিখিত বিভাগগুলি এই কাজ থেকে আউটপুট ডেটা ব্যাখ্যা করে:

ক্যাটাগরি মাস্ক

নিম্নোক্ত চিত্রগুলি নির্দেশিত আগ্রহের পয়েন্ট এলাকা সহ একটি বিভাগ মান মাস্কের জন্য টাস্ক আউটপুটের একটি ভিজ্যুয়ালাইজেশন দেখায়। প্রতিটি পিক্সেল একটি uint8 মান নির্দেশ করে যে পিক্সেলটি আগ্রহের এলাকায় অবস্থিত বস্তুর অংশ কিনা। দ্বিতীয় চিত্রের কালো এবং সাদা বৃত্তটি আগ্রহের নির্বাচিত এলাকা নির্দেশ করে।

মূল ছবি এবং বিভাগ মাস্ক আউটপুট. Pascal VOC 2012 ডেটাসেট থেকে উৎস চিত্র।

আত্মবিশ্বাসের মুখোশ

একটি কনফিডেন্স মাস্কের আউটপুটে প্রতিটি ইমেজ ইনপুট চ্যানেলের জন্য [0, 1] এর মধ্যে ফ্লোট মান রয়েছে। উচ্চতর মানগুলি একটি উচ্চ আত্মবিশ্বাস নির্দেশ করে যে চিত্র পিক্সেলটি আগ্রহের এলাকায় অবস্থিত বস্তুর অংশ।