Dicom data školenia zlyhala podľa pytorch

0

Otázka

Mám problém, o výcviku Pytorch modely. Snažím sa trénovať moje Pytorch modelu pomocou dicom data a nifti GT Však, veľkosť, hmotnosť súbor je smiešne malé, pretože model prípravy nie je vykonávané za normálnych okolností.

Použil som sieťový model Unet++

Myslím, že tam je problém s data loader. Ale nemôžem fixe to...

Ja by som ocenil, ak by ste mi mohol pomôcť.

Raw image file format je dicom a GT formát obrazu je nifti

v mojom 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 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

Najlepšiu odpoveď

1

V závislosti od toho, aký spôsob vaše obrázky sú, to by mohlo byť spôsobené nie konverzie obrazu údaje do správne, klinicky najvýznamnejších publikovaných, stroj/dodávateľ nezávislý, jednotky pred akýmkoľvek ML školenia 0-1 normalizácie.

Zvyčajne v dicom súborov, vlastný raw data hodnoty nie sú , že potrebujú spracovanie...

Napríklad, ak sa pokúšate vlaku na CT údaje, potom jednotky, mali by ste sa snaží, aby vlak váš model, sú Houndsfield to (HU) čísla. (Urobiť google na tom, CT a dicom získať nejaké pozadie).

Avšak surové CT dicom údaje by mohli byť malé alebo big endian, pravdepodobne potrebuje svahu/zachytiť opravu uplatniť, a tiež by bolo treba sa pozrieť do tabuliek aplikovať previesť do HU čísla. ...ie môžete získať zložité a chaotický. (opäť sa trochu googling ...ste aspoň mali mať trochu v pozadí na to, ak sa snažíte robiť niečo s zdravotníckych obrazové formáty).

Nie som si istý, ako na proces nifti údaje, avšak našťastie pre dicom súborov pomocou pydicom táto konverzia môže urobiť pre vás knižnice, pomocou (typicky) hovoru 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 iných jazykoch

Táto stránka je v iných jazykoch

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