首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多类(4类)图像分割的UNet模型实现

多类(4类)图像分割的UNet模型实现
EN

Stack Overflow用户
提问于 2020-11-14 15:28:01
回答 1查看 401关注 0票数 0

我试图在标记的图像数据上实现一个UNet模型。数据集包含大约10,000幅图像及其各自的掩码(有色-RGB)。

图像尺寸: 500×500×3

面具不是黑白的,它们是彩色的(RGB),有3个类(技术上是4个):

  • 背景:黑色
  • 第1类:红色
  • 第2类:绿色
  • 第三班:蓝色

这是模型的最后两个CONV块的代码:

代码语言:javascript
复制
    model = Conv2D(64,(3,3),strides=(1, 1),padding='same')(concat_5)
    model = LeakyReLU(0.1)(model)
    model = BatchNormalization()(model)

    model = Conv2D(4,(3,3),strides=(1, 1),padding='same', activation="softmax")(model)

    model = Model(base_model.input,model)

模型架构:

代码语言:javascript
复制
Model: "functional_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            [(None, 500, 500, 3) 0                                            
__________________________________________________________________________________________________
block1_conv1 (Conv2D)           (None, 500, 500, 64) 1792        input_1[0][0]                    
__________________________________________________________________________________________________
block1_conv2 (Conv2D)           (None, 500, 500, 64) 36928       block1_conv1[0][0]               
__________________________________________________________________________________________________
block1_pool (MaxPooling2D)      (None, 250, 250, 64) 0           block1_conv2[0][0]               
__________________________________________________________________________________________________
block2_conv1 (Conv2D)           (None, 250, 250, 128 73856       block1_pool[0][0]                
__________________________________________________________________________________________________
block2_conv2 (Conv2D)           (None, 250, 250, 128 147584      block2_conv1[0][0]               
__________________________________________________________________________________________________
block2_pool (MaxPooling2D)      (None, 125, 125, 128 0           block2_conv2[0][0]               
__________________________________________________________________________________________________
block3_conv1 (Conv2D)           (None, 125, 125, 256 295168      block2_pool[0][0]                
__________________________________________________________________________________________________
block3_conv2 (Conv2D)           (None, 125, 125, 256 590080      block3_conv1[0][0]               
__________________________________________________________________________________________________
block3_conv3 (Conv2D)           (None, 125, 125, 256 590080      block3_conv2[0][0]               
__________________________________________________________________________________________________
block3_pool (MaxPooling2D)      (None, 62, 62, 256)  0           block3_conv3[0][0]               
__________________________________________________________________________________________________
block4_conv1 (Conv2D)           (None, 62, 62, 512)  1180160     block3_pool[0][0]                
__________________________________________________________________________________________________
block4_conv2 (Conv2D)           (None, 62, 62, 512)  2359808     block4_conv1[0][0]               
__________________________________________________________________________________________________
block4_conv3 (Conv2D)           (None, 62, 62, 512)  2359808     block4_conv2[0][0]               
__________________________________________________________________________________________________
block4_pool (MaxPooling2D)      (None, 31, 31, 512)  0           block4_conv3[0][0]               
__________________________________________________________________________________________________
block5_conv1 (Conv2D)           (None, 31, 31, 512)  2359808     block4_pool[0][0]                
__________________________________________________________________________________________________
block5_conv2 (Conv2D)           (None, 31, 31, 512)  2359808     block5_conv1[0][0]               
__________________________________________________________________________________________________
block5_conv3 (Conv2D)           (None, 31, 31, 512)  2359808     block5_conv2[0][0]               
__________________________________________________________________________________________________
block5_pool (MaxPooling2D)      (None, 15, 15, 512)  0           block5_conv3[0][0]               
__________________________________________________________________________________________________
conv2d_transpose_5 (Conv2DTrans (None, 31, 31, 256)  1179904     block5_pool[0][0]                
__________________________________________________________________________________________________
leaky_re_lu_10 (LeakyReLU)      (None, 31, 31, 256)  0           conv2d_transpose_5[0][0]         
__________________________________________________________________________________________________
batch_normalization_10 (BatchNo (None, 31, 31, 256)  1024        leaky_re_lu_10[0][0]             
__________________________________________________________________________________________________
concatenate_5 (Concatenate)     (None, 31, 31, 768)  0           batch_normalization_10[0][0]     
                                                                 block5_conv3[0][0]               
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 31, 31, 512)  3539456     concatenate_5[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_11 (LeakyReLU)      (None, 31, 31, 512)  0           conv2d_6[0][0]                   
__________________________________________________________________________________________________
batch_normalization_11 (BatchNo (None, 31, 31, 512)  2048        leaky_re_lu_11[0][0]             
__________________________________________________________________________________________________
conv2d_transpose_6 (Conv2DTrans (None, 62, 62, 512)  2359808     batch_normalization_11[0][0]     
__________________________________________________________________________________________________
leaky_re_lu_12 (LeakyReLU)      (None, 62, 62, 512)  0           conv2d_transpose_6[0][0]         
__________________________________________________________________________________________________
batch_normalization_12 (BatchNo (None, 62, 62, 512)  2048        leaky_re_lu_12[0][0]             
__________________________________________________________________________________________________
concatenate_6 (Concatenate)     (None, 62, 62, 1024) 0           batch_normalization_12[0][0]     
                                                                 block4_conv3[0][0]               
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 62, 62, 512)  4719104     concatenate_6[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_13 (LeakyReLU)      (None, 62, 62, 512)  0           conv2d_7[0][0]                   
__________________________________________________________________________________________________
batch_normalization_13 (BatchNo (None, 62, 62, 512)  2048        leaky_re_lu_13[0][0]             
__________________________________________________________________________________________________
conv2d_transpose_7 (Conv2DTrans (None, 125, 125, 512 2359808     batch_normalization_13[0][0]     
__________________________________________________________________________________________________
leaky_re_lu_14 (LeakyReLU)      (None, 125, 125, 512 0           conv2d_transpose_7[0][0]         
__________________________________________________________________________________________________
batch_normalization_14 (BatchNo (None, 125, 125, 512 2048        leaky_re_lu_14[0][0]             
__________________________________________________________________________________________________
concatenate_7 (Concatenate)     (None, 125, 125, 768 0           batch_normalization_14[0][0]     
                                                                 block3_conv3[0][0]               
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 125, 125, 256 1769728     concatenate_7[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_15 (LeakyReLU)      (None, 125, 125, 256 0           conv2d_8[0][0]                   
__________________________________________________________________________________________________
batch_normalization_15 (BatchNo (None, 125, 125, 256 1024        leaky_re_lu_15[0][0]             
__________________________________________________________________________________________________
conv2d_transpose_8 (Conv2DTrans (None, 250, 250, 256 590080      batch_normalization_15[0][0]     
__________________________________________________________________________________________________
leaky_re_lu_16 (LeakyReLU)      (None, 250, 250, 256 0           conv2d_transpose_8[0][0]         
__________________________________________________________________________________________________
batch_normalization_16 (BatchNo (None, 250, 250, 256 1024        leaky_re_lu_16[0][0]             
__________________________________________________________________________________________________
concatenate_8 (Concatenate)     (None, 250, 250, 384 0           batch_normalization_16[0][0]     
                                                                 block2_conv2[0][0]               
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 250, 250, 128 442496      concatenate_8[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_17 (LeakyReLU)      (None, 250, 250, 128 0           conv2d_9[0][0]                   
__________________________________________________________________________________________________
batch_normalization_17 (BatchNo (None, 250, 250, 128 512         leaky_re_lu_17[0][0]             
__________________________________________________________________________________________________
conv2d_transpose_9 (Conv2DTrans (None, 500, 500, 128 147584      batch_normalization_17[0][0]     
__________________________________________________________________________________________________
leaky_re_lu_18 (LeakyReLU)      (None, 500, 500, 128 0           conv2d_transpose_9[0][0]         
__________________________________________________________________________________________________
batch_normalization_18 (BatchNo (None, 500, 500, 128 512         leaky_re_lu_18[0][0]             
__________________________________________________________________________________________________
concatenate_9 (Concatenate)     (None, 500, 500, 192 0           batch_normalization_18[0][0]     
                                                                 block1_conv2[0][0]               
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 500, 500, 64) 110656      concatenate_9[0][0]              
__________________________________________________________________________________________________
leaky_re_lu_19 (LeakyReLU)      (None, 500, 500, 64) 0           conv2d_10[0][0]                  
__________________________________________________________________________________________________
batch_normalization_19 (BatchNo (None, 500, 500, 64) 256         leaky_re_lu_19[0][0]             
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 500, 500, 4)  2308        batch_normalization_19[0][0]     
==================================================================================================
Total params: 31,948,164
Trainable params: 31,941,892
Non-trainable params: 6,272
__________________________________________________________________________________________________

当我训练模型时,我会得到以下错误:

代码语言:javascript
复制
InvalidArgumentError:  Incompatible shapes: [4,4,500,500] vs. [4,3,500,500]
     [[node categorical_crossentropy/mul (defined at <ipython-input-15-b60b11ed9e76>:9) ]] [Op:__inference_train_function_5874]

Function call stack:
train_function

模型的最后一层的维数似乎存在一些问题。我想就以下三件事提出建议:

  1. 最后一层的维数(考虑4类的多类分割)
  2. 我应该在最后一层使用哪种激活函数?目前,我正在使用softmax激活。
  3. 在编译模型时,我应该使用什么样的损失?目前,我正在使用categorical_crossentropy
EN

回答 1

Stack Overflow用户

发布于 2020-11-23 16:35:19

我认为问题来自你的课堂。它们的格式是什么?它们是单热编码的吗?

你的激活和丢失功能对我来说是正确的。我认为上一个卷积层应该使用1x1大小的过滤器(类似于最初的)。它确保了更好的像素分类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64835509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档