मैं एक समस्या के बारे में प्रशिक्षण के Pytorch मॉडल है । मैं कोशिश कर रहा हूँ को प्रशिक्षित करने के लिए मेरे Pytorch मॉडल का उपयोग कर dicom डेटा और nifti GT हालांकि, वजन के आकार के फ़ाइल हास्यास्पद छोटा है, क्योंकि मॉडल प्रशिक्षण नहीं है सामान्य रूप से प्रदर्शन किया.
मैं प्रयोग किया जाता नेटवर्क मॉडल Unet++
मुझे लगता है कि वहाँ एक समस्या है डेटा के साथ लोडर. लेकिन मैं नहीं कर सकता fixe यह...
मैं इसकी सराहना करता हूँ अगर आप मेरी मदद कर सकता है.
कच्चे छवि फ़ाइल स्वरूप है dicom और जीटी छवि प्रारूप है 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()