未验证 提交 93e2d433 编写于 作者: F Feng Ni 提交者: GitHub

[cherry-pick] Fix run_benchmark (#7815)

* fix run_benchmark for small model accurate speed

* fix run_benchmark for other det models
上级 05ab413e
...@@ -181,7 +181,7 @@ class Detector(object): ...@@ -181,7 +181,7 @@ class Detector(object):
filter_res = {'boxes': boxes, 'boxes_num': filter_num} filter_res = {'boxes': boxes, 'boxes_num': filter_num}
return filter_res return filter_res
def predict(self, repeats=1): def predict(self, repeats=1, run_benchmark=False):
''' '''
Args: Args:
repeats (int): repeats number for prediction repeats (int): repeats number for prediction
...@@ -193,6 +193,15 @@ class Detector(object): ...@@ -193,6 +193,15 @@ class Detector(object):
''' '''
# model prediction # model prediction
np_boxes_num, np_boxes, np_masks = np.array([0]), None, None np_boxes_num, np_boxes, np_masks = np.array([0]), None, None
if run_benchmark:
for i in range(repeats):
self.predictor.run()
paddle.device.cuda.synchronize()
result = dict(
boxes=np_boxes, masks=np_masks, boxes_num=np_boxes_num)
return result
for i in range(repeats): for i in range(repeats):
self.predictor.run() self.predictor.run()
output_names = self.predictor.get_output_names() output_names = self.predictor.get_output_names()
...@@ -272,9 +281,9 @@ class Detector(object): ...@@ -272,9 +281,9 @@ class Detector(object):
self.det_times.preprocess_time_s.end() self.det_times.preprocess_time_s.end()
# model prediction # model prediction
result = self.predict(repeats=50) # warmup result = self.predict(repeats=50, run_benchmark=True) # warmup
self.det_times.inference_time_s.start() self.det_times.inference_time_s.start()
result = self.predict(repeats=repeats) result = self.predict(repeats=repeats, run_benchmark=True)
self.det_times.inference_time_s.end(repeats=repeats) self.det_times.inference_time_s.end(repeats=repeats)
# postprocess # postprocess
...@@ -370,9 +379,9 @@ class Detector(object): ...@@ -370,9 +379,9 @@ class Detector(object):
self.det_times.preprocess_time_s.end() self.det_times.preprocess_time_s.end()
# model prediction # model prediction
result = self.predict(repeats=50) # warmup result = self.predict(repeats=50, run_benchmark=True) # warmup
self.det_times.inference_time_s.start() self.det_times.inference_time_s.start()
result = self.predict(repeats=repeats) result = self.predict(repeats=repeats, run_benchmark=True)
self.det_times.inference_time_s.end(repeats=repeats) self.det_times.inference_time_s.end(repeats=repeats)
# postprocess # postprocess
...@@ -568,7 +577,7 @@ class DetectorSOLOv2(Detector): ...@@ -568,7 +577,7 @@ class DetectorSOLOv2(Detector):
output_dir=output_dir, output_dir=output_dir,
threshold=threshold, ) threshold=threshold, )
def predict(self, repeats=1): def predict(self, repeats=1, run_benchmark=False):
''' '''
Args: Args:
repeats (int): repeat number for prediction repeats (int): repeat number for prediction
...@@ -577,7 +586,20 @@ class DetectorSOLOv2(Detector): ...@@ -577,7 +586,20 @@ class DetectorSOLOv2(Detector):
'cate_label': label of segm, shape:[N] 'cate_label': label of segm, shape:[N]
'cate_score': confidence score of segm, shape:[N] 'cate_score': confidence score of segm, shape:[N]
''' '''
np_label, np_score, np_segms = None, None, None np_segms, np_label, np_score, np_boxes_num = None, None, None, np.array(
[0])
if run_benchmark:
for i in range(repeats):
self.predictor.run()
paddle.device.cuda.synchronize()
result = dict(
segm=np_segms,
label=np_label,
score=np_score,
boxes_num=np_boxes_num)
return result
for i in range(repeats): for i in range(repeats):
self.predictor.run() self.predictor.run()
output_names = self.predictor.get_output_names() output_names = self.predictor.get_output_names()
...@@ -659,7 +681,7 @@ class DetectorPicoDet(Detector): ...@@ -659,7 +681,7 @@ class DetectorPicoDet(Detector):
result = dict(boxes=np_boxes, boxes_num=np_boxes_num) result = dict(boxes=np_boxes, boxes_num=np_boxes_num)
return result return result
def predict(self, repeats=1): def predict(self, repeats=1, run_benchmark=False):
''' '''
Args: Args:
repeats (int): repeat number for prediction repeats (int): repeat number for prediction
...@@ -668,6 +690,14 @@ class DetectorPicoDet(Detector): ...@@ -668,6 +690,14 @@ class DetectorPicoDet(Detector):
matix element:[class, score, x_min, y_min, x_max, y_max] matix element:[class, score, x_min, y_min, x_max, y_max]
''' '''
np_score_list, np_boxes_list = [], [] np_score_list, np_boxes_list = [], []
if run_benchmark:
for i in range(repeats):
self.predictor.run()
paddle.device.cuda.synchronize()
result = dict(boxes=np_score_list, boxes_num=np_boxes_list)
return result
for i in range(repeats): for i in range(repeats):
self.predictor.run() self.predictor.run()
np_score_list.clear() np_score_list.clear()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册