-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot reproduce MPJPE results in Table 4 #5
Comments
I meet the same problem. @enrico-c @tobidelbruck I am not familiar with Keras, so I did not load the '*.model' file provided by authors. But I used the Stacked Hourglass Networks, which I think is more advanced than authors' model, to reproduce results in Tables 4. When testing on data from Camera 2, the MPJPE is around 36 that is much higher than the reported 7.72. I nearly give up working on this dataset. The authors already achieved good results that I cannot surpass. |
Hi ShallowWill, I tried different Networks as well. The best-performed ones have the MPJPE around 35 ish. I draw the outputs on the images, they look similar to the benchmark outputs as well. I think it's highly possible that we calculate the MPJPE differently than the authors. |
Hi, I would not expect a CNN trained on RGB frames to perform well on DVS frames without any fine tuning |
@enrico-c Thank you for your reply. Following is the code for calculating the MPJPE. The MPJPE I get is 30.84.
|
Hi, @victkid , is paired_distances() function embedded in the '.model' file? how do you define this function? Could you please give some code about this function? |
Hi @ShallowWill, sorry for the confusion. paired_distances() is a function provided from sklearn. You can import it by using |
Hi, I cannot run the code as it is, because I don't have your .npy arrays. But I tried your code on one of the .h5 files and I obtained the same result as with my own code. Also, the results I obtained from the repo for all the samples are in line with the results in table 4 (*)(see bottom). So I think the issue is in the way the .npy arrays are created. These are the things I would suggest:
If you provide a complete example to run on one of the .h5 generated files (frames + 3D labels) I can have a closer look at your code. (*): There is actually a main difference in the code in the repo and the one used to generate the numbers in table 4, that is, in the background filter I had included the central pixel. This in general is not wanted, it is a mistake I made and I am committing a fix for it. |
Hi @enrico-c , I have the same problem as @victkid 's. I made a sample python program to reproduce the result. I tried it on the keras model file DHP_CNN.model provided using S12_session5_mov4_7500events for test. Please see the codes below. ` def mse2D(y_true, y_pred): def compute_error(images, labels, model): model=load_model('DHP_CNN.model', custom_objects={'mse2D': mse2D}) Thank you very much. |
Hi @WillCheung2016 ,
I do not have these files, so I cannot run your code. |
Hi @enrico-c , Apologies. I forgot to attach the .npy files. Please find them here in the zip file. I just read data from .h5 files and saved them as .npy files. Could you run the model you provided on the data and compute the error with your error metrics? If you end up with the same number so I know that the way I computed errors was consistent with yours. Thanks a lot. |
Hi @WillCheung2016 , thanks for clarifying, I tried and I get a similar result. |
Hi @enrico-c , Thank you very much for confirmation. I repeated the experiment using the keras model downloaded from the repo on the data files generated by the matlab scripts. The groundtruth joint locations were computed by the codes in the ipython notebook for heatmap generation. This time I used the data from camera 3. The top one shows the joint predictions of the model, and the one below shows the groundtruth joint locations. The MPJPE error is 16.035, which is much better than the previous number, but still relatively large. I attach the h5 files here. Also, I have a question about the CNN model architecture. Below is the architecture of the keras model in the repo: `
|
Hi @enrico-c , Hope you are doing well. Currently I am writing a paper that will cite your cvpr paper and would like to use the DHP19 dataset you proposed. I hope to make fair comparison between the model you have and the model we are proposing. Your clarification of the model architecture and the performance metrics will be very appreciated. Look forward to your reply. |
Hi @WillCheung2016 , The results reported in Table 4 are calculated as the average of all frames in all recordings of the 5 test subjects. It would be great if you could verify the total averages on your side. Also, please make sure to pull the latest version of the repo, for proper behavior of the background filter. As a note, session5_mov4 is "Circle right hand" with only one moving limb. Static limbs are known to be an issue in the current implementation, particularly for instantaneous predictions. About the architecture: in Table 3, with layer we refer to Conv + ReLU + (if present) max pooling. E.g., layer 1 is composed of Conv+ReLU+pooling. Hope this clarifies the question. |
Hi, all, did anybody successfully reproduce the results from the paper yet? |
Hi @enrico-c , it looks like my evaluation has implemented correctly. But I still couldn't reproduce your results. Could you provide one of your |
Hi @victkid , Thanks for your comment. Could you please be more specific, what do you mean by "it looks like my evaluation has implemented correctly"? |
Sorry for the confusion. I mean if you could provide one of your |
Hi @victkid , please excuse my late reply. The .h5 files generated from the repo are what you need. Could you generate the files with Matlab? About the evaluation code, I just uploaded a notebook for 2D evaluation, as well as triangulation and 3D evaluation, for a single frame: |
Hi @enrico-c, Thank you very much for your help. And the ipython notebook was very helpful. However, I still have one question. How did you calculate the MPJPE for all the h5 files in table 4. Did you calculate the MPJPE error for each frame of a file, sum them up, and finally divide it by the total number of frames? Or you simply calculated the MPJPE for each h5 file, sum them up, and finally divide it by the total number of h5 files? Or some other methods? Thank you. |
Hi @enrico-c @ShallowWill @victkid @WillCheung2016 , |
Hi @ruitaoleng ! |
Hi,
I'm trying to calculate the MPJPE for camera 2 with none confidence threshold. In the paper, the MPJPE for camera 2 is 7.72, but I got a number around 33. Followings are my approach, please guide where I did it wrong.
Step 1, use inner linear interpolation method to reshape test images from
260x346
to260x344
Step 2, load nn weights from
DHP_CNN.model
Step 3, generate prediction outputs from test image set. The outputs have the shape
(n_samples, 260, 344, n_joints)
.Step 4, inner linear interpolation method to reshape the prediction outputs to
(n_samples, 260, 346, n_joints)
to match with the ground truth data.Step 5, calculate the pairwise wise euclidean distance for each joint and each sample and then take the average.
The text was updated successfully, but these errors were encountered: