def get_current_visuals(self):
        real_A = util.tensor2im(self.input_A)
        fake_B = util.tensor2im(self.fake_B)
        rec_A = util.tensor2im(self.rec_A)
        real_B = util.tensor2im(self.input_B)
        fake_A = util.tensor2im(self.fake_A)
        rec_B = util.tensor2im(self.rec_B)
        real_Ay=util.tensor2im_hd_neck(self.input_A_y)

        fake_B_local=util.tensor2im(self.fake_B_local)
        real_B_local=util.tensor2im(self.real_B)
        
        #Attention map for Real MRI
        att_real_B=util.tensor2im(self.att_map_real_B_struct)
        #Segmentation probability map for pseudoMRI
        att_fake_B=util.tensor2im(self.att_map_fake_B_struct)

        if self.opt.Net=='Split-Unet':
            pred_B=self.netSeg.forward_1(self.real_B)
            
            
            
        else:
            pred_B=self.netSeg(self.real_B)




         
        pred_B=torch.argmax(pred_B, dim=1)
        
        

        pred_B=pred_B.view(1,1,256,256)        


        pred_B=pred_B.data
        


        seg_B=util.tensor2im_hd_neck(pred_B)#() #
    
        
        ret_visuals = OrderedDict([('real_A', real_A), ('fake_B', fake_B), ('rec_A', rec_A),
                                   ('real_B', real_B), ('fake_A', fake_A), ('rec_B', rec_B),
                                   ('real_B_seg', seg_B),
                                   ('real_A_GT_seg',real_Ay),
                                   ])
        
        return ret_visuals
Example #2
0
    def get_current_visuals(self):
        real_A = util.tensor2im(self.input_A)

        real_Ay = util.tensor2im_hd_neck(self.input_A_y)

        pred_A = self.netSeg_A(self.input_A)
        pred_A = torch.argmax(pred_A, dim=1)
        pred_A = pred_A.view(self.input_A.size()[0], 1, 256, 256)
        pred_A = pred_A.data
        seg_A = util.tensor2im_hd_neck(pred_A)  #

        ret_visuals = OrderedDict([('real_A', real_A),
                                   ('real_A_GT_seg', real_Ay),
                                   ('real_A_seg', seg_A)])

        return ret_visuals
Example #3
0
    def get_current_visuals(self):
        real_A = util.tensor2im(self.input_A)
        #fake_B = util.tensor2im(self.fake_B)
        #fake_B[fake_B>450]=450
        #rec_A = util.tensor2im(self.rec_A)
        #real_B = util.tensor2im(self.input_B)
        #fake_A = util.tensor2im(self.fake_A)
        #rec_B = util.tensor2im(self.rec_B)
        real_Ay = util.tensor2im_hd_neck(self.input_A_y)

        #real_A_AB_CT=torch.cat((self.real_A,self.fake_B),1)
        pred_A, _, rough = self.netSeg_A(self.input_A)
        pred_A = F.softmax(pred_A, dim=1)
        rough = F.softmax(rough, dim=1)
        LP_refine = pred_A[0, 1, :, :]
        LP_rough = rough[0, 1, :, :]

        LP_rough = LP_rough.view(-1, 1, 256, 256)
        LP_refine = LP_refine.view(-1, 1, 256, 256)
        LP_rough = LP_rough.data
        LP_refine = LP_refine.data

        LP_rough, d999 = self.tensor2im_jj(LP_rough)
        LP_refine, d999 = self.tensor2im_jj(LP_refine)

        pred_A = torch.argmax(pred_A, dim=1)
        pred_A = pred_A.view(self.input_A.size()[0], 1, 256, 256)
        pred_A = pred_A.data
        #global_map=global_map.data
        seg_A = util.tensor2im_hd_neck(pred_A)  #
        #global_map=util.tensor2im(global_map)

        #pred_B=self.netSeg_B(self.real_B)
        #fake_B_seg=self.netSeg_B(self.fake_B)
        #pred_B=pred_B.data
        #fake_B_seg=fake_B_seg.data
        #seg_B=util.tensor2im(pred_B) #
        #fake_B_seg=util.tensor2im(fake_B_seg) #
        ret_visuals = OrderedDict([('real_A', real_A),
                                   ('real_A_GT_seg', real_Ay),
                                   ('real_A_seg', seg_A),
                                   ('LP_rough', LP_rough),
                                   ('LP_refine', LP_refine)])
        #if self.opt.isTrain and self.opt.identity > 0.0:
        #    ret_visuals['idt_A'] = util.tensor2im(self.idt_A)
        #    ret_visuals['idt_B'] = util.tensor2im(self.idt_B)
        return ret_visuals
