1

我在预处理数据集以进行深度学习时遇到问题。我正在使用U-net。

我有 512x512 的训练数据、标签数据、测试数据大小。

我想要基于补丁的学习,所以我试图将 512x512 切片更改为多个 64x64 切片,以便我可以使用 64x64 补丁训练图像。在我的情况下,我想从原始 512x512 图像制作 64x64 补丁跨 32 像素。

例如,第一个补丁由 (0,0) ~ (64,64) 组成,下一个补丁由 (32,0) ~ (64 + 32, 64) 组成

这是 data.py 的完整代码

#from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import numpy as np
import os
import glob
import cv2
from os.path import *
#from libtiff import TIFF
import matplotlib.pyplot as plt


class dataProcess(object):
    def __init__(self, out_rows, out_cols):

        """

        """

        self.out_rows = out_rows
        self.out_cols = out_cols

    def load_train_data(self):
        imgs_row, imgs_col = 512,512
        train_list = []
        train_img = []
        label_list = []
        label_img = []
        train_path = 'C:\\Users\\Lee Doyle\\unet\\data\\Train'
        label_path = 'C:\\Users\\Lee Doyle\\unet\\data\\Label'

        ######################Traindata################################

        print('-' * 30)
        print('load train images...')
        print('-' * 30)
        for i in glob.glob(train_path + '/*.[tT][iI][fF]'):
            train_list.append(abspath(i))
        print(len(train_list))
        for i in train_list:
            # print(i)
            img = cv2.imread(i, cv2.IMREAD_GRAYSCALE)

            train_img.append(img.astype(np.float32)/255.0)
        train_img = np.array(train_img)
        print(train_img)
        ######################Labeldata################################

        for i in glob.glob(label_path + '/*.[tT][iI][fF]'):
            label_list.append(abspath(i))
        for i in label_list:
            img = cv2.imread(i, cv2.IMREAD_GRAYSCALE)
            label_img.append(img.astype(np.float32) / 255.0)
        label_img = np.array(label_img)

        fig = plt.figure()
        a=fig.add_subplot(1,2,1)
        plt.imshow(train_img[0],cmap='gray')
        a.set_title('trian image')
        a=fig.add_subplot(1,2,2)
        plt.imshow(label_img[0]+train_img[0],cmap='gray')
        plt.imshow(label_img[0],cmap='gray')
        a.set_title('Image with GT SEG ')
        plt.show()

        print(train_img.shape)
        train_img = train_img.reshape(train_img.shape[0], imgs_row, imgs_col, 1)
        label_img = label_img.reshape(label_img.shape[0], imgs_row, imgs_col, 1)

        return train_img,label_img

    def load_test_data(self):
        imgs_row, imgs_col = 512,512
        test_list = []
        test_img = []
        test_path = 'C:\\Users\\Lee Doyle\\unet\\data\\Test'

        ######################Testdata#################################
        print('-' * 30)
        print('load test images...')
        print('-' * 30)
        for i in glob.glob(test_path + '/*.[tT][iI][fF]'):
            test_list.append(abspath(i))
        for i in test_list:
            img = cv2.imread(i, cv2.IMREAD_GRAYSCALE)
            # img=cv2.resize(img,(512,512))
            test_img.append(img.astype(np.float32) / 255.0)
        test_img = np.array(test_img)
        # mean = test_img.mean(axis=0)
        # test_img -= mean
        test_img=test_img.reshape(test_img.shape[0],imgs_row,imgs_col,1)
        print(test_img.shape)
        return test_img


if __name__ == "__main__":
    mydata = dataProcess(512,512)
    mydata.load_train_data()
    mydata.load_test_data()

我想我需要在此代码附近添加补丁制作代码。

for i in glob.glob(train_path + '/*.[tT][iI][fF]'):
    train_list.append(abspath(i))
print(len(train_list))
for i in train_list:
    # print(i)
    img = cv2.imread(i, cv2.IMREAD_GRAYSCALE)

    train_img.append(img.astype(np.float32)/255.0)
train_img = np.array(train_img)
print(train_img)

我很感激你的帮助。

4

0 回答 0