mirror of
				https://github.com/PaddlePaddle/FastDeploy.git
				synced 2025-10-26 18:10:32 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import fastdeploy as fd
 | ||
| import cv2
 | ||
| import os
 | ||
| 
 | ||
| 
 | ||
| def parse_arguments():
 | ||
|     import argparse
 | ||
|     import ast
 | ||
|     parser = argparse.ArgumentParser()
 | ||
|     parser.add_argument(
 | ||
|         "--model_dir",
 | ||
|         required=True,
 | ||
|         help="Path of PaddleDetection model directory")
 | ||
|     parser.add_argument(
 | ||
|         "--image", required=True, help="Path of test image file.")
 | ||
|     parser.add_argument(
 | ||
|         "--device",
 | ||
|         type=str,
 | ||
|         default='cpu',
 | ||
|         help="Type of inference device, support 'cpu' or 'gpu'.")
 | ||
|     parser.add_argument(
 | ||
|         "--backend",
 | ||
|         nargs='?',
 | ||
|         type=str,
 | ||
|         default='default',
 | ||
|         help="Set inference backend, support one of ['default', 'ort', 'paddle', 'trt', 'openvino']."
 | ||
|     )
 | ||
|     return parser.parse_args()
 | ||
| 
 | ||
| 
 | ||
| def build_option(args):
 | ||
|     option = fd.RuntimeOption()
 | ||
| 
 | ||
|     if args.device.lower() == "gpu":
 | ||
|         option.use_gpu()
 | ||
| 
 | ||
|     if args.backend == "ort":
 | ||
|         option.use_ort_backend()
 | ||
|     elif args.backend == "paddle":
 | ||
|         option.use_paddle_backend()
 | ||
|     elif args.backend == "trt":
 | ||
|         assert args.device.lower(
 | ||
|         ) == "gpu", "Set trt backend must use gpu for inference"
 | ||
|         option.use_trt_backend()
 | ||
|         option.set_trt_input_shape("image", [1, 3, 640, 640])
 | ||
|         option.set_trt_input_shape("scale_factor", [1, 2])
 | ||
|     elif args.backend == 'openvino':
 | ||
|         assert args.device.lower(
 | ||
|         ) == "cpu", "Set openvino backend must use cpu for inference"
 | ||
|         option.use_openvino_backend()
 | ||
|     elif args.backend == "default":
 | ||
|         pass
 | ||
|     else:
 | ||
|         raise Exception(
 | ||
|             "Don't support backend type: {}, please use one of ['default', 'ort', 'paddle', 'trt'].".
 | ||
|             format(args.backend))
 | ||
|     return option
 | ||
| 
 | ||
| 
 | ||
| args = parse_arguments()
 | ||
| 
 | ||
| model_file = os.path.join(args.model_dir, "model.pdmodel")
 | ||
| params_file = os.path.join(args.model_dir, "model.pdiparams")
 | ||
| config_file = os.path.join(args.model_dir, "infer_cfg.yml")
 | ||
| 
 | ||
| # 配置runtime,加载模型
 | ||
| runtime_option = build_option(args)
 | ||
| model = fd.vision.detection.PPYOLOE(
 | ||
|     model_file, params_file, config_file, runtime_option=runtime_option)
 | ||
| 
 | ||
| # 预测图片检测结果
 | ||
| im = cv2.imread(args.image)
 | ||
| for i in range(10):
 | ||
|     result = model.predict(im)
 | ||
| print(result)
 | ||
| 
 | ||
| # 预测结果可视化
 | ||
| vis_im = fd.vision.vis_detection(im, result, score_threshold=0.5)
 | ||
| cv2.imwrite("visualized_result.jpg", vis_im)
 | ||
| print("Visualized result save in ./visualized_result.jpg")
 | 
