Closed aiarcv closed 3 years ago
Hi @aiarcv, Could you please provide the custom code changes performed on graphs with error logs.
@aiarcv
The problem is that the calculators are not always emitting packets and the pollers block the graph, effectively preventing the graph from sourcing new packets.
See #1532
or #850
Basically it involves editing the graphs and polling based on whether a packet is present
node {
calculator: "PacketPresenceCalculator"
input_stream: "PACKET:landmarks"
output_stream: "PRESENCE:landmark_presence"
}
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you.
AddOutputStreamPoller() is designed for convenience by enabling synchronous graph input and output, all from a single application thread. However, because some MediaPipe calculators occasionally produce no output, AddOutputStreamPoller() is prone to deadlocks. I usually change from AddOutputStreamPoller() to ObserveOutputStream(), which doesn't block any thread. See related issue #1709.
Please make sure that this is a solution issue.
System information (Linux Ubuntu 18.04 or 20.04)
Describe the expected behavior: https://github.com/google/mediapipe/issues/1971 https://github.com/google/mediapipe/issues/1973 Use the procedure described in above two issues , we Can obtain landmarks XYZ by poller (NormalizedLandmarkList) for CPU version, when do exactly same things for GPU , the procedure does not work and not able to get XYZ in GPU mode.
Standalone code you may have used to try to get what you need :
Other info / Complete Logs : Mediapipe by pass the landmarks can not get landmark in following codes ( the poller works and can get landmark in GPU mode when using 2020 Nov Mediapipe, but can not work for latest mediapipe) if (!multi_hand_landmarks_poller.Next(&multi_hand_landmarks_packet)) { LOG(INFO) << "landmarks cannot be polled\n"; break; }