Unet多类别图像分割模型管道相关技术咨询
关于多类别图像分割模型管道的若干问题
1 - 图像掩码的影响
我按照以下模板为每张图像创建掩码:
- (0,0,0)代表背景
- (1,1,1)代表外部伤口
- (2,2,2)代表伤口本体
分割掩码示例展示了图像中伤口和外部伤口的分布,但未遵循上述(0,0,0)等模板。
如果我按照上述模板训练模型,或是使用另一模板,例如:
- (50,50,50)代表背景
- (100,100,100)代表外部伤口
- (232,232,232)代表伤口本体
这会对模型产生影响吗?如果我使用data = dict(rescale=1./255.)对图像进行缩放,仍会有影响吗?
2 - 分割输出问题
图像分割输出结果显示模型训练后的输出效果很差,原因是什么?
以下是我的模型通用流程:
data_full_aug = dict(rescale=1./255.,rotation_range=90,vertical_flip=True,horizontal_flip=True,width_shift_range=0.3,height_shift_range=0.3,zoom_range=0.3,shear_range=0.3, fill_mode = 'reflect')
以下步骤同样适用于掩码:
datagen_full_data_aug = ImageDataGenerator(**data_full_aug) train_generator_images=datagen_full_data_aug.flow_from_dataframe( dataframe=train, directory=folder_images, x_col='filename', class_mode=None, shuffle=True, seed = seed, batch_size=batch_size, target_size=(image_size,image_size) ) validation_generator_images=datagen_no_data_aug.flow_from_dataframe( dataframe=validation, directory=folder_images, x_col='filename', class_mode=None, shuffle=True, seed = seed, batch_size=batch_size, target_size=(image_size,image_size) )
随后将图像和掩码进行打包:
train_generator = zip(train_generator_images, train_generator_masks) validation_generator = zip(validation_generator_images, validation_generator_masks)
接着进行模型拟合:
history=model.fit( train_generator, steps_per_epoch=steps_per_epoch, epochs=EPOCHS, verbose=2, validation_data=validation_generator, validation_steps=val_steps_per_epoch, callbacks=[checkpoint], batch_size = batch_size )
模型来自segmentation-models库,定义如下:
model = sm.Unet(input_shape=(image_size, image_size, nb_channels), classes=nb_classes, activation='softmax', encoder_weights='imagenet')
我已尝试调整learning_rate和epochs参数值。
内容的提问来源于stack exchange,提问作者user14032541
相关产品推荐
相关产品推荐

