物数据的培训未能通过pytorch

0

的问题

我有一个问题有关的培训的Pytorch模型。 我努力训练我的Pytorch模型使用的物数据和nifti GT然而,大量文件可笑的小小的,因为模型的培训不正常执行。

我使用网络模型Une++

我认为是有问题的数据加载程序。 但我不能还是传统,它...

我会非常感激如果你能帮助我。

原始图像文件的格式是物和GT像格式是nifti

在我dataloder

def __getitem__(self, index):
    image_path = self.image_paths[index]
    image_GT_path = image_path[:8]+'_'+image_path[8:12]+'.nii'
    GT_path = self.GT_paths + image_GT_path

    ds = dcmread(self.root+image_path)
    image = ds.pixel_array.astype(np.float32)
    image = torch.from_numpy(image.transpose(0,1)/255)
    image = image.unsqueeze(0)

    GT = nib.load(GT_path)
    GT = GT.get_fdata(dtype=np.float32)
    print(GT.shape)
    GT = torch.from_numpy(GT.transpose(0,1))
    GT = GT.unsqueeze(0)

    return image, GT, image_path

和火车码是

for epoch in range(self.num_epochs):

            self.unet.train(True)
            epoch_loss = 0
            for i, (images, GT,empty) in enumerate(tqdm(self.train_loader)):
                # GT : Ground Truth

                images = images.to(self.device)
                GT = GT.to(self.device)
                
                # SR : Segmentation Result
                SR = self.unet(images)
                SR_probs = torch.sigmoid(SR)

                SR_flat = SR_probs.view(SR_probs.size(0),-1)

                GT_flat = GT.view(GT.size(0),-1)
                loss =self.criterion(SR_flat,GT_flat)

                # self.criterion=DiceLoss() #BCE not use
                # loss = self.criterion(GT,SR_probs)
                epoch_loss += loss.item()
                train_losses.append(loss.item())
                # Backprop + optimize
                self.reset_grad()
                loss.backward()
                self.optimizer.step()
dataloader medical-imaging nifti pytorch
2021-11-24 06:40:12
1

最好的答案

1

根据什么模式你的图像,这可能是由于不将图像数据转换成正确的, 相关的临床、机器/供应商的独立的、单位之前的任何毫升的培训0-1正常化。

通常在物的文件,实际原始数据的价值 不是 的-他们需要处理...

例如,如果你想到火车上的CT数据,那么该单位的你应该试图火车模型上是 Houndsfield的(虎)号码. (做的一个谷歌上,CT和物得到一些背景)。

然而原CT物数据可能很少或big endian,可能需要一个斜坡/拦截修正适用,也可能需要有看表加以将其转换成胡数字。 ...即可以获得复杂化和混乱。 (再次做点搜索...你至少应该有一点背景,在这个如果你想到做什么与医学图像的格式)。

我不知道该如何来处理nifti数据,但是幸运的物件文件使用pydicom这种转化可以为你做的图书馆,使用(通常)呼叫 pydicom.pixel_data_handlers.util.apply_modality_lut:


dcm = pydicom.dcmread(my_ct_dicom_file)
data_in_HU = pydicom.pixel_data_handlers.util.apply_voi_lut(
    dcm.pixel_array,
    dcm
)
2021-11-26 19:55:55

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................