我正在尝试为分割任务实现 U-net 模型。任务是传递映射在冰川区域上的 5 个不同冰川的物理变量(如表面速度、厚度...),然后预测冰川形状。
因此,我的数据集由不同冰川的二维地图上的不同物理变量组成,存储在 numpy 数组中。我有 128 个冰川、12 年时间序列和 5 个变量,外加一个包含正确冰川蒙版的蒙版。因此,就像有 128125 张不同尺寸的图片(因为每个冰川的大小不同),涉及不同冰川上的不同变量。
第一个问题涉及图像的大小:根据我的理解,u-net 模型希望具有相同大小的图像。我认为一个可能的解决方案是调整所有地图的大小以具有标准(比方说 256x256),尽管这会修改问题的物理性质(小冰川重新缩放,反之亦然)。另一种可能性是将图像切成小块,但我想避免这种情况,因为我知道某些区域的物理现象会影响其他部分冰川的行为,并且这些信息将会丢失。
第二个问题是如何将数据传递给模型。假设每个图像的大小调整为 256x256(尽管正如我所说,我不确定这是最好的方法),则数据集的大小应为 (12812,256,256,5) 的特征和 (12812,256,256,1) 的大小目标?我应该如何将其转换为张量流?
非常感谢您的帮助,我对ccn的主题很陌生
对于大小问题,您可以将图像转换为补丁,这意味着从输入和输出中提取更小的补丁,例如 64x64。最后,您可以将补丁与整个分割图像进行协调。
使用您的原始数据集(不提取补丁),您的输入将是
(128x12x256x256x5)
,您的输出将是 (128x12x256x256x1)
。
但是,当将 input_shape 输入到输入层时,input_shape 应该为 (12, 256, 256, 5)
。
要处理此张量,您需要一个 3D ConvLSTM 层,如果数据格式为
(timesteps, height, width, channels)
,则该层接受 channels_last
输入。
如果提取补丁,数据总数及其高度和宽度将会改变。