C++调用Libtorch常见函数

#创建变量 
std::vector<torch::jit::IValue> inputs;
inputs.push_back(torch::ones({ 1,3,224,224 }));
torch::jit::IValue inputs;

#定义模型变量
torch::jit::script::Module model = torch::jit::load("path");

at::Tensor output = model.forward(inputs).toTensor();
#获取尺寸

ouput.sizes()
int heigh = output.size(0);
int weight = output.size(1);

torch::Tensor out_tensor = output.detach(); # requires_grad为false,
out_tensor = out_tensor.squeeze().detach().permute({ 1, 2, 0 });
// squeeze 减少图像尺寸 permute 交换维度
out_tensor = out_tensor.mul(255).clamp(0, 255).to(torch::kU8); //*255,转uint8 
out_tensor = out_tensor.to(torch::kCPU); //迁移至CPU
cv::Mat resultImg(img_h, img_w, CV_8UC3, out_tensor.data_ptr()); // 将Tensor数据拷贝至Mat
// cv::cvtColor(resultImg, resultImg, CV_RGB2BGR); 


#
cv::Mat tensor2Mat(torch::Tensor &i_tensor)
{
	int height = i_tensor.size(0), width = i_tensor.size(1);
	//i_tensor = i_tensor.to(torch::kF32);
	i_tensor = i_tensor.to(torch::kCPU);
	cv::Mat o_Mat(cv::Size(width, height), CV_32F, i_tensor.data_ptr());
	return o_Mat;
}
Win10 C++ libtorch调用YOLOv8的步骤如下: 1. 首先,确保你已经安装好了适用于C++libtorch。你可以从官方网站下载并按照指导进行安装。确保你选择的是与你的操作系统和编译器版本相匹配的libtorch。 2. 下载并配置YOLOv8的模型文件和权重。YOLOv8是一种目标检测算法,它使用预先训练的权重和模型来进行目标检测。你可以在网上找到YOLOv8的预训练权重和模型文件。确保你已经下载了它们并将它们存放在适当的位置。 3. 创建一个C++项目,并在项目中包含libtorch的头文件路径和库文件路径。你需要在项目属性中设置这些路径,以便编译器能够正确地找到libtorch,并将其链接到你的项目中。 4. 在你的C++代码中,包含YOLOv8和libtorch的头文件。你需要包含YOLOv8模型和权重加载的相关头文件,以及libtorch的头文件。 5. 在代码中加载YOLOv8的模型和权重。使用libtorch的加载模型函数,将YOLOv8的模型和权重文件加载到内存中。 6. 准备待检测的图像数据。将要检测的图像数据转换为libtorch中的张量格式。确保输入的图像数据与YOLOv8的模型输入尺寸一致。 7. 将图像输入模型进行推理。使用加载的YOLOv8模型对图像进行前向传递,得到目标检测结果。 8. 解析模型的输出结果。通过处理模型的输出张量,可以得到目标的位置、类别和置信度等信息。 9. 根据解析后的结果,进行目标的绘制和展示。你可以使用C++图形库或其他绘图工具来绘制检测到的目标,在图像上标注目标的位置和类别等信息。 以上步骤大致描述了在Win10平台上使用C++libtorch调用YOLOv8目标检测模型的过程。具体实现可能因实际情况而有所区别,请根据你的项目需求进行调整和完善。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值