Dicom ข้อมูลล้มเหลวในการฝึกโดย pytorch

0

คำถาม

ฉันมีปัญหาเกี่ยวกับฝึกค Pytorch กับพวกนางแบบ ฉันพยายามให้รถไฟของฉัน Pytorch นางแบบการใช้ dicom ข้อมูลและ nifti GT อย่างไรก็ตามขนาดของน้ำหนักแฟ้มไร้สาระอย่างเล็กน้อยเพราะนางแบบการฝึกซ้อมองไม่แสดงเหมือนคนทั่วไปแล้ว

ฉันใช้เครือข่ายรุ่น Unet++

ฉันคิดว่ามีปัญหากับข้อมูลวโหลด. แต่ฉันไม่สามารถ fixe มัน...

ฉันจะซาบซึ้งมากถ้าคุณสามารถช่วยผมด้วย

แบบ Raw ของแฟ้มภาพรูปแบบคือ dicom และ 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

ขึ้นอยู่กับสิ่งที่ modality ภาพต่างๆของคุณอยู่นี่อาจจะเป็นวันไม่ใช่การแปลงข้อมูลภาพเป็นข้อมูลไปที่ถูกต้อง เต็มขั้ relevent,เครื่อง/ผู้จำหน่ายเป็นอิสระ,หน่วยก่อนที่จะมีตัวเลขการฝึก 0-1 normalization.

ปกติแล้วใน dicom แฟ้มที่แท้จริงข้อมูลค่าของ ไม่ได้ นั่น-พวกเขาต้องการกำลังประมวลผล...

อย่างเช่นถ้าคุณกำลังพยายามให้รถไฟใน CT ข้อมูลนั้นหน่วยคุณควรจะพยายามให้รถไฟของคุณเดินแบบพวกมันกำลัง Houndsfield น(มหาวิทยาลัยฮาร์เวิร์ด)ตัวเลข. (ทำอย่างเป็นของกูเกิ้ลเรื่องนั้นผมทำซีทีและ dicom ต้องมีเบื้องหลัง).

ยังไงก็ตาแบบ raw CT dicom ข้อมูลอาจจะเป็นหนูน้อยหมวกหรือใหญ่ endian คงต้องการเป็นอี/ขัดขวางการเชื่อมต่อล้มเหลแล้วก็อาจต้องมองตารางข้อมูลเรียบร้อยแล้วสมัครที่จะแปลงมันในมหาวิทยาลัยฮาร์เวิร์ดเลขเลย ...ie ได้ค่อนข้างซับซ้อนและยุ่งยาก (อีกครั้งทำนิดหน่อยเซิร์ทกูเกิ้ลได้แล้วฉันเจอ...คุณอย่างน้อยก็ควรจะเป็นของพื้นหลังกับเรื่องพวกนี้เลยถ้าคุณกำลังพยายามจะทำอะไรกับทางการแพทย์ของภาพรูปแบบ).

ฉันไม่แน่ใจว่าวิธีการ nifti ข้อมูลอย่างไรก็ตามโชคดีสำหรับ dicom แฟ้มโดยใช้ 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ý
..................................................................................................................