Yang7879 / AttSets

🔥AttSets in Tensorflow (IJCV 2019)
https://doi.org/10.1007/s11263-019-01217-w
MIT License
55 stars 20 forks source link

the issue of single-view reconstruction and multi-view reconstruction #5

Open caixialiu-bjut opened 4 years ago

caixialiu-bjut commented 4 years ago

I am very inspired by your paper, but I have some questions to ask you.

1.For the experiment of single-view reconstruction : Category problem: do training set and testing set input per category? View problem: do training set and testing set input single-view which is random chose?

Similarly, For the experiment of multi-view reconstruction : Category problem: do training set input multiple categories? do testing set input multiple categories? View problem: do training set input 24 views? do testing set input multiple views (e.g., 1,2,3,...) ?

2.Could you provide the code of full testing? Does full testing mean to go through all the test set?

Yang7879 commented 4 years ago

Hi @caixialiu-bjut , thanks for your interest in our paper.

  1. For single-view reconstruction Category: All categories are randomly shuffled and trained together, i.e., for a single batch, there might be different categories. During testing, all categories are tested using the same trained model. View: During training, for each object, the view is randomly chosen. In testing, all individual views of an object will be tested separately. For example, there are 24 views for an object, we will test 24 times for that object.

For multi-view reconstruction: Category: Same as above. View: Correct.

  1. Yes, full testing means all images of each object of the total testing split will be used for testing, no matter single-view or multi-view experiments. The final scores are averaged.
caixialiu-bjut commented 4 years ago

Thank you for your answer. How do you judge the best result or best model? Is it by the loss? I see the code in main_AttSets.py:

testing

if i % 400 == 0 : X_rgb_batch, Y_vox_batch = data.load_X_Y_test_next_batch(test_mv=1) rec_loss_te, Y_vox_test_pred, att_pred, sum_test = self.sess.run([self.rec_loss, self.Y_pred,self.weights, self.sum_merged],feed_dict={self.X_rgb: X_rgb_batch, self.Y_vox: Y_vox_batch}) X_rgb_batch = X_rgb_batch.astype(np.float16) Y_vox_batch = Y_vox_batch.astype(np.float16) Y_vox_test_pred = Y_vox_test_pred.astype(np.float16) att_pred = att_pred.astype(np.float16) What is the function of the code? only see the middle results?

Yang7879 commented 4 years ago

hi @caixialiu-bjut, the above code is only for intermediate testing (i.e., to check the results from different training iterations). Since there is no validation split to select the best model, we usually obtain the best models for all different approaches by checking the results on the testing split.