我一直在研究我的论文(大脑语义分割&用基因组学的飞溅预测生存)。在处理成像部分时,我遵循了文献,并了解到,一些适当的方法去分割一个大脑是与Unet。我看到了用奇怪的方式制作数据集的2D和3D实现。因为这是我的论文,我不想直接抄袭别人的作品,所以我得自己做一些事情。我被困在一个特定的部分,我无法获得我的输入,以连接到网络。据我所知,网络需要一个2D图像(H,W),一个用于您试图在一起传递的图像数量的通道,以及另一个用于您试图分割的类数量的通道。在本例中,我从'18,'19,'20‘获取了BraTS数据集。从最初的数据集中,我解压缩了nifti文件,并使用NLM滤波和N4BiasFieldCorrection执行了两步预处理,然后跨Z轴将图像保存在2D切片中(这转换成每个模式(flair、t1、t1c、t2)获取自己包含155 png图像的文件夹。对于掩码,我只是将4个类编码为0、1、2、3,并将它们保存为Z轴上的2D pngs。
我使用以下代码创建自定义生成器。
import numpy as np
from skimage.io import imread
from keras.utils import to_categorical
def load_img(file_list):
images = []
for i in range(len(file_list)):
x = imread(file_list[i])
norm_img = (x - np.min(x)) / (np.max(x) - np.min(x))
images.append(norm_img)
images = np.array(images)
return (images)
def load_mask(file_list):
masks = []
for i in range(len(file_list)):
mask = imread(file_list[i])
enc_mask = to_categorical(mask, num_classes=4)
masks.append(enc_mask)
masks = np.array(masks)
return masks
def imageLoader(img_list, mask_list, batch_size):
L = len(img_list)
while True:
batch_start = 0
batch_end = batch_size
while batch_start < L:
limit = min(batch_end, L)
X = load_img(img_list[batch_start:limit])
Y = load_mask(mask_list[batch_start:limit])
yield (X, Y) # tuple
batch_start += batch_size
batch_end += batch_size'to_categorical‘步骤有一个问题,我认为这是因为每当它到达一个没有4个当前类的图像时,它就会崩溃。
我接触到的Unet架构是https://github.com/jordan-colman/DR-Unet104/blob/main/Dr_Unet104_model.py的一个稍微修改过的版本,我对它所做的修改就是改变它的输出,给我我想要的多通道语义掩码。
outputs = Conv2D(num_classes, (1, 1), name='output_layer', activation='softmax')(X)我对分割任务的想法,是使用这个Unet并训练其中的四个。每个模式(flair,t1,t1c,t2),然后冻结它们的重量,并将它们组合在一起。
Input 0 of layer "conv2d_106" is incompatible with the layer: expected min_ndim=4, found ndim=3. Full shape received: (None, None, None)
Call arguments received by layer "model_5" (type Functional):
• inputs=tf.Tensor(shape=(None, None, None), dtype=uint8)
• training=True
• mask=None我知道,它要求我交换我的输入,以适应它的输入,但我不确定如何进行。我一直试图用tensorflow.expand_dims()命令扩展图像2D输入的维数,结果没有结果。如有任何关于解决方案或阅读材料的建议,将不胜感激。
发布于 2022-08-04 10:22:19
我做了一些非常需要的阅读&在这方面做了一些工作,它起了作用:
mistakes)
。
最后,我发现要训练一个参数为74.6m的模型,需要大量的数据,所以我恳请您研究角点数据增强技术。我很确定我的模型在我让它运行的100个时期已经安装好了。
我会在出版后的某个时候回来,并发布一个链接,git,我会上传它,以防其他人发现自己在泡菜。
https://stackoverflow.com/questions/73177803
复制相似问题