Unet предсказывает случайное изображение - PullRequest
0 голосов
/ 24 октября 2019

Я создаю unet для сегментации изображения - создаю наземные истины для зданий на аэрофотоснимке изображения города ((5000,5000,3), которое я уменьшил до (4992,4992,3), чтобы учесть более одногосэмплирование), и мой вывод - либо почти полностью пустое изображение, либо кадр случайного шума (в зависимости от того, как я изменяю количество слоев), но никогда не дает правильного решения

общие исправления, которые я вижу, гарантируют пикселинормализованы (они есть) и уменьшают слои - оба из которых не получили меня, где

мой unet определен как


def Unet():

    input = keras.layers.Input((4992, 4992, 3))
    p0 = input

    c1,p1 = down_conv(p0,1)
    c2,p2 = down_conv(p1,2)
    c3,p3 = down_conv(p2,4)
    c4,p4 = down_conv(p3,8)

    bn = bottleneck(p4,16)

    u1 = up_conv(bn,c4,8)
    u2 = up_conv(u1,c3,4)
    u3 = up_conv(u2,c2,2)
    u4 = up_conv(u3,c1,1)

    out = keras.layers.Conv2D(1,(1,1), padding = "same", activation = "sigmoid")(u4)
    model = keras.models.Model(input,out)
    return model

с функциями


def down_conv(x,filters,kernel_size=(3,3), padding = "same",strides = 1):
    x = keras.layers.Conv2D(filters,kernel_size,padding=padding,strides=strides,activation="relu")(x)
    x = keras.layers.Conv2D(filters,kernel_size,padding=padding,strides=strides,activation="relu")(x)
    p = keras.layers.MaxPool2D((2,2),(2,2))(x)
    return x,p

def up_conv(x,skip,filters,kernel_size=(3,3),padding = "same",strides = 1):
    x = keras.layers.UpSampling2D((2,2))(x)
    x = keras.layers.Concatenate()([x,skip])
    x = keras.layers.Conv2D(filters,kernel_size,padding=padding,strides=strides,activation="relu")(x)
    x = keras.layers.Conv2D(filters,kernel_size,padding=padding,strides=strides,activation="relu")(x)
    return x

def bottleneck(x,filters,kernel_size=(3,3), padding = "same",strides = 1):
    x = keras.layers.Conv2D(filters,kernel_size,padding=padding,strides=strides,activation="relu")(x)
    x = keras.layers.Conv2D(filters,kernel_size,padding=padding,strides=strides,activation="relu")(x)
    return x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...