Dicom data školení zklamal pytorch

0

Otázka

Mám problém, o školení Pytorch modely. Snažím se trénovat své Pytorch modelu pomocí dicom dat a nifti GT Však velikost hmotnost souboru je směšně malý, protože model trénink se neprovádí běžně.

Použil jsem model sítě Unet++

Myslím, že tam je problém s data loader. Ale nemůžu fixe...

Ocenil bych, pokud byste mi mohl pomoci.

Raw je formát souboru dicom a GT obraz formátu nifti

v mém 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

a Vlak je Kód

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

Nejlepší odpověď

1

V závislosti na tom, co modality obrázky jsou, to by mohlo být způsobeno ne konverze obrazových dat do správné, klinicky relevantní, stroj/dodavatele nezávislé, jednotek před jakýmkoliv ML školení 0-1 normalizace.

Typicky v dicom soubory, skutečné raw data hodnoty nejsou , že potřebují zpracování...

Například, pokud se snažíte trénovat na CT data, pak jednotky byste měli být se snaží trénovat svůj model na jsou Houndsfield (HU) čísla. (Google, CT a dicom získat nějaké pozadí).

Nicméně syrové CT dicom data mohla být malá nebo velká endian, pravděpodobně potřebuje svahu/intercept opravami a také by měla mít se podívat nahoru tabulkách aplikuje převést do HU čísla. ...ie může dostat komplikované a chaotický. (zase trochu googling ...aspoň měl trochu v pozadí, když se snažíte udělat něco s lékařské obrazové formáty).

Nejsem si jistý, jak proces nifti dat, nicméně naštěstí pro dicom souborů pomocí pydicom tato konverze může být provedeno, pro vás knihovna, pomocí (obvykle) volání 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

V jiných jazycích

Tato stránka je v jiných jazycích

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