SegNet分割图像

我正在使用SegNet进行图像分割。我有一个我不明白收到以下错误消息的问题:

  

ValueError:检查输入时出错:预期input_5具有4个维度,但数组的形状为(211、256、256)

我的代码:

def segnet(epochs_num,savename):

# Encoding layer
img_input = Input(shape= (256,256,3))
x = Conv2D(64,(3,3),padding='same',name='conv1',strides= (1,1))(img_input)
x = BatchNormalization(name='bn1')(x)
x = activation('relu')(x)
x = Conv2D(64,name='conv2')(x)
x = BatchNormalization(name='bn2')(x)
x = activation('relu')(x)
x = MaxPooling2D()(x)

x = Conv2D(128,name='conv3')(x)
x = BatchNormalization(name='bn3')(x)
x = activation('relu')(x)
x = Conv2D(128,name='conv4')(x)
x = BatchNormalization(name='bn4')(x)
x = activation('relu')(x)
x = MaxPooling2D()(x)

x = Conv2D(256,name='conv5')(x)
x = BatchNormalization(name='bn5')(x)
x = activation('relu')(x)
x = Conv2D(256,name='conv6')(x)
x = BatchNormalization(name='bn6')(x)
x = activation('relu')(x)
x = Conv2D(256,name='conv7')(x)
x = BatchNormalization(name='bn7')(x)
x = activation('relu')(x)
x = MaxPooling2D()(x)

x = Conv2D(512,name='conv8')(x)
x = BatchNormalization(name='bn8')(x)
x = activation('relu')(x)
x = Conv2D(512,name='conv9')(x)
x = BatchNormalization(name='bn9')(x)
x = activation('relu')(x)
x = Conv2D(512,name='conv10')(x)
x = BatchNormalization(name='bn10')(x)
x = activation('relu')(x)
x = MaxPooling2D()(x)

x = Conv2D(512,name='conv11')(x)
x = BatchNormalization(name='bn11')(x)
x = activation('relu')(x)
x = Conv2D(512,name='conv12')(x)
x = BatchNormalization(name='bn12')(x)
x = activation('relu')(x)
x = Conv2D(512,name='conv13')(x)
x = BatchNormalization(name='bn13')(x)
x = activation('relu')(x)
x = MaxPooling2D()(x)

x = Dense(1024,activation = 'relu',name='fc1')(x)
x = Dense(1024,name='fc2')(x)
# Decoding Layer 
x = UpSampling2D()(x)
x = Conv2DTranspose(512,name='deconv1')(x)
x = BatchNormalization(name='bn14')(x)
x = activation('relu')(x)
x = Conv2DTranspose(512,name='deconv2')(x)
x = BatchNormalization(name='bn15')(x)
x = activation('relu')(x)
x = Conv2DTranspose(512,name='deconv3')(x)
x = BatchNormalization(name='bn16')(x)
x = activation('relu')(x)

x = UpSampling2D()(x)
x = Conv2DTranspose(512,name='deconv4')(x)
x = BatchNormalization(name='bn17')(x)
x = activation('relu')(x)
x = Conv2DTranspose(512,name='deconv5')(x)
x = BatchNormalization(name='bn18')(x)
x = activation('relu')(x)
x = Conv2DTranspose(256,name='deconv6')(x)
x = BatchNormalization(name='bn19')(x)
x = activation('relu')(x)

x = UpSampling2D()(x)
x = Conv2DTranspose(256,name='deconv7')(x)
x = BatchNormalization(name='bn20')(x)
x = activation('relu')(x)
x = Conv2DTranspose(256,name='deconv8')(x)
x = BatchNormalization(name='bn21')(x)
x = activation('relu')(x)
x = Conv2DTranspose(128,name='deconv9')(x)
x = BatchNormalization(name='bn22')(x)
x = activation('relu')(x)

x = UpSampling2D()(x)
x = Conv2DTranspose(128,name='deconv10')(x)
x = BatchNormalization(name='bn23')(x)
x = activation('relu')(x)
x = Conv2DTranspose(64,name='deconv11')(x)
x = BatchNormalization(name='bn24')(x)
x = activation('relu')(x)

x = UpSampling2D()(x)
x = Conv2DTranspose(64,name='deconv12')(x)
x = BatchNormalization(name='bn25')(x)
x = activation('relu')(x)
x = Conv2DTranspose(1,name='deconv13')(x)
x = BatchNormalization(name='bn26')(x)
x = activation('sigmoid')(x)
pred = Reshape((256,256))(x)

model = Model(inputs=img_input,outputs=pred)

model.compile(optimizer= SGD(lr=0.001,momentum=0.9,decay=0.0005,nesterov=False),loss= ["binary_crossentropy"],metrics=[iou,dice_coef,precision,recall,accuracy])
model.summary()
hist = model.fit(x_train,y_train,epochs= epochs_num,batch_size= 18,validation_data= (x_val,y_val),verbose=1)

model.save(savename)
return model,hist
yourthing 回答:SegNet分割图像

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3022106.html

大家都在问