Моя остаточная нейронная сеть выдает очень странную карту глубины в качестве вывода. Я не знаю, как улучшить мою модель? - PullRequest
0 голосов
/ 26 декабря 2018

Вывод, который я получаю из моей остаточной модели, это изображение с маленькими квадратиками на нем (изображение с очень низким разрешением), но оно должно дать мне карту глубины.Объекты на изображении теряются, и видны только эти маленькие квадраты.Я не умею импровизировать?

def mini_model (input_shape):

# Define the input as a tensor with shape input_shape
X_input = Input(input_shape)

# Zero_Padding
X = ZeroPadding2D((3,3))(X_input)
#stage_1
X = Conv2D(64,(7,7),strides = (2,2),name = 'conv1')(X)
X = BatchNormalization(axis = 3,name = 'bn_conv1')(X)
X = Activation('relu')(X)
X = MaxPooling2D((3,3),strides = (2,2))(X)
# Stage 2
X = convolutional_block(X, f = 3, filters = [64, 64, 256], stage = 2, block='a', s = 1)
X = identity_block(X, 3, [64, 64, 256], stage=2, block='b')
X = identity_block(X, 3, [64, 64, 256], stage=2, block='c')

#stage3
X = convolutional_block(X,f = 3 , filters = [128,128,512],stage = 3,block = 'a', s = 2)
X = identity_block(X,3,[128,128,512],stage = 3,block='b')
X = identity_block(X,3,[128,128,512],stage = 3 , block = 'c')
X = identity_block(X,3,[128,128,512],stage = 3 , block = 'd')

#stage 4
X = convolutional_block(X,f = 3 , filters = [256,256,1024],stage = 4,block = 'a', s = 2)
X = identity_block(X,3,[256,256,1024],stage = 4,block='b')
X = identity_block(X,3,[256,256,1024],stage = 4,block='c')
X = identity_block(X,3,[256,256,1024],stage = 4,block='d')
X = identity_block(X,3,[256,256,1024],stage = 4,block='e')
X = identity_block(X,3,[256,256,1024],stage = 4,block='f')
X = identity_block(X,3,[256,256,1024],stage = 4,block='g')
X = identity_block(X,3,[256,256,1024],stage = 4,block='h')
X = identity_block(X,3,[256,256,1024],stage = 4,block='i')
X = identity_block(X,3,[256,256,1024],stage = 4,block='j')
X = identity_block(X,3,[256,256,1024],stage = 4,block='k')
X = identity_block(X,3,[256,256,1024],stage = 4,block='l')

#stage 5
X = convolutional_block(X,f = 3 , filters = [512,512,2048],stage = 5,block = 'a', s = 2)
X = identity_block(X,3,[512,512,2048],stage = 5,block='b')
X = identity_block(X,3,[512,512,2048],stage = 5,block='c')

# AVGPOOL

    X = Conv2D(3,kernel_size=(3,3), padding = 'same',use_bias = False)(X)
    X = UpSampling2D(size=2)(X)
    X = UpSampling2D(size=2)(X)
    X = UpSampling2D(size=2)(X)
    X = UpSampling2D(size=2)(X)
X = UpSampling2D(size=2)(X)

# Create model
model = Model(inputs = X_input, outputs = X)
return(model)

моя остаточная модель !!форма входного изображения = (480 640,3)

enter image description here

Фактические результаты: изображение состоит из маленьких квадратов с различными уровнями серого.Ожидаемые результаты: изображение должно быть картой глубины того же размера, что и входные данные (480 640,3)

1 Ответ

0 голосов
/ 26 декабря 2018

У вас есть пять слоев повышенной дискретизации в последовательности.Это именно то, что ожидается от этого.Большие квадраты 32 пикселей.(2 ^ 5 = 32)

Вероятно, вам следует прочитать о U-сетях, создать больше сверток между повышающей дискретизацией и соединениями из реснета с результатами повышающей дискретизации.

...