دیتاست گرافی MNISTSuperpixels
دیتاست MNISTSuperpixels یک مجموعهداده از تصاویری است که از مجموعه داده اصلی دستنوشتههای MNIST به دست آمده است.
این مجموعه داده از مقالهی «Geometric Deep Learning on Graphs and Manifolds Using Mixture Model CNNs»، حاوی 70000 گراف با 75 راس است.
در این دیتاست، هر تصویر به عنوان یک گراف نمایش داده شده است، به طوری که هر پیکسل در تصویر یک گره در گراف و همینطور یال بین دو گره مجاور، رابطه فضایی بین پیکسلهای متناظر را نشان میدهد.
در واقع، هر گره در گراف نمایش دهنده یک سوپرپیکسل است، که جمعیتی از پیکسلهای مجاوری است که ویژگیهای مشابهی از جمله رنگ و بافت را به اشتراک میگذارند. هدف اصلی این دیتاست، طبقهبندی هر گراف (تصویر) به یکی از 10 کلاس مختلف است، که متناظر با ۱۰ رقم از ۰ تا ۹ هستند.
MNISTSuperpixels دیتاست به عنوان یک قسمت از کتابخانه PyTorch Geometric در اختیار قرار میگیرد. این کتابخانه مجموعهای از ابزارها و امکانات برای کار با دادههای ساختار دار گرافی در فریم ورک PyTorch فراهم میکند. این کتابخانه ابزارهایی برای بارگذاری و تحلیل دیتاستهای گراف، طراحی و آموزش شبکههای عصبی گرافی و … را فراهم میکند. در زیر نحوه استفاده از این دیتاست در این ابزار آورده شده است:
from torch_geometric.datasets import MNISTSuperpixels train_dataset = MNISTSuperpixels(path, True) test_dataset = MNISTSuperpixels(path, False)
قاعدتا میتوان همزمان با لود کردن این کتابخانه، تبدیلاتی روی آم اعمال کرد:
import os.path as osp from torch_geometric.datasets import MNISTSuperpixels import torch_geometric.transforms as T path = osp.join('.', 'data', 'MNIST') transform = T.Cartesian(cat=False) train_dataset = MNISTSuperpixels(path, True, transform=transform) test_dataset = MNISTSuperpixels(path, False, transform=transform)
در کد بالا، transform یک شیء از کلاس T.Cartesian است که به عنوان پیش پردازش برای دادههای مجموعه داده MNISTSuperpixels استفاده میشود. با استفاده از این تبدیل، نقاط هر عکس در فضای مختصات کارتزی قرار میگیرند و به عنوان ورودی به شبکه عصبی داده میشوند.
تبدیل Cartesian که در کد بالا استفاده شده، به منظور تبدیل نقاط هر سوپرپیکسل از فضای تصویر به فضای مختصات کارتزی به کار گرفته میشود. با این تبدیل، هر سیمپلکس با مجموعهای از نقاط در فضای دو بعدی (یا سه بعدی) نمایش داده میشود.
سوپرپیکسل چیست؟
سوپرپیکسل (Superpixel) در پردازش تصویر، یک واحد از تصویر است که به دلیل ویژگیهای مشابه در آن بخشهای مجاور با هم ترکیب شدهاند. به عبارت دقیقتر، سوپرپیکسلها بخشهایی از تصویر هستند که توسط الگوریتم خاصی از ترکیب پیکسلهای مجاور و با استفاده از ویژگیهایی مانند رنگ، شدت نور و موقعیت به دست میآیند.
استفاده از سوپرپیکسلها در پردازش تصویر، به دلیل کاهش حجم دادهها و همچنین کاهش نویز در دادههای تصویری که در برخی کاربردهای مانند تشخیص اشیاء و تحلیل صحنه مورد استفاده قرار میگیرند، مزیتهایی دارد. همچنین با استفاده از این روشها، میتوان ویژگیهای مفید و مختلف تصویر را با هزینه کمتری استخراج کرد.
محاسبه ویژگی های هر راس
from torch_geometric.utils import normalized_cut def normalized_cut_2d(edge_index, pos): row, col = edge_index edge_attr = torch.norm(pos[row] - pos[col], p=2, dim=1) return normalized_cut(edge_index, edge_attr, num_nodes=pos.size(0))
این کد یک تابع به نام `normalized_cut_2d` تعریف میکند که دو ورودی به شکل زیر میگیرد:
– `edge_index`: یک تانسور ۲ بعدی با ابعاد `(۲، تعداد لبهها)` است که شامل اندیسهای گرههای متصل به هم در گراف است.
– `pos`: یک تانسور ۲ بعدی با ابعاد `(تعداد گرهها، ۲)` است که حاوی مختصات x-y هر گره در گراف است.
ابتدا تابع فواصل اقلیدسی بین تمام جفت گرههای متصل به هم را با استفاده از تابع `torch.norm()` با پارامتر `p=2` محاسبه میکند.
تانسور نتیجهی به دست آمده با نام `edge_attr`، حاوی فواصل بین گرههای مختلف در گراف است. در ادامه، تابع `normalized_cut()` از ماژول `torch_geometric.utils` صدا زده میشود که ورودیهای `edge_index`، `edge_attr` و تعداد کل گرهها در گراف (`pos.size(0)`) را به عنوان ورودی میگیرد. این تابع مقدار normalized cut گراف را محاسبه میکند، که نشاندهندهی کیفیت یک تقسیم برشی از گراف به دو مجموعه بدون همپوشانی با توجه به وزن لبههای آن است.
به طور خلاصه، این کد مقدار normalized cut یک گراف داده شده با شاخصهای لبه و مختصات گرهها با استفاده از فواصل اقلیدسی بین گرهها به عنوان ویژگی لبهها محاسبه میکند. این مقدار میتواند برای ارزیابی کارایی الگوریتمهای خوشهبندی یا سایر مدلهای یادگیری ماشین مبتنی بر گراف که بر روی مجموعه داده MNIST Superpixels عمل میکنند، مفید باشد.
دیدگاهتان را بنویسید