ادامه مجموعه داده های تصویر، بارگذارهای داده و تبدیل ها در Pytorch

موسسه پایا پروژه به عنوان متصدی انجام پروژه های پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.

افزایش داده ها

ما همچنین می توانیم یک تبدیل برای انجام افزایش داده ها تعریف کنیم. وقتی حجم داده کمتری داریم و می‌خواهیم حجم و تنوع داده‌ها را افزایش دهیم، افزایش داده ابزار بسیار مفیدی است. در زیر نمونه ای از تبدیل است که چرخش عمودی تصادفی را انجام می دهد و لرزش رنگی تصادفی را در تصویر ورودی اعمال می کند.

Defining a custom augmentation class#

:class CustomAugmentation(object)

  :def __init__(self, flip_prob=0.5, jitter_prob=0.5)     

        self.flip_prob = flip_prob           

        self.jitter_prob = jitter_prob           

  

     Defining the transform method#

    :def __call__(self, image)

         Flipping the image horizontally#         

        :if np.random.random() < self.flip_prob         

            (image = np.flip(image, axis=1                       

         Applying random color jitter by adding random noise#

        :if np.random.random() < self.jitter_prob

            image = np.array(image, dtype=np.int32)

             Adding random noise to the image#

            image = image + np.random.randint(-50, 50, size=image.shape, dtype=np.int32)

          

         Returning the augmented image#

        return image

 

اکنون یک تبدیل را بر اساس افزایش سفارشی که قبلا تعریف کردیم تعریف می کنیم و تغییرات مختلف تصویر مورد نظر را نمایش می دهیم.

 Defining augmented and non-augmented transforms#

])aug_transform = torchvision.transforms.Compose

     Replace with the transform object#

   ,()CustomTransform

    ,()CustomAugmentation

([

])nonaug_transform = torchvision.transforms.Compose

     Replace with the transform object#

    ,()CustomTransform

([

  

Creating a dataset object with augmented and non-augmented transforms#

aug_dataset = ImageDataset(data_path, transform=aug_transform)

nonaug_dataset = ImageDataset(data_path, transform=nonaug_transform)

  

 Displaying a non augmented images from the dataset and its augmented version#

image, target = nonaug_dataset[random_index]

  

 Creating a plot#

plt.figure(figsize=(10, 10))

 Adding the non augmented image#

plt.subplot(2, 2, 1)

plt.imshow(target)

plt.title(‘Non augmented image’)

  

 Adding the augmented images#

:for i in range(2, 5)

    image, target1 = aug_dataset[random_index]

    plt.subplot(2, 2, i)

    plt.imshow(target1)

    plt.title(‘Augmented image’)

  

 Displaying the plot#

()plt.show

 

 

خروجی:

دیتالودرهای سفارشی

یک dataloader سفارشی را می توان با بسته بندی مجموعه داده به همراه کلاس torch.utils.data.DataLoader تعریف کرد. این ما را قادر می سازد تا جنبه های مختلف بارگذار داده مانند اندازه دسته ای، تعداد کارگران و اینکه آیا داده ها را در پروژه پایتون به هم بزنیم یا کنترل کنیم. ما می توانیم یک بارگذار داده سفارشی را در Pytorch به صورت زیر تعریف کنیم:

 Defining a custom data loader#

)dataloader = torch.utils.data.DataLoader

     Replace with the dataset object#          

    ,dataset=dataset          

      

     Defining the batch size#

    ,batch_size=4

      

     If true, shuffles the dataset at every epoch#

    ,shuffle=True

  

     Number of parallel processes for loading the data#

    num_workers=2

(

  

 Get the length of the dataloader# 

 (Number of batches)#

print(‘Number of batches:’,len(dataloader))

 

خروجی:

Number of batches: 274

 

مجموعه داده های آموزشی و آزمایشی

اکنون، ما تمام این دانش و استفاده را برای تعریف آموزش و مجموعه داده آزمایشی ترکیب خواهیم کرد. ما پیش پردازش را روی هر دو مجموعه داده انجام خواهیم داد در حالی که فقط روی مجموعه داده قطار تقویت می کنیم. پیاده سازی Pytorch به شرح زیر است:

 File path to the dataset, replace this with your path#

‘train_path = f’./maps/train

‘test_path = f’./maps/val

    

 Defining the train and test transforms#

])train_transform = torchvision.transforms.Compose

    ,()CustomTransform

    ,()CustomAugmentation

([

    ]) test_transform = torchvision.transforms.Compose

    CustomTransform(),

([

  

  

Creating the train and test datasets#

train_dataset = ImageDataset(train_path, transform=train_transform)

test_dataset = ImageDataset(test_path, transform=test_transform)

  

  

# Creating the train and test dataloaders#

)train_dataloader = torch.utils.data.DataLoader

    ,dataset=train_dataset

    ,batch_size=4

    ,shuffle=True

    num_workers=2

(

)test_dataloader = torch.utils.data.DataLoader

    ,dataset=test_dataset

    ,batch_size=1

    ,shuffle=False

    num_workers=2

(

  

 Printing the length of the train and test dataloaders#

print(‘Number of training batches:’,len(train_dataloader))

print(‘Number of testing batches:’,len(test_dataloader))

خروجی:

Number of training batches: 274
Number of testing batches: 1098

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
برای ادامه، شما باید با قوانین موافقت کنید

20 − 3 =