Python 训练uNet模型预测结果仅为黑色

Python 训练uNet模型预测结果仅为黑色,python,python-3.x,keras,conv-neural-network,training-data,Python,Python 3.x,Keras,Conv Neural Network,Training Data,我正在训练一个用于细分的uNet模型。训练模型后,输出都是零,我不明白为什么 我看到建议我应该使用一个特定的损失函数,所以我使用了骰子损失函数。这是因为黑色区域(0)比白色区域(1)大得多 我做错什么了吗 我的型号是: Layer (type) Output Shape Param # Connected to ==============================================================

我正在训练一个用于细分的uNet模型。训练模型后,输出都是零,我不明白为什么

我看到建议我应该使用一个特定的损失函数,所以我使用了骰子损失函数。这是因为黑色区域(0)比白色区域(1)大得多

我做错什么了吗

我的型号是:

Layer (type)                    Output Shape         Param #     Connected to
==================================================================================================
input_1 (InputLayer)            (None, 80, 80, 1)    0
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 80, 80, 64)   640         input_1[0][0]
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 80, 80, 64)   36928       conv2d_1[0][0]
__________________________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D)  (None, 40, 40, 64)   0           conv2d_2[0][0]
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 40, 40, 128)  73856       max_pooling2d_1[0][0]
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 40, 40, 128)  147584      conv2d_3[0][0]
__________________________________________________________________________________________________
max_pooling2d_2 (MaxPooling2D)  (None, 20, 20, 128)  0           conv2d_4[0][0]
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 20, 20, 256)  295168      max_pooling2d_2[0][0]
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 20, 20, 256)  590080      conv2d_5[0][0]
__________________________________________________________________________________________________
max_pooling2d_3 (MaxPooling2D)  (None, 10, 10, 256)  0           conv2d_6[0][0]
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 10, 10, 512)  1180160     max_pooling2d_3[0][0]
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 10, 10, 512)  2359808     conv2d_7[0][0]
__________________________________________________________________________________________________
dropout_1 (Dropout)             (None, 10, 10, 512)  0           conv2d_8[0][0]
__________________________________________________________________________________________________
max_pooling2d_4 (MaxPooling2D)  (None, 5, 5, 512)    0           dropout_1[0][0]
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 5, 5, 1024)   4719616     max_pooling2d_4[0][0]
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 5, 5, 1024)   9438208     conv2d_9[0][0]
__________________________________________________________________________________________________
dropout_2 (Dropout)             (None, 5, 5, 1024)   0           conv2d_10[0][0]
__________________________________________________________________________________________________
conv2d_transpose_1 (Conv2DTrans (None, 10, 10, 512)  2097664     dropout_2[0][0]
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 10, 10, 1024) 0           dropout_1[0][0]
                                                                 conv2d_transpose_1[0][0]
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 10, 10, 512)  4719104     concatenate_1[0][0]
__________________________________________________________________________________________________
conv2d_12 (Conv2D)              (None, 10, 10, 512)  2359808     conv2d_11[0][0]
__________________________________________________________________________________________________
conv2d_transpose_2 (Conv2DTrans (None, 20, 20, 256)  524544      conv2d_12[0][0]
__________________________________________________________________________________________________
concatenate_2 (Concatenate)     (None, 20, 20, 512)  0           conv2d_6[0][0]
                                                                 conv2d_transpose_2[0][0]
__________________________________________________________________________________________________
conv2d_13 (Conv2D)              (None, 20, 20, 256)  1179904     concatenate_2[0][0]
__________________________________________________________________________________________________
conv2d_14 (Conv2D)              (None, 20, 20, 256)  590080      conv2d_13[0][0]
__________________________________________________________________________________________________
conv2d_transpose_3 (Conv2DTrans (None, 40, 40, 128)  131200      conv2d_14[0][0]
__________________________________________________________________________________________________
concatenate_3 (Concatenate)     (None, 40, 40, 256)  0           conv2d_4[0][0]
                                                                 conv2d_transpose_3[0][0]
__________________________________________________________________________________________________
conv2d_15 (Conv2D)              (None, 40, 40, 128)  295040      concatenate_3[0][0]
__________________________________________________________________________________________________
conv2d_16 (Conv2D)              (None, 40, 40, 128)  147584      conv2d_15[0][0]
__________________________________________________________________________________________________
conv2d_transpose_4 (Conv2DTrans (None, 80, 80, 64)   32832       conv2d_16[0][0]
__________________________________________________________________________________________________
concatenate_4 (Concatenate)     (None, 80, 80, 128)  0           conv2d_2[0][0]
                                                                 conv2d_transpose_4[0][0]
__________________________________________________________________________________________________
conv2d_17 (Conv2D)              (None, 80, 80, 64)   73792       concatenate_4[0][0]
__________________________________________________________________________________________________
conv2d_18 (Conv2D)              (None, 80, 80, 64)   36928       conv2d_17[0][0]
__________________________________________________________________________________________________
conv2d_19 (Conv2D)              (None, 80, 80, 2)    1154        conv2d_18[0][0]
__________________________________________________________________________________________________
conv2d_20 (Conv2D)              (None, 80, 80, 1)    3           conv2d_19[0][0]
==================================================================================================
损失函数

def dice_loss_v2(y_true,y_pred):
分子=2*tf.减少总和(y_真*y_pred,轴=(1,2,3))
分母=tf.减少总和(y_真+y_pred,轴=(1,2,3))
返回1-分子/分母
激活

model.compile(优化器='adam',
损失=骰子损失v2,
指标=[“准确度”,iou损失(核心])
预定义的学习率为LR=0.001

额外信息:

datagen=ImageDataGenerator(
旋转范围=10,
宽度\偏移\范围=0.1,
高度位移范围=0.1,
缩放(范围=0.1)
数据发生器安装(X_系列)
模型拟合发生器(数据生成流(X列,y列,批量大小=100),每历元步长=len(X列),
epochs=4,验证\数据=(X \ u检验,y \ u检验)

可能的原因之一是你的面具。可能是将背景视为遮罩中的目标对象。这就是为什么它正在学习检测0(黑色)的背景。检查你的面具。我遇到了同样的问题,然后我检查了我的面具。我猜不是。你可以看到,上面是输入,第二个是输入的掩码,预测是这样的…你可以这样做:为了改善结果,你可以做以下事情:1)使用相册进行数据扩充2)创建自己的自定义数据集并添加预处理(标准化/标准化图像)加快收敛速度。3) 将焦点损失用于此背景-前景不平衡。4) 使用预训练编码器。我认为你是在增加你的输入,而不是你的掩码,可能会有所帮助