知乎回答
在服务器上部署,可以采用TensorRT加速;在CPU或FPGA上部署可以采用OpenVINO加速;或者也可以采用框架对应的C++库,比如pytorch提供的libtorch库;针对这些方案的部署方式可以参考我的文章。这些方式都可以采用C++实现,而且难度不大,效果又极好。对于C++的知识量而言,大多数是C++的基本语法,还有一些标准模板库的知识,比如vector等等,入门不难
https://www.zhihu.com/question/447224038
1 C++部署上线
https://blog.csdn.net/weixin_44233336/article/details/110432566
2 安装libtorch
#include "torch/script.h"
#include "torch/torch.h"
#include <iostream>
#include <memory>
using namespace std;
int main(int argc, const char* argv[]){
if (argc != 2) {
std::cerr << "usage: example-app <path-to-exported-script-module>\n";
return -1;
}
// 读取TorchScript转化后的模型
torch::jit::script::Module module;
try {
module = torch::jit::load(argv[1]);
}
catch (const c10::Error& e) {
std::cerr << "error loading the model\n";
return -1;
}
module->to(at::kCUDA);
assert(module != nullptr);
// 构建示例输入
std::vector<torch::jit::IValue> inputs;
inputs.push_back(torch::ones({1, 3, 224, 224}).to(at::kCUDA));
// 执行模型推理并输出tensor
at::Tensor output = module->forward(inputs).toTensor();
std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << '\n';}
/************************* 输出结果 ****************************************
-0.8297, -35.6048, 12.4823
[Variable[CUDAFloatType]{1,3}]
*************************************************************************/
3 TensorRT是Nvidia开发的一个神经网络前向推理加速的C++库
https://zhuanlan.zhihu.com/p/158895888
Pytorch -> Onnx -> TensorRT