Des données Dicom formation échoué par pytorch

0

La question

J'ai un problème à propos de la formation de la Pytorch modèles. J'essaie de former mon Pytorch modèle à l'aide des données dicom et nifti GT Toutefois, la taille le poids du fichier est ridiculement petite, parce que le modèle de la formation n'est pas exécutée normalement.

J'ai utilisé le modèle de réseau de Unet++

Je pense qu'il y a un problème avec le chargeur de données. Mais je ne peux pas fixe, il...

J'apprécierais si vous pouviez m'aider.

Raw image format de fichier dicom et GT format de l'image est nifti

dans mon 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

et à la Train de Code est

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

La meilleure réponse

1

Selon quelle modalité de vos images, ce qui pourrait éventuellement être en raison de ne pas convertir les données d'image dans le bon, cliniquement pertinents, la machine/fournisseur indépendant, parts avant tout ML de formation 0-1 normalisation.

Généralement dans les fichiers dicom, les données brutes réelles valeurs ne sont pas qu' - ils besoin de traitement...

Par exemple, si vous essayez de les former sur les données CT, puis les unités vous devriez essayer de former votre modèle sur sont Houndsfield de l' (HU) les numéros. (Google et sur ce, la TDM et l'dicom pour donner un peu de contexte).

Cependant cru CT des données dicom pourrait être little ou big endian, probablement besoin d'une pente/intercepter la correction appliquée et aussi pourrait avoir besoin d'avoir des tables de appliquées afin de le convertir en HU numéros. ...c'est à dire peut être complexe et désordonné. (encore une fois faire un peu de recherche sur google ...tu devrait au moins avoir un peu de fond sur cette si vous essayez de faire quelque chose avec l'image médicale formats).

Je ne suis pas sûr de savoir comment le processus de nifti données, mais heureusement pour les fichiers dicom à l'aide de pydicom cette conversion peut être faite pour vous par la bibliothèque, à l'aide de (généralement) un appel à 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

Dans d'autres langues

Cette page est dans d'autres langues

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