umariqb/PoseTrack-CVPR2017

solver crashes

nicolocarissimi opened this issue · 5 comments

Hi iqbalu,

I was trying your tracker on some frames from the Salsa dataset, but unfortunately the solver crashes. Do you have any suggestion on how to make it work? Some parameters that I can tune?
Here are some more info:

  • number of frames I was testing on is 50
  • I'm using the same parameters of your demo (also tried to reduce the number of frames distance from 3 to 2)
  • my machine has 32 GB of ram.

Thanks for your help.

Hi nicolocarissimi,
I think the RAM is the issue. Sometimes solver requires a lot of memory. We were using a computer with 256 GB of RAM.
One way is to reduce the window size so the graph's size is not very big.
Another possible way is to use lazy constraints, where not all constraints are enforced during optimization, but only violating constraints are added. This, however, will increase the runtime drastically.

Thanks Iqbalu,

after some trial and error, increasing the ram to 64GB and reducing the time window to only 5 frames, I made the tracker work on the salsa dataset.
I must say that between the memory requirements of the solver and the pose detector, your tracker requires a very expensive machine! :)

That's great!! Yes, unfortunately at the moment it requires a lot of memory. But the main reason was to make it time efficient. If we instead use lazy constraints, the memory requirement can be reduced drastically, but it will increase the run-time since we need to perform inference after every iteration of the solver to obtain violating constraints.
Another way is to update the solver with the one proposed in this paper:
https://arxiv.org/pdf/1611.04399.pdf
The author told me that it's much faster and can handle larger graphs.

And you can also perform some sort of gating. At the moment we have a very densely connected spatial graph. You can actually discard many edges in the graph based on different heuristics e.g., if the difference between two parts is larger than a threshold, don't add the edge or use person detector to limit the connections to neighboring persons only, etc. etc.

Thanks a lot for your time and suggestions!