Deep Learning U-net keras делает патчи из исходного изображения. (Код python) - PullRequest
0 голосов
/ 03 мая 2018

У меня проблема с набором данных предварительной обработки для глубокого обучения. Я использую U-net.

У меня есть данные тренировки, данные этикетки, размер данных теста 512x512.

Мне нужно обучение на основе патчей, поэтому я пытаюсь изменить фрагменты 512x512 на несколько фрагментов 64x64, чтобы я мог тренировать изображение с патчами 64x64. В моем случае я хочу сделать 64x64 патча с шагом 32 пикселя от оригинальных изображений 512x512.

Например, первый патч сформирован из (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)

Я ценю вашу помощь.

...