Example #4
0
    def net_G_A_A2B_Segtest_image_varian(self):
        self.test_A = self.test_A.cuda()
        self.test_AB = self.test_AB.cuda()
        self.test_A_y = self.test_A_y.cuda()
        #self.test_AB=self.netG_A(self.test_A)
        test_img = self.test_A
        #test_img=torch.cat((self.test_A,self.test_AB),1)
        #print (self.test_A.size())
        #print (self.test_AB.size())
        #print (test_img.size())
        test_img = test_img.float()
        A_AB_seg = self.netSeg_A(test_img)
        #A_AB_seg=F.softmax(A_AB_seg,dim=1)
        loss = self.dice_loss(A_AB_seg, self.test_A_y)
        #print (A_AB_seg.size())

        A_AB_seg = F.softmax(A_AB_seg, dim=1)

        LP_map = A_AB_seg[:, 1, :, :]
        RP_map = A_AB_seg[:, 2, :, :]
        LS_map = A_AB_seg[:, 3, :, :]
        RS_map = A_AB_seg[:, 4, :, :]
        LBP_map = A_AB_seg[:, 5, :, :]
        RBP_map = A_AB_seg[:, 6, :, :]
        Sub_map = A_AB_seg[:, 7, :, :]
        Spine_map = A_AB_seg[:, 8, :, :]

        RP_map = RP_map.view(1, 1, 256, 256)
        LP_map = LP_map.view(1, 1, 256, 256)
        LS_map = LS_map.view(1, 1, 256, 256)
        RS_map = RS_map.view(1, 1, 256, 256)
        Sub_map = Sub_map.view(1, 1, 256, 256)
        LBP_map = LBP_map.view(1, 1, 256, 256)
        RBP_map = RBP_map.view(1, 1, 256, 256)
        Spine_map = Spine_map.view(1, 1, 256, 256)

        RP_map = RP_map.data
        LP_map = LP_map.data
        LS_map = LS_map.data
        RS_map = RS_map.data
        Sub_map = Sub_map.data
        LBP_map = LBP_map.data
        RBP_map = RBP_map.data
        Spine_map = Spine_map.data

        RP_map_tp = RP_map
        RP_map_tp = RP_map_tp + LP_map
        RP_map_tp = RP_map_tp + LS_map
        RP_map_tp = RP_map_tp + RS_map
        RP_map_tp = RP_map_tp + Sub_map
        RP_map_tp = RP_map_tp + LBP_map
        RP_map_tp = RP_map_tp + RBP_map
        RP_map_tp = RP_map_tp + Spine_map

        d0, d1, d2, d3, d4, d5, d6, d7, d8 = self.cal_dice_loss_PDDA_val(
            A_AB_seg, self.test_A_y)

        A_AB_seg = torch.argmax(A_AB_seg, dim=1)
        A_AB_seg = A_AB_seg.view(1, 1, 256, 256)
        A_AB_seg_out = A_AB_seg.data
        #print (A_AB_seg_out.size())
        #A_AB_seg_out=torch.argmax(A_AB_seg_out, dim=1)
        A_AB_seg_out = A_AB_seg_out.view(1, 1, 256, 256)
        #print (A_AB_seg_out.size())
        A_y_out = self.test_A_y.data
        self.test_A_y = self.test_A_y.cuda()

        test_A_data = self.test_A.data
        #test_AB=self.test_AB.data
        A_AB_seg = A_AB_seg.data
        A_y = self.test_A_y.data
        test_A_data, d999 = self.tensor2im_jj(test_A_data)
        LP_map_data, d999 = self.tensor2im_jj(LP_map)
        RP_map_data, d999 = self.tensor2im_jj(RP_map)
        RP_map_tp_data, d999 = self.tensor2im_jj(RP_map_tp)
        #test_AB,d2=self.tensor2im_jj(test_AB)
        A_AB_seg = util.tensor2im_hd_neck(A_AB_seg)
        A_y = util.tensor2im_hd_neck(A_y)
        #print (test_A_data.shape)
        #print (test_AB.shape)
        #print (A_AB_seg.shape)

        test_A_data = test_A_data[:, 256:512, :]
        LP_map_data = LP_map_data[:, 256:512, :]
        RP_map_data = RP_map_data[:, 256:512, :]
        RP_map_tp_data = RP_map_tp_data[:, 256:512, :]
        #test_AB=test_AB[:,256:512,:]
        A_AB_seg = A_AB_seg  #[:,256:512,:]
        A_y = A_y  #[:,256:512,:]

        #test_A_data=test_A_data[:,512:1024,:]
        #test_AB=test_AB[:,512:1024,:]
        #A_AB_seg=A_AB_seg[:,512:1024,:]
        #A_y=A_y[:,512:1024,:]

        image_numpy_all = np.concatenate((
            test_A_data,
            A_y,
        ), axis=1)
        #image_numpy_all=np.concatenate((image_numpy_all,A_y,),axis=1)
        image_numpy_all = np.concatenate((
            image_numpy_all,
            A_AB_seg,
        ), axis=1)
        #image_numpy_all=np.concatenate((image_numpy_all,LP_map_data,),axis=1)
        #RP_map_data=RP_map_data+LP_map_data
        image_numpy_all = np.concatenate((
            image_numpy_all,
            RP_map_tp_data,
        ),
                                         axis=1)
        #self.fake_A2B=self.fake_A2B.data
        #self.fake_A2B_A_img, output_fakeA2B=self.tensor2im_jj(self.fake_A2B)
        #print (loss)
        return loss, self.test_A.cpu().float().numpy(), A_AB_seg_out.cpu(
        ).float().numpy(), A_y_out.cpu().float().numpy(
        ), image_numpy_all, d0, d1, d2, d3, d4, d5, d6, d7, d8, LP_map.cpu(
        ).float().numpy(), RP_map.cpu().float().numpy(), LS_map.cpu().float(
        ).numpy(), RS_map.cpu().float().numpy(), Sub_map.cpu().float().numpy(
        ), RP_map_tp.cpu().float().numpy()
