xucong-zhang / ETH-XGaze

Official implementation of ETH-XGaze dataset baseline
185 stars 33 forks source link

about the normalized gaze #26

Open Phil-Lin opened 1 year ago

Phil-Lin commented 1 year ago

I find the normalized gaze is computed by gc_normalized = np.dot(R, gc_src) in normalization_example.py. Does it means that when I test model trained by ETH-Xgaze in MPIIFace, the normalized gaze of MPIIFace should be computed by the same way?? Because the normalized gaze is always computed by gc_normalized = np.dot(M, gc_src) in MPIIFace.

xucong-zhang commented 1 year ago

Hi,

That is a very interesting question.

The short answer is yes, you should always use gc_normalized = np.dot(R, gc_src) for all data processing.

The long answer is here: We initially used the gc_normalized = np.dot(M, gc_src) for the MPIIGaze dataset, and later we found that we should not apply the scale matrix to the gaze label so we published the ETRA 2018 paper to clarify it. Briefly, the scale matrix can make the range of gaze label becomes larger or smaller depending on the parameters, which does not reflect the true gaze distribution. At that time, due to the fact that it had been a while since we published the MPIIGaze dataset, we did not update the normalized data on the website. Fortunately, we had the chance and we updated the MPIIFaceGaze normalized data on the website with the new modified data normalization, i.e. gc_normalized = np.dot(R, gc_src). After that chaos, all of our works used the new modified data normalization whenever we evaluated the method on any datasets.

In principle, you are free to do any data normalization you want, as long as you clearly state what operation you have done, and that all comparisons are done with the same operation.

I hope this information is helpful to you.

Best regards, Xucong