From 7ad663119aa35e9fb28ebab505c19dccb057e8cc Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Wed, 9 Jun 2021 18:20:36 +0800 Subject: [PATCH 1/6] fix save_log_path as null --- tools/infer/predict_det.py | 3 ++- tools/infer/predict_rec.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/infer/predict_det.py b/tools/infer/predict_det.py index baa89be13..2463fdf31 100755 --- a/tools/infer/predict_det.py +++ b/tools/infer/predict_det.py @@ -283,5 +283,6 @@ if __name__ == "__main__": 'total_time_s': det_time_dict['total_time'] } benchmark_log = benchmark_utils.PaddleInferBenchmark( - text_detector.config, model_info, data_info, perf_info, mems) + text_detector.config, model_info, data_info, perf_info, mems, + args.save_log_path) benchmark_log("Det") diff --git a/tools/infer/predict_rec.py b/tools/infer/predict_rec.py index 2eeb39b2a..c0d6ef681 100755 --- a/tools/infer/predict_rec.py +++ b/tools/infer/predict_rec.py @@ -320,7 +320,8 @@ def main(args): 'total_time_s': rec_time_dict['total_time'] } benchmark_log = benchmark_utils.PaddleInferBenchmark( - text_recognizer.config, model_info, data_info, perf_info, mems) + text_recognizer.config, model_info, data_info, perf_info, mems, + args.save_log_path) benchmark_log("Rec") From 796898e0f83d4dc5c371fe32b09805a105fb9deb Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Wed, 9 Jun 2021 18:22:29 +0800 Subject: [PATCH 2/6] adjust the min_subgraph_size for trt --- tools/infer/utility.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/infer/utility.py b/tools/infer/utility.py index 9210c4578..d16a19232 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -109,7 +109,7 @@ def init_args(): parser.add_argument("--use_mp", type=str2bool, default=False) parser.add_argument("--total_process_num", type=int, default=1) parser.add_argument("--process_id", type=int, default=0) - + parser.add_argument("--benchmark", type=bool, default=False) parser.add_argument("--save_log_path", type=str, default="./log_output/") @@ -235,7 +235,7 @@ def create_predictor(args, mode, logger): config.enable_tensorrt_engine( precision_mode=inference.PrecisionType.Float32, max_batch_size=args.max_batch_size, - min_subgraph_size=3) # skip the minmum trt subgraph + min_subgraph_size=10) # skip the minmum trt subgraph if mode == "det" and "mobile" in model_file_path: min_input_shape = { "x": [1, 3, 50, 50], From 616ad6a179b0cc7aede699fe8cfe1dae92d3ef92 Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Wed, 9 Jun 2021 19:15:57 +0800 Subject: [PATCH 3/6] fix tps and fix trt --- ppocr/modeling/transforms/tps.py | 13 ++++--------- tools/infer/utility.py | 32 +++++--------------------------- 2 files changed, 9 insertions(+), 36 deletions(-) diff --git a/ppocr/modeling/transforms/tps.py b/ppocr/modeling/transforms/tps.py index 78338edf6..13220991d 100644 --- a/ppocr/modeling/transforms/tps.py +++ b/ppocr/modeling/transforms/tps.py @@ -230,15 +230,10 @@ class GridGenerator(nn.Layer): def build_inv_delta_C_paddle(self, C): """ Return inv_delta_C which is needed to calculate T """ F = self.F - hat_C = paddle.zeros((F, F), dtype='float64') # F x F - for i in range(0, F): - for j in range(i, F): - if i == j: - hat_C[i, j] = 1 - else: - r = paddle.norm(C[i] - C[j]) - hat_C[i, j] = r - hat_C[j, i] = r + hat_eye = paddle.eye(F, dtype='float64') # F x F + tmp1 = C.reshape([1, F, 2]) + tmp2 = C.reshape([F, 1, 2]) + hat_C = paddle.norm(tmp1 - tmp2, axis=2) + hat_eye hat_C = (hat_C**2) * paddle.log(hat_C) delta_C = paddle.concat( # F+3 x F+3 [ diff --git a/tools/infer/utility.py b/tools/infer/utility.py index d16a19232..2b70f36eb 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -235,12 +235,13 @@ def create_predictor(args, mode, logger): config.enable_tensorrt_engine( precision_mode=inference.PrecisionType.Float32, max_batch_size=args.max_batch_size, - min_subgraph_size=10) # skip the minmum trt subgraph - if mode == "det" and "mobile" in model_file_path: + min_subgraph_size=3) # skip the minmum trt subgraph + if mode == "det": min_input_shape = { "x": [1, 3, 50, 50], "conv2d_92.tmp_0": [1, 96, 20, 20], "conv2d_91.tmp_0": [1, 96, 10, 10], + "conv2d_59.tmp_0": [1, 96, 20, 20], "nearest_interp_v2_1.tmp_0": [1, 96, 10, 10], "nearest_interp_v2_2.tmp_0": [1, 96, 20, 20], "nearest_interp_v2_3.tmp_0": [1, 24, 20, 20], @@ -253,6 +254,7 @@ def create_predictor(args, mode, logger): "x": [1, 3, 2000, 2000], "conv2d_92.tmp_0": [1, 96, 400, 400], "conv2d_91.tmp_0": [1, 96, 200, 200], + "conv2d_59.tmp_0": [1, 96, 400, 400], "nearest_interp_v2_1.tmp_0": [1, 96, 200, 200], "nearest_interp_v2_2.tmp_0": [1, 96, 400, 400], "nearest_interp_v2_3.tmp_0": [1, 24, 400, 400], @@ -265,6 +267,7 @@ def create_predictor(args, mode, logger): "x": [1, 3, 640, 640], "conv2d_92.tmp_0": [1, 96, 160, 160], "conv2d_91.tmp_0": [1, 96, 80, 80], + "conv2d_59.tmp_0": [1, 96, 160, 160], "nearest_interp_v2_1.tmp_0": [1, 96, 80, 80], "nearest_interp_v2_2.tmp_0": [1, 96, 160, 160], "nearest_interp_v2_3.tmp_0": [1, 24, 160, 160], @@ -273,31 +276,6 @@ def create_predictor(args, mode, logger): "elementwise_add_7": [1, 56, 40, 40], "nearest_interp_v2_0.tmp_0": [1, 96, 40, 40] } - if mode == "det" and "server" in model_file_path: - min_input_shape = { - "x": [1, 3, 50, 50], - "conv2d_59.tmp_0": [1, 96, 20, 20], - "nearest_interp_v2_2.tmp_0": [1, 96, 20, 20], - "nearest_interp_v2_3.tmp_0": [1, 24, 20, 20], - "nearest_interp_v2_4.tmp_0": [1, 24, 20, 20], - "nearest_interp_v2_5.tmp_0": [1, 24, 20, 20] - } - max_input_shape = { - "x": [1, 3, 2000, 2000], - "conv2d_59.tmp_0": [1, 96, 400, 400], - "nearest_interp_v2_2.tmp_0": [1, 96, 400, 400], - "nearest_interp_v2_3.tmp_0": [1, 24, 400, 400], - "nearest_interp_v2_4.tmp_0": [1, 24, 400, 400], - "nearest_interp_v2_5.tmp_0": [1, 24, 400, 400] - } - opt_input_shape = { - "x": [1, 3, 640, 640], - "conv2d_59.tmp_0": [1, 96, 160, 160], - "nearest_interp_v2_2.tmp_0": [1, 96, 160, 160], - "nearest_interp_v2_3.tmp_0": [1, 24, 160, 160], - "nearest_interp_v2_4.tmp_0": [1, 24, 160, 160], - "nearest_interp_v2_5.tmp_0": [1, 24, 160, 160] - } elif mode == "rec": min_input_shape = {"x": [args.rec_batch_num, 3, 32, 10]} max_input_shape = {"x": [args.rec_batch_num, 3, 32, 2000]} From 962a628d17848fe5c46d298bacba21d237a8b9e4 Mon Sep 17 00:00:00 2001 From: Double_V Date: Wed, 9 Jun 2021 19:30:52 +0800 Subject: [PATCH 4/6] remove tmp variable --- ppocr/modeling/transforms/tps.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ppocr/modeling/transforms/tps.py b/ppocr/modeling/transforms/tps.py index 13220991d..dcce6246a 100644 --- a/ppocr/modeling/transforms/tps.py +++ b/ppocr/modeling/transforms/tps.py @@ -231,9 +231,7 @@ class GridGenerator(nn.Layer): """ Return inv_delta_C which is needed to calculate T """ F = self.F hat_eye = paddle.eye(F, dtype='float64') # F x F - tmp1 = C.reshape([1, F, 2]) - tmp2 = C.reshape([F, 1, 2]) - hat_C = paddle.norm(tmp1 - tmp2, axis=2) + hat_eye + hat_C = paddle.norm(C.reshape([1, F, 2]) - C.reshape([F, 1, 2]), axis=2) + hat_eye hat_C = (hat_C**2) * paddle.log(hat_C) delta_C = paddle.concat( # F+3 x F+3 [ From 96a53fb4becfface113ec4e717b2cfa976764c63 Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Thu, 10 Jun 2021 14:29:06 +0800 Subject: [PATCH 5/6] add params min_subgraph_size --- tools/infer/utility.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/infer/utility.py b/tools/infer/utility.py index 2b70f36eb..a87e3eefb 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -37,6 +37,7 @@ def init_args(): parser.add_argument("--use_gpu", type=str2bool, default=True) parser.add_argument("--ir_optim", type=str2bool, default=True) parser.add_argument("--use_tensorrt", type=str2bool, default=False) + parser.add_argument("--min_subgraph_size", type=int, default=3) parser.add_argument("--precision", type=str, default="fp32") parser.add_argument("--gpu_mem", type=int, default=500) @@ -235,7 +236,8 @@ def create_predictor(args, mode, logger): config.enable_tensorrt_engine( precision_mode=inference.PrecisionType.Float32, max_batch_size=args.max_batch_size, - min_subgraph_size=3) # skip the minmum trt subgraph + min_subgraph_size=args. + min_subgraph_size) # skip the minmum trt subgraph if mode == "det": min_input_shape = { "x": [1, 3, 50, 50], From ab0b1ace8fe0cfd140db2a4b5b37ecf50c0ddfd2 Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Thu, 10 Jun 2021 14:29:56 +0800 Subject: [PATCH 6/6] add params min_subgraph_size --- tools/infer/utility.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/infer/utility.py b/tools/infer/utility.py index a87e3eefb..dbdb4e339 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -236,8 +236,8 @@ def create_predictor(args, mode, logger): config.enable_tensorrt_engine( precision_mode=inference.PrecisionType.Float32, max_batch_size=args.max_batch_size, - min_subgraph_size=args. - min_subgraph_size) # skip the minmum trt subgraph + min_subgraph_size=args.min_subgraph_size) + # skip the minmum trt subgraph if mode == "det": min_input_shape = { "x": [1, 3, 50, 50],