我正在开发一个U型网络模型,它可以在多发性硬化症患者的两个时间点之间分割受损的大脑组织。该模型以基线图像和后续图像为x,分割模板为y。图像是3D的(192218192),模型输入大小是(128128128),并且正在通过骰子丢失进行训练。该模型基于本文:https://www.sciencedirect.com/science/article/abs/pii/S0895611120300732
我目前正在做的是在训练前对每个图像进行中心裁剪,训练骰子分数似乎学习得很好,但在验证数据中却不是这样
我已经读到随机裁剪10次左右有助于减少过度拟合,但我不知道如何实现它。我编写了这个函数来进行随机裁剪:
def random_crop(img_bl, img_fu, mask, width=128, height=128, depth=128):
x = random.randint(0, img_bl.shape[1] - width)
y = random.randint(0, img_bl.shape[0] - height)
z = random.randint(0, img_bl.shape[2] - depth)
img_bl = img_bl[y:y + height, x:x + width, z:z + depth]
img_fu = img_fu[y:y + height, x:x + width, z:z + depth]
mask = mask[y:y + height, x:x + width, z:z + depth]
return img_bl, img_fu, mask
在对每个图像进行培训之前,我是否只应用此功能10次?或者,有没有办法将随机裁剪包含在模型中,并与这10个子卷的预测重叠
您可以通过
tf.image.random_crop
函数在Tensorflow中裁剪图像若要裁剪案例中的三维模型,还可以设置通道参数
要将此裁剪完美地应用于输入管道,可以使用
tf.keras.layers.Lambda
映射此函数相关问题 更多 >
编程相关推荐