in sample-apps/custom-model/code/application.py [0:0]
def entry(self, inputs, outputs):
"""Processes one frame of video from one or more video streams."""
frame_start = time.time()
self.frame_num += 1
# Loop through attached video streams
for i in range(len(inputs.video_in)):
outputs.video_out[i] = self.process_media(inputs.video_in[i])
# Log metrics
frame_time = (time.time() - frame_start) * 1000
if frame_time > self.frame_time_max:
self.frame_time_max = frame_time
self.frame_time_ms += frame_time
if self.frame_num % self.epoch_frames == 0:
epoch_time = time.time() - self.epoch_start
logger.info('epoch length: {:.3f} s ({:.3f} FPS)'.format(epoch_time, self.epoch_frames/epoch_time))
logger.info('avg inference time: {:.3f} ms'.format(self.inference_time_ms / self.epoch_frames / len(inputs.video_in)))
logger.info('max inference time: {:.3f} ms'.format(self.inference_time_max))
logger.info('avg frame processing time: {:.3f} ms'.format(self.frame_time_ms / self.epoch_frames))
logger.info('max frame processing time: {:.3f} ms'.format(self.frame_time_max))
self.put_metric('InferenceTime', self.inference_time_ms / self.epoch_frames / len(inputs.video_in))
self.put_metric('FrameTime', self.frame_time_ms / self.epoch_frames)
self.inference_time_ms = 0
self.inference_time_max = 0
self.frame_time_ms = 0
self.frame_time_max = 0
self.epoch_start = time.time()
return True