इमेज सेगमेंटेशन का परिचय

PyTorch के साथ इमेज के लिए डीप लर्निंग

Michal Oleszak

Machine Learning Engineer

इमेज सेगमेंटेशन

  • Image segmentation पिक्सेल स्तर पर इमेज को कई सेगमेंट में बाँटती है
  • इमेज के हर पिक्सेल को किसी एक सेगमेंट में असाइन किया जाता है
  • सेगमेंटेशन के तीन प्रकार:
    • सेमान्टिक सेगमेंटेशन
    • इंस्टेंस सेगमेंटेशन
    • पैनॉप्टिक सेगमेंटेशन
PyTorch के साथ इमेज के लिए डीप लर्निंग

सेमान्टिक सेगमेंटेशन

सेमान्टिक सेगमेंटेशन

  • हर पिक्सेल को किसी क्लास में वर्गीकृत किया जाता है
  • एक ही क्लास के सभी पिक्सेल समान माने जाते हैं
PyTorch के साथ इमेज के लिए डीप लर्निंग

इंस्टेंस सेगमेंटेशन

इंस्टेंस सेगमेंटेशन

  • एक ही क्लास की अलग-अलग इकाइयों में फर्क करता है
  • बैकग्राउंड अक्सर सेगमेंट नहीं किया जाता
PyTorch के साथ इमेज के लिए डीप लर्निंग

पैनॉप्टिक सेगमेंटेशन

पैनॉप्टिक सेगमेंटेशन

  • सेमान्टिक और इंस्टेंस सेगमेंटेशन को जोड़ता है
  • हर ऑब्जेक्ट इंस्टेंस को यूनिक लेबल देता है
  • बैकग्राउंड को पिक्सेल स्तर पर क्लासिफाई करता है
PyTorch के साथ इमेज के लिए डीप लर्निंग

डेटा एनोटेशन

image = Image.open("images/British_Shorthair_36.jpg")
mask = Image.open("annots/British_Shorthair_36.png")


transform = transforms.Compose([ transforms.ToTensor() ]) image_tensor = transform(image) mask_tensor = transform(mask)
print(f"""Image shape: {image_tensor.shape} Mask shape: {mask_tensor.shape}""")
    Image shape: torch.Size([3, 333, 500])
    Mask shape: torch.Size([1, 333, 500])

ब्रिटिश शॉर्टहेयर बिल्ली की फोटो

PyTorch के साथ इमेज के लिए डीप लर्निंग

मास्क को समझना

  • डेटासेट डॉक्यूमेंटेशन:

    Pixel Annotations: 1: Foreground 2: Background 3: Not classified

  • यूनिक मास्क वैल्यू:

    mask_tensor.unique()
    
    tensor([0.0039, 0.0078, 0.0118])
    
  • पिक्सेल वैल्यू 255 से भाग दी गई हैं:

    • 1 / 255 = 0.0039 - ऑब्जेक्ट
    • 2 / 255 = 0.0.0078 - बैकग्राउंड
    • 3 / 255 = 0.0118 - अनक्लासिफाइड
PyTorch के साथ इमेज के लिए डीप लर्निंग

बाइनरी मास्क बनाना

binary_mask = torch.where(
    mask_tensor == 1/255, 
    torch.tensor(1.0),
    torch.tensor(0.0),
)


to_pil_image = transforms.ToPILImage() mask = to_pil_image(binary_mask)
plt.imshow(mask)

सेगमेंटेशन मास्क

  • torch.where():
    • कंडीशन
    • कंडीशन सही हो तो यह वैल्यू
    • वरना यह वैल्यू
  • मास्क को PIL इमेज में बदलें
  • मास्क इमेज दिखाएँ
PyTorch के साथ इमेज के लिए डीप लर्निंग

ऑब्जेक्ट को सेगमेंट करना

object_tensor = image_tensor * binary_mask


to_pil_image = transforms.ToPILImage() object_image = to_pil_image(object_tensor)
plt.imshow(object_image)

सेगमेंटेड इमेज

  • इमेज को बाइनरी मास्क से गुणा करें
  • ऑब्जेक्ट को PIL इमेज में बदलें
  • ऑब्जेक्ट इमेज दिखाएँ
PyTorch के साथ इमेज के लिए डीप लर्निंग

अभ्यास करते हैं!

PyTorch के साथ इमेज के लिए डीप लर्निंग

Preparing Video For Download...