1.背景
通过cpp调用pytorch模型
2. 转换方法
Pytorch框架TorchScript模型转换方法
3. 部署
#include#include #include int main() { //定义使用cuda auto device = torch::Device(torch::kCUDA,0); //读取图片 auto image = cv::imread("your path to\flower.jpg"); //缩放至指定大小 cv::resize(image, image, cv::Size(224, 224)); //转成张量 auto input_tensor = torch::from_blob(image.data, { image.rows, image.cols, 3 }, torch::kByte).permute({ 2, 0, 1 }).unsqueeze(0).to(torch::kFloat32) / 225.0; //加载模型 auto model = torch::jit::load("your path to\resnet34.pt"); model.to(device); model.eval(); //前向传播 auto output = model.forward({input_tensor.to(device)}).toTensor(); output = torch::softmax(output, 1); std::cout << "模型预测结果为第" << torch::argmax(output) << "类,置信度为" << output.max() << std::endl; return 0; } ———————————————— 版权声明:本文为CSDN博主「AllentDan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/AllentDan/article/details/115313683
- 踩坑记录
Pytorch C++部署 之 TorchScript 踩坑记录
TorchScript使用的注意事项和常见错误
自己的踩坑记录
模型转换ok,cpp预测时报错 Error:double free or corruption (!prev)
查到这个
关于double free or corruption (!prev)错误
检查了一下网络的forward()代码,发现该网络调用了一个方法来规范化输入的分辨率,将规范输入分辨率的代码直接放于forward()中,成功解除。(不知道是否是上述链接中的原因造成的,欢迎大家讨论)



