Question on semi-supervised training #165
Comments
Hi, sorry for the late answer.
|
Line 369 in 1afb1ca
The line should be here but occurs several times for semi-loss. |
The combination of semi-supervision + causal model has never been tested/evaluated, but I briefly checked the code and I think you are right! Your proposed change should work. |
Great. No other question. Thanks for sharing the great work! |
I have some questions on the semi-supervised training.
(1)When I am training from coco 2d to h36m 3d(use detectron_pt_coco as 2d input), it seems that the order of 17 joints of two skeletons are different. But in the code, after projecting the h36m 3d-points back onto the image, it seems that you directly use
reconstruction_semi = projection_func(predicted_semi + predicted_traj_cat[split_idx:], cam_semi);
loss_reconstruction = mpjpe(reconstruction_semi, target_semi)
to calculate the 2d loss.
Seems that target_semi has not been transformed such that the different orders can be matched. Is here a bug, or do I miss something?
(2) I use the traj model you provided in #145 , and I found its trajectory and 3d pose are relatively good to provide a close 2d reprojection. But I am not sure how did you train it. Did you train with -subject-train with all 5 person, or just some of them for -subject-train and some for -subject-unlabelled? Also I found that we can actually train the trajectory only supervised on -subject-train by setting -warmup as -epoch. Do you train with only supervised trajectory, or also use -subject-unlabeled together in the progress? Which could be better if we want the trajectory and reprojection to be better? Also at the end, which level of traj_valid loss and 2d_valid did you get?
(3) Does the batchsize have a big impact on the semi-supervised training? I see you set -b 64 in the instruction, but in supervised by default it should be 1024.
(4) For the 2d input in semi-supervised training, I found that you use
target = inputs_2d_cat[:split_idx, pad:-pad, :, :2].contiguous()
ifpad>0
to reduce the input shape to the output 1 frame result. But is here a bug since causal_shift also affects which frame to match. Should it betarget = inputs_2d_cat[:split_idx, pad+causal_shift:, :, :2].contiguous()
in causal model?Thanks so much for your help.
The text was updated successfully, but these errors were encountered: