PaddleDetection部署C++

一、Cmake编译
1、GPU部署
在这里插入图片描述
黄色部分的路径对应修改、WITH_GPU打勾
2、CPU部署
在这里插入图片描述
黄色部分的路径对应修改、取消WITH_GPU打勾
**注意:**paddle_inference的CPU版本与GPU版本的选择
二、工程
点击Cmake中的Open Project打开工程后,设置为Release/x64,再设置main为启动项目后,点击“生成”。
可以看到在Release文件夹下生成main.exe,则可在命令行中测试。
下面修改代码,以便直接在VS中运行。
1、在PrintBenchmarkLog函数前加入下列行。

std::string model_dir;
std::string image_file;
std::string video_file;
std::string image_dir;
int batch_size = 1;
bool use_gpu = true;	//若CPU部署,此处改为false
std::string device = "GPU";		//若CPU部署,此处改为"CPU"
int camera_id = -1;
double threshold = 0.1;
std::string output_dir = "output";
std::string run_mode = "paddle";
int gpu_id = 0;
bool run_benchmark = false;
bool use_mkldnn = false;
double cpu_threads = 0.9;
bool use_dynamic_shape = false;
int trt_min_shape = 1;
int trt_max_shape = 1280;
int trt_opt_shape = 640;
bool trt_calib_mode = false;

2、主函数对应修改

int main(int argc, char** argv) {
	std::string model_dir = "D:/Paddle/.../inference_model/solov2_r50_enhance_coco";
	std::string image_file = "D:/Paddle/..../test/208.bmp";
	std::string output_dir = "D:/Paddle/.../output";
	// Parsing command-line
	//google::ParseCommandLineFlags(&argc, &argv, true);
	if (model_dir.empty() ||
		(image_file.empty() && image_dir.empty() &&
			video_file.empty())) {
		std::cout << "Usage: ./main --model_dir=/PATH/TO/INFERENCE_MODEL/ "
			<< "--image_file=/PATH/TO/INPUT/IMAGE/" << std::endl;
		return -1;
	}
	if (!(run_mode == "paddle" || run_mode == "trt_fp32" ||
		run_mode == "trt_fp16" || run_mode == "trt_int8")) {
		std::cout
			<< "run_mode should be 'paddle', 'trt_fp32', 'trt_fp16' or 'trt_int8'.";
		return -1;
	}
	transform(device.begin(),
		device.end(),
		device.begin(),
		::toupper);
	if (!(device == "CPU" || device == "GPU" ||
		device == "XPU")) {
		std::cout << "device should be 'CPU', 'GPU' or 'XPU'.";
		return -1;
	}
	//if (use_gpu) {
	//	std::cout << "Deprecated, please use `--device` to set the device you want "
	//		"to run.";
	//	return -1;
	//}
	// Load model and create a object detector
	PaddleDetection::ObjectDetector det(model_dir,
		device,
		use_mkldnn,
		cpu_threads,
		run_mode,
		batch_size,
		gpu_id,
		trt_min_shape,
		trt_max_shape,
		trt_opt_shape,
		trt_calib_mode);
	// Do inference on input video or image
	if (!PathExists(output_dir)) {
		MkDirs(output_dir);
	}
	if (!video_file.empty() || camera_id != -1) {
		PredictVideo(video_file, &det, output_dir);
	}
	else if (!image_file.empty() || !image_dir.empty()) {
		std::vector<std::string> all_img_paths;
		std::vector<cv::String> cv_all_img_paths;
		if (!image_file.empty()) {
			all_img_paths.push_back(image_file);
			if (batch_size > 1) {
				std::cout << "batch_size should be 1, when set `image_file`."
					<< std::endl;
				return -1;
			}
		}
		else {
			cv::glob(image_dir, cv_all_img_paths);
			for (const auto& img_path : cv_all_img_paths) {
				all_img_paths.push_back(img_path);
			}
		}
		PredictImage(all_img_paths,
			batch_size,
			threshold,
			run_benchmark,
			&det,
			output_dir);
	}
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PaddleDetection是一个目标检测库,用于训练和部署目标检测模型。你可以通过以下命令克隆PaddleDetection库到本地:cd <path/to/clone/PaddleDetection> git clone https://github.com/PaddlePaddle/PaddleDetection.git \[1\]。另外,你也可以直接下载已经准备好的PaddleDetection压缩包并解压使用。在工作目录下提供了PaddleDetection.zip文件,你可以使用以下命令解压:!unzip -o /home/aistudio/work/PaddleDetection.zip \[2\]。 安装PaddleDetection时,你可以参考GitHub上的安装文档。请注意,PaddleDetection的最新版本可能与《入门使用教程》中的安装方式有所不同。确保你的环境满足PaddlePaddle 2.2以上的要求。以下是安装PaddleDetection的一般步骤:cd <path> #切换到自己要安装PaddleDetection的安装目录 git clone https://github.com/PaddlePaddle/PaddleDetection.git #克隆PaddleDetection仓库 cd PaddleDetection pip install -r requirements.txt #安装其他依赖 python setup.py install #编译安装paddledet \[3\]。 #### 引用[.reference_title] - *1* [PaddleDetection使用教程](https://blog.csdn.net/qq_40502460/article/details/117480800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PaddleDetection目标检测任务简介和概述](https://blog.csdn.net/tegddhdrhdd/article/details/121328678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [PaddleDetection简单教程](https://blog.csdn.net/qq_56591814/article/details/126006273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值