示例#1
0
    def forward(self, y, true, it, writer=None):
        n = self.sizes[0]
        y_current = nn.functional.interpolate(y, self.proj_shapes[0], mode='area')
        current = self.init_op(y_current)
        curs = []
        grads = []
        fbpys = []
        for i in range(len(self.sizes)):
            n = self.sizes[i]
            proj_shape = self.proj_shapes[i]
            if i < len(self.sizes)-1:
                y_current = nn.functional.interpolate(y, proj_shape, mode='area')
            else:
                y_current = y
                
            if i < 10:
                current = nn.functional.interpolate(current, (n, n), mode='bilinear')
                 
                iteration = getattr(self, 'iteration_{}'.format(i))
                current = iteration(current,curs,grads,fbpys, y_current,i)
                
                
                curs.append(current)
                
            else:
                
                
                current = nn.functional.interpolate(current, (n, n), mode='bilinear')
                iteration = getattr(self, 'iteration_{}'.format(i))
                current = iteration(current,curs,grads,fbpys, y_current,i)
                
            if writer:
                util.summary_image(writer, 'iteration_{}'.format(i), current, it)

        return current,  self.loss(current, true)
示例#2
0
def summaries(writer, result, fbp, true, loss, it, do_print=False):
    """Save and print training and validation data to tensorboard"""
    residual = result - true
    squared_error = residual**2
    mse = torch.mean(squared_error)
    maxval = torch.max(true) - torch.min(true)
    psnr = 20 * torch.log10(maxval) - 10 * torch.log10(mse)
    # ratio of mse to fbp mse
    relative = torch.mean((result - true)**2) / torch.mean((fbp - true)**2)
    ssi = ssim(result, true)
    ssi_fbp = ssim(fbp, true)
    # relative ssim
    relative_ssim = ssi / ssi_fbp
    if do_print:
        print(it, mse.item(), psnr.item(), relative.item(), ssi.item(),
              relative_ssim.item())

    writer.add_scalar('loss', loss, it)
    writer.add_scalar('psnr', psnr, it)
    writer.add_scalar('relative', relative, it)
    writer.add_scalar('ssim', ssi, it)
    writer.add_scalar('relative ssim', relative_ssim, it)

    util.summary_image(writer, 'result', result, it)
    util.summary_image(writer, 'true', true, it)
示例#3
0
 def forward(self, y, true, it, writer=None):
     current = self.init_op(y)
     
     for i in range(self.niter):
         iteration = getattr(self, 'iteration_{}'.format(i))
         current = iteration(current, y)
         
         if writer:
             util.summary_image(writer, 'iteration_{}'.format(i), current, it)
         
     return current, self.loss(current, true)
示例#4
0
def summaries(writer, result, fbp, true, loss, it, do_print=False):
    residual = result - true
    squared_error = residual ** 2
    mse = torch.mean(squared_error)
    maxval = torch.max(true) - torch.min(true)
    psnr = 20 * torch.log10(maxval) - 10 * torch.log10(mse)
      
    relative = torch.mean((result - true) ** 2) / torch.mean((fbp - true) ** 2)
   
    if do_print:
        print(it, mse.item(), psnr.item(), relative.item())

    writer.add_scalar('loss', loss, it)
    writer.add_scalar('psnr', psnr, it)
    writer.add_scalar('relative', relative, it)

    util.summary_image(writer, 'result', result, it)
    util.summary_image(writer, 'true', true, it)