Example #5
0
    def net_G_A_A2B_Segtest_image(self):
        self.test_A = self.test_A.cuda()
        self.test_AB = self.test_AB.cuda()
        self.test_A_y = self.test_A_y.cuda()
        #self.test_AB=self.netG_A(self.test_A)
        test_img = self.test_A
        #test_img=torch.cat((self.test_A,self.test_AB),1)
        #print (self.test_A.size())
        #print (self.test_AB.size())
        #print (test_img.size())
        test_img = test_img.float()
        A_AB_seg, _, global_map = self.netSeg_A(test_img)
        #A_AB_seg=F.softmax(A_AB_seg,dim=1)
        loss = self.dice_loss(A_AB_seg, self.test_A_y)
        #print (A_AB_seg.size())

        A_AB_seg = F.softmax(A_AB_seg, dim=1)

        LP_map = A_AB_seg[:, 1, :, :]
        RP_map = A_AB_seg[:, 2, :, :]
        RP_map = RP_map.view(1, 1, 256, 256)
        LP_map = LP_map.view(1, 1, 256, 256)
        RP_map = RP_map.data
        LP_map = LP_map.data
        global_map = global_map.data

        A_AB_seg = torch.argmax(A_AB_seg, dim=1)
        A_AB_seg = A_AB_seg.view(1, 1, 256, 256)
        A_AB_seg_out = A_AB_seg.data
        #print (A_AB_seg_out.size())
        #A_AB_seg_out=torch.argmax(A_AB_seg_out, dim=1)
        A_AB_seg_out = A_AB_seg_out.view(1, 1, 256, 256)
        #print (A_AB_seg_out.size())
        A_y_out = self.test_A_y.data
        self.test_A_y = self.test_A_y.cuda()

        test_A_data = self.test_A.data
        #test_AB=self.test_AB.data
        A_AB_seg = A_AB_seg.data
        A_y = self.test_A_y.data
        test_A_data, d999 = self.tensor2im_jj(test_A_data)
        LP_map_data, d999 = self.tensor2im_jj(LP_map)
        RP_map_data, d999 = self.tensor2im_jj(RP_map)
        #global_map,d999=self.tensor2im_jj(global_map)
        #test_AB,d2=self.tensor2im_jj(test_AB)
        A_AB_seg = util.tensor2im_hd_neck(A_AB_seg)
        A_y = util.tensor2im_hd_neck(A_y)
        #print (test_A_data.shape)
        #print (test_AB.shape)
        #print (A_AB_seg.shape)

        test_A_data = test_A_data[:, 256:512, :]
        LP_map_data = LP_map_data[:, 256:512, :]
        RP_map_data = RP_map_data[:, 256:512, :]
        #global_map=global_map[:,256:512,:]
        #test_AB=test_AB[:,256:512,:]
        A_AB_seg = A_AB_seg  #[:,256:512,:]
        A_y = A_y  #[:,256:512,:]

        #test_A_data=test_A_data[:,512:1024,:]
        #test_AB=test_AB[:,512:1024,:]
        #A_AB_seg=A_AB_seg[:,512:1024,:]
        #A_y=A_y[:,512:1024,:]

        image_numpy_all = np.concatenate((
            test_A_data,
            A_y,
        ), axis=1)
        #image_numpy_all=np.concatenate((image_numpy_all,A_y,),axis=1)
        image_numpy_all = np.concatenate((
            image_numpy_all,
            A_AB_seg,
        ), axis=1)
        #image_numpy_all=np.concatenate((image_numpy_all,global_map,),axis=1)
        image_numpy_all = np.concatenate((
            image_numpy_all,
            LP_map_data,
        ),
                                         axis=1)
        image_numpy_all = np.concatenate((
            image_numpy_all,
            RP_map_data,
        ),
                                         axis=1)
        #self.fake_A2B=self.fake_A2B.data
        #self.fake_A2B_A_img, output_fakeA2B=self.tensor2im_jj(self.fake_A2B)
        #print (loss)
        return loss, self.test_A.cpu().float().numpy(), A_AB_seg_out.cpu(
        ).float().numpy(), A_y_out.cpu().float().numpy(), image_numpy_all
Example #6
0
    def net_G_A_A2B_Segtest_image(self):
        self.test_A = self.test_A.cuda()
        self.test_AB = self.test_AB.cuda()
        self.test_A_y = self.test_A_y.cuda()
        #self.test_AB=self.netG_A(self.test_A)
        test_img = self.test_A
        #test_img=torch.cat((self.test_A,self.test_AB),1)
        #print (self.test_A.size())
        #print (self.test_AB.size())
        #print (test_img.size())
        test_img = test_img.float()
        A_AB_seg = self.netSeg_A(test_img)
        #A_AB_seg=F.softmax(A_AB_seg,dim=1)
        #loss=self.dice_loss(A_AB_seg,self.test_A_y)
        loss = 0
        #print (A_AB_seg.size())

        A_AB_seg = F.softmax(A_AB_seg, dim=1)

        LP_map = A_AB_seg[:, 1, :, :]
        RP_map = A_AB_seg[:, 2, :, :]
        RP_map = RP_map.view(1, 1, 256, 256)
        LP_map = LP_map.view(1, 1, 256, 256)
        RP_map = RP_map.data
        LP_map = LP_map.data

        A_AB_seg = torch.argmax(A_AB_seg, dim=1)
        A_AB_seg = A_AB_seg.view(1, 1, 256, 256)
        A_AB_seg_out = A_AB_seg.data
        #print (A_AB_seg_out.size())
        #A_AB_seg_out=torch.argmax(A_AB_seg_out, dim=1)
        A_AB_seg_out = A_AB_seg_out.view(1, 1, 256, 256)
        #print (A_AB_seg_out.size())
        A_y_out = self.test_A_y.data
        self.test_A_y = self.test_A_y.cuda()

        test_A_data = self.test_A.data
        #test_AB=self.test_AB.data
        A_AB_seg = A_AB_seg.data
        A_y = self.test_A_y.data
        test_A_data, d999 = self.tensor2im_jj(test_A_data)

        #test_AB,d2=self.tensor2im_jj(test_AB)
        A_AB_seg = util.tensor2im_hd_neck(A_AB_seg)
        A_y = util.tensor2im_hd_neck(A_y)

        test_A_data = test_A_data[:, 256:512, :]

        #test_AB=test_AB[:,256:512,:]
        A_AB_seg = A_AB_seg  #[:,256:512,:]
        A_y = A_y  #[:,256:512,:]

        image_numpy_all = np.concatenate((
            test_A_data,
            A_y,
        ), axis=1)
        #image_numpy_all=np.concatenate((image_numpy_all,A_y,),axis=1)
        image_numpy_all = np.concatenate((
            image_numpy_all,
            A_AB_seg,
        ), axis=1)

        return loss, self.test_A.cpu().float().numpy(), A_AB_seg_out.cpu(
        ).float().numpy(), A_y_out.cpu().float().numpy(), image_numpy_all