mingyuliutw / UNIT

Unsupervised Image-to-Image Translation
Other
1.98k stars 360 forks source link

How do I calculate Classification Confidence for Attribute-based Face Images Translation? #64

Closed basilzeno closed 6 years ago

basilzeno commented 6 years ago

Hi, mingyu,

I am training the model on 5 different attributes from celeba, but on testing i want to export classification accuracy from the discriminator to know if the translated image is classified properly to the target domain or not! How can i got this classification score?

I made the following changes, are they right? In cocogan_net.py, I added these lines to class COCOSharedDis:

  def forward_b2a(self, x_A):
    print(self.model_A(x_A))  
    out_A = self.model_S(self.model_A(x_A)) 
    out_A = out_A.view(-1)
    print("out_A",out_A)    
    outs_A = []
    outs_A.append(out_A)
    return outs_A

  def forward_a2b(self, x_B):
    out_B = self.model_S(self.model_B(x_B))
    out_B = out_B.view(-1)
    print("out_B",out_B)
    outs_B = []
    outs_B.append(out_B)
    return outs_B

In cocogan_translate_one_image, i edited these lines

if opts.a2b == 1:
    output_data,_ = trainer.gen.forward_a2b(final_data)
  else:
    output_data,_ = trainer.gen.forward_b2a(final_data)

And I added these lines:

  data_a = torch.cat((final_data, output_data), 3)
  if opts.a2b == 1:
    output_d = trainer.dis.forward_a2b(data_a)
  else:
    output_d = trainer.dis.forward_b2a(data_a)
  for it, (this_a) in enumerate(output_d):
     out_a = nn.functional.sigmoid(this_a)  
     out_input_a, out_translated_a = torch.split(out_a, out_a.size(0) // 2, 0)

out_translated_a is a [torch.cuda.FloatTensor of size 4 (GPU 0)], what do these four values mean? how can i got one value from them?

Sorry for my bad English. Thanks in advance