in sample-apps/custom-model/code/application.py [0:0]
def process_media(self, media):
"""Runs inference on a buffered frame of video, and buffers the new frame."""
stream = media.stream_uri
# Set up stream buffer
if not self.buffered_media.get(stream):
self.buffered_media[stream] = media
self.buffered_image[stream] = self.preprocess(media.image)
logger.info('Set up frame buffer for stream: {}'.format(stream))
logger.info('Stream image size: {}'.format(media.image.shape))
output = self.buffered_media[stream]
# Run inference on the buffered image
inference_start = time.time()
self.model.batch(0, self.buffered_image[stream])
self.model.flush()
# While waiting for inference, preprocess the current image
self.buffered_image[stream] = self.preprocess(media.image)
self.buffered_media[stream] = media
# Wait for inference results
inference_results = self.model.get_result()
# Log metrics
inference_time = (time.time() - inference_start) * 1000
if inference_time > self.inference_time_max:
self.inference_time_max = inference_time
self.inference_time_ms += inference_time
# Process results
output = self.process_results(inference_results, output)
self.model.release_result(inference_results)
return output