MCPcopy Create free account
hub / github.com/OpenGVLab/UniFormerV2 / AsyncVis

Class AsyncVis

slowfast/visualization/async_predictor.py:126–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124
125
126class AsyncVis:
127 class _VisWorker(mp.Process):
128 def __init__(self, video_vis, task_queue, result_queue):
129 """
130 Visualization Worker for AsyncVis.
131 Args:
132 video_vis (VideoVisualizer object): object with tools for visualization.
133 task_queue (mp.Queue): a shared queue for incoming task for visualization.
134 result_queue (mp.Queue): a shared queue for visualized results.
135 """
136 self.video_vis = video_vis
137 self.task_queue = task_queue
138 self.result_queue = result_queue
139 super().__init__()
140
141 def run(self):
142 """
143 Run visualization asynchronously.
144 """
145 while True:
146 task = self.task_queue.get()
147 if isinstance(task, _StopToken):
148 break
149
150 frames = draw_predictions(task, self.video_vis)
151 task.frames = np.array(frames)
152 self.result_queue.put(task)
153
154 def __init__(self, video_vis, n_workers=None):
155 """
156 Args:
157 cfg (CfgNode): configs. Details can be found in
158 slowfast/config/defaults.py
159 n_workers (Optional[int]): number of CPUs for running video visualizer.
160 If not given, use all CPUs.
161 """
162
163 num_workers = mp.cpu_count() if n_workers is None else n_workers
164
165 self.task_queue = mp.Queue()
166 self.result_queue = mp.Queue()
167 self.get_indices_ls = []
168 self.procs = []
169 self.result_data = {}
170 self.put_id = -1
171 for _ in range(max(num_workers, 1)):
172 self.procs.append(
173 AsyncVis._VisWorker(
174 video_vis, self.task_queue, self.result_queue
175 )
176 )
177
178 for p in self.procs:
179 p.start()
180
181 atexit.register(self.shutdown)
182
183 def put(self, task):

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected