Win10+libtorch1.1+opencv 笔记
生活随笔
收集整理的這篇文章主要介紹了
Win10+libtorch1.1+opencv 笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這幾天剛剛把libtorch加載模型弄明白,記錄一下。
1、正確安裝VS2017+opencv+cmake +pytorch 1.1
2、官網下載libtorch cpu 1.1版本(注意pytorch與libtorch版本一致)
3、pytorch 導出模型
?
import torch from torchvision import models model = models.resnet18()#導入已經訓練好的模型 #state = torch.load('latest.pt') #model.load_state_dict(state['model_state_dict'], strict=True)#注意模型輸入的尺寸 example = torch.rand(1, 3, 224, 224) model = model.eval()traced_script_module = torch.jit.trace(model, example) output = traced_script_module(torch.ones(1,3,224,224)) traced_script_module.save("model.pt")4、cmake 編寫
?
cmake_minimum_required(VERSION 3.14 FATAL_ERROR) project(custom_ops)find_package(Torch REQUIRED) find_package( OpenCV REQUIRED )include_directories( ${OpenCV_INCLUDE_DIRS} )add_executable(example-app example-app.cpp) target_link_libraries(example-app ${TORCH_LIBRARIES} ${OpenCV_LIBS} ) set_property(TARGET example-app PROPERTY CXX_STANDARD 11)5、新建build文件夾 并且進入build 打開命令行,這里的Visual Studio 15 Win64是指VS2017
?
cmake -DCMAKE_PREFIX_PATH=D:\yourpath\opencv\build\x64\vc15\lib;D:\yourpath\libtorch -DCMAKE_BUILD_TYPE=Release -G"Visual Studio 15 Win64" ..6、打開VS項目sln
7、編寫libtorch代碼加載模型
?
#include <torch/script.h> //#include <ATen/ATen.h> #include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> #include <memory>using namespace std;shared_ptr<torch::jit::script::Module> load_model(string model_path) {shared_ptr<torch::jit::script::Module> module = torch::jit::load(model_path);//module->to(device);assert(module != nullptr);std::cout << "load model ok\n";return module; }int main(int argc, const char* argv[]) {if (argc != 3) {cerr << "usage : example-app <path-module> <path-image>";return -1;}shared_ptr<torch::jit::script::Module> module = load_model(argv[1]);cv::Mat image = cv::imread(argv[2]);cvtColor(image, image, cv::COLOR_BGR2RGB);cv::Mat img_float;image.convertTo(img_float, CV_32F, 1.0 / 255);cv::resize(img_float, img_float, cv::Size(224, 224));auto img_tensor = torch::from_blob(img_float.data, { 1, 224, 224, 3 });img_tensor = img_tensor.permute({ 0, 3, 1, 2 });//輸入std::vector<torch::jit::IValue> inputs;inputs.push_back(img_tensor);// evalute timedouble t = (double)cv::getTickCount();auto out = module->forward(inputs).toTensor();std::cout << out << std::endl;t = (double)cv::getTickCount() - t;printf("耗費時間為: %gs\n", t / cv::getTickFrequency());inputs.pop_back();return 0; }8、將c10.dll、caff2.dll、torch.dll、opencv_wordl400.dll放到與exe文件同級目錄
9、命令行運行exe文件
作者:找自己的idea
鏈接:https://www.jianshu.com/p/42cccb65ac2c
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
以上是生活随笔為你收集整理的Win10+libtorch1.1+opencv 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开陶瓷店首先要做什么 算是比较好的创业项
- 下一篇: 好易借上征信吗