Los datos Dicom capacitación no por pytorch

0

Pregunta

Tengo un problema acerca de la capacitación de la Pytorch modelos. Estoy intentando entrenar a mi Pytorch modelo de uso de datos dicom y nifti GT sin Embargo, el tamaño del peso de archivo es ridículamente pequeño, debido a que el modelo de formación no se realiza normalmente.

He utilizado el modelo de la red Unet++

Creo que hay un problema con el cargador de datos. Pero no puedo fixe es...

Agradecería si me pudieran ayudar.

Archivo de imagen Raw formato dicom y GT formato de la imagen es nifti

en mi 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

y Código de Tren es

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

Mejor respuesta

1

Dependiendo de qué modalidad de sus imágenes, esto podría ser debido a la no conversión de los datos de la imagen en la correcta, clínicamente relevante, la máquina/proveedor independiente, unidades antes de cualquier ML de formación 0-1 normalización.

Normalmente en los archivos dicom, los reales valores de datos sin procesar no se que - que necesitan de procesamiento de...

Por ejemplo, si usted está tratando de tren en la TC de datos, entonces las unidades debe estar tratando de entrenar a su modelo son Houndsfield del (HU) los números. (En google en que, CT y dicom para obtener algunos de los antecedentes).

Sin embargo raw CT dicom de datos podría ser poco o big endian, es probable que necesita una pendiente/interceptar corrección aplicada y también podría tener look up tables aplicado a convertir en HU números. ...es decir, puede ser más complicado y desordenado. (de nuevo, hacer un poco de búsqueda en google ...al menos debería tener un poco de fondo en esto, si usted está tratando de hacer algo con médicos formatos de imagen).

No estoy seguro de cómo el proceso de nifti de datos, sin embargo, por suerte para los archivos dicom mediante pydicom esta conversión puede ser hecho por la biblioteca, el uso de (normalmente) una llamada a 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

En otros idiomas

Esta página está en otros idiomas

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