pytorch 安装opencv menpo -c_深度学习与C++之pytorch

本文档详细介绍了如何使用PyTorch训练ResNet18模型,并将其转换为可在C++环境中运行的版本。作者首先通过PyTorch的trace功能保存模型,然后在C++中加载并执行模型的前向传播。整个过程涵盖了从训练模型到C++调用的完整流程,强调了C++在汽车或机器人领域深度学习应用中的重要性。
摘要由CSDN通过智能技术生成

前言:

自己的碎碎念,我已经找到了自己的方向了,深度学习方面神仙大战。除了深度学习是要有自己的其余东西啊,例如图像处理的知识,C++的能力一样很重要。自己因为专业原因可能更加偏向于向汽车领域的深度学习方面发展,或者机器人领域的视觉。在这些领域C++知识不可获取,趁着有时间先捣鼓下。

流程:

pytorch训练,产生模型,这里直接使用res16,这里我推荐初次使用的朋友先用谷歌的colab白嫖。

import torch
import torchvision

# An instance of your model.
model = torchvision.models.resnet18()

# An example input you would normally provide to your model's forward() method.
example = torch.rand(1, 3, 224, 224)

# Use torch.jit.trace to generate a torch.jit.ScriptModule via tracing.
traced_script_module = torch.jit.trace(model, example)
traced_script_module.save("1.pt")

这里实际上pytorch保存模型有两种方法,一种是trace,一种是script,根据[1]我的理解是有自己的逻辑的时候模块(类)需要使用script,使用trace无法跟踪。

有了模型,接下来就是C++的调用了。

首先需要下载libtorch(这里选取cpu版本),最好和你生成pt文件的pytorch版本相同[2]。

新建一个文件夹test。

在test,写前向传播C++的调用端口,名为loadmodule.cpp

#include<iostream>
#include"torch/script.h"
#include"torch/torch.h"
using namespace std;

int main(int argc, const char* argv[]){
 torch::jit::script::Module module;
  try {
    // Deserialize the ScriptModule from a file using torch::jit::load().
    module = torch::jit::load(argv[1]);
  }
  catch (const c10::Error& e) {
    std::cerr << "error loading the modeln";
    return -1;
  }

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

// Execute the model and turn its output into a tensor.
at::Tensor output = module.forward(inputs).toTensor();
std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << 'n';

}

使用cmake生成makefile,注意把CmakeLists.txt中的path替换掉

mkdir build
cd build
gedit CMakeLists.txt
//复制以下内容导CMakeLists

cmake_minimum_required(VERSION 3.5)
project(test_pytorch)
set(CMAKE_CXX_STANDARD 11)#c++11
set(Torch_DIR /home/a/下载/libtorch/share/cmake/Torch) #指定libTorch位置(应该是有更好的办法安装)

#include_directories(${OpenCV_INCLUDE_DIRS} /home/xxx/下载/libtorch/include /home/xxx/下载/libtorch/include/torch/csrc/api/include)
#find_package(OpenCV REQUIRED)
find_package(Torch REQUIRED)    # 自动查找libTorch包

add_executable(loadmodule loadmodule.cpp)
target_link_libraries(loadmodule ${OpenCV_LIBS}  ${TORCH_LIBRARIES}) # 加入libTorch的库文件路径

//camke内容终止
//终端执行
cmake --DCMAKE_PREFIX_PATH=/home/a/下载/libtorch ..

接着编译makefile

make

最后执行文件发现生效了

运行以下实验

./loadmodule 1.pt

[1]

https://pytorch.org/tutorials/advanced/cpp_export.html​pytorch.org

[2]

PyTorch​pytorch.org
b038442bee908df2dffaaa76c75c10ad.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值