Python के लिए, इंटरैक्टिव इमेज सेगमेंटेशन गाइड

MediaPipe इंटरैक्टिव इमेज सेगमेंटर टास्क किसी इमेज में एक जगह लेता है, उस जगह पर किसी ऑब्जेक्ट की सीमाओं का अनुमान लगाता है, और ऑब्जेक्ट के लिए सेगमेंटेशन को इमेज डेटा के रूप में दिखाता है. इन निर्देशों में Python भाषा के साथ इंटरैक्टिव इमेज सेगमेंटर इस्तेमाल करने का तरीका बताया गया है. इस टास्क की क्षमताओं, मॉडल, और कॉन्फ़िगरेशन के विकल्पों के बारे में ज़्यादा जानकारी के लिए, खास जानकारी देखें.

कोड का उदाहरण

इंटरैक्टिव इमेज सेगमेंटर का उदाहरण कोड, आपके रेफ़रंस के लिए Python में इस टास्क को पूरी तरह से लागू करने का तरीका बताता है. यह कोड इस टास्क को टेस्ट करने और खुद का इंटरैक्टिव इमेज सेगमेंटेशन ऐप्लिकेशन बनाने का काम शुरू करने में आपकी मदद करता है. वेब ब्राउज़र का इस्तेमाल करके, इंटरैक्टिव इमेज सेगमेंटर को देखा जा सकता है, उसे चलाया जा सकता है, और उसमें बदलाव किया जा सकता है. इसके लिए, उदाहरण कोड का भी इस्तेमाल किया जा सकता है.

सेटअप

इस सेक्शन में, डेवलपमेंट एनवायरमेंट सेट अप करने के मुख्य चरणों के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि इंटरैक्टिव इमेज सेगमेंटर का इस्तेमाल करने के लिए, खास तौर पर कोड प्रोजेक्ट कैसे सेट अप करें. MediaPipe टास्क का इस्तेमाल करने के लिए अपने डेवलपमेंट एनवायरमेंट को सेट अप करने से जुड़ी सामान्य जानकारी के लिए, Python के लिए सेटअप गाइड देखें. इसमें प्लैटफ़ॉर्म के वर्शन की ज़रूरी शर्तों के साथ-साथ काम करने के तरीके भी शामिल हैं. इस उदाहरण के लिए सोर्स कोड को GitHub पर देखा जा सकता है

पैकेज

MediaPipe के इंटरैक्टिव इमेज सेगमेंटर टास्क के लिए, 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

कॉन्फ़िगरेशन विकल्प

इस टास्क में Python ऐप्लिकेशन के लिए कॉन्फ़िगरेशन के ये विकल्प मौजूद हैं:

विकल्प का नाम ब्यौरा वैल्यू रेंज डिफ़ॉल्ट मान
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

डेटा तैयार करना

अपने इनपुट को इमेज फ़ाइल या numpy कलेक्शन के तौर पर तैयार करें. इसके बाद, उसे 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] के बीच फ़्लोट वैल्यू होती हैं. ज़्यादा वैल्यू का मतलब है कि इमेज पिक्सल, पसंदीदा जगह पर मौजूद ऑब्जेक्ट का हिस्सा है.