(哈哈哈,上面的图是我自己做的。。。)

CMake+libtorch+Qt

毕业设计打算做一个小软件,实现一个简单的Machine Reading。2018年12月pytorch发布了1.0稳定版,据说在部署上更方便,于是尝试一下。我不会java,Qt用的还可以,所以没办法,只好用Qt。

首先准备anaconda+pycharm+Qt+pytorch1.0+libtorch。

流程:

  1. pytorch训练模型完成,保存为.pt文件(包含模型与参数,相当于tensorflow的pb文件?)
  2. 编写CMakeLists文件(保留一个以后直接用)
  3. Qt中制作界面,把pytorch C++加载使用.pt文件的代码加进去
  4. CMake

首先将pytorch官方的示例在ubuntu中做了一遍,完成之后,需要的是把Qt做的界面加入到里面,走了一些弯路,在windows中也进行了尝试,但是出现: Does libtorch support mingw on windows? 这样的问题,不知道如何解决。于是改用官方推荐的CMake,但是对CMake不熟悉,找到了这篇文章,单独在Qt中使用CMake进行构建,也是很顺利。
然后就是把Qt做的界面和pytorch模型合并了。我在这里只使用了一个QMessageBox,显示出来一个对话框,如果这个可以成功的话,那么更复杂的应该也没有问题了。
我在原来的pytorch C++调用模型的代码里,添加头文件:

#include <QMessageBox>#include <QApplication>

代码稍作修改:

//    if (argc != 2) {
//        std::cerr << "usage: example-ap <path-to-exported-script-module>n";
//        return -1;
//    }QApplication a(argc, argv);// Deserialize the ScriptModule from a file using torch::jit::load().std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("/home/beidou/QtWork/model.pt"); //argv[1]

中间都不变,仅在最后添加:

QMessageBox msgBox;msgBox.setText("success!!!");msgBox.exec();return a.exec();

在CMakeLists.txt文件中把之前的两部分CMakeLists.txt合并就差不多了。

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(example-ap)
#set里设置你的libtorch的路径,你可以到这个目录下看一看有什么文件
set(Torch_DIR /home/beidou/libtorch/share/cmake/Torch)
find_package(Torch REQUIRED)
include_directories($(Torch_INCLUDE_DIRS))
add_executable(example-ap example-ap.cpp)
target_link_libraries(example-ap "${TORCH_LIBRARIES}")
set_property(TARGET example-ap PROPERTY CXX_STANDARD 11)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt5 REQUIRED Widgets)
target_link_libraries(example-ap Qt5::Widgets)

在这里我们不需要资源文件qrc和界面文件ui

#set(CMAKE_AUTORCC ON)
#set(RESOURCE_DIR resources/resources.qrc)
#qt5_wrap_cpp( MOC widget.h)
#qt5_wrap_ui( UIC widget.ui)

然后把CMakeLists.txt拖进Qt就好了,自动进行CMake,后面可以直接在Qt里修改这个文件。在上方菜单栏构建,如果成功了,就可以运行了。总的来说挺顺利的,像我这么菜的看着几个教程都做出来了。

希望在github里的那个windows中使用libtorch的问题得到解决,以后有空的话试一下在windows中用CMake的方式进行构建,然后,感觉部署到android上还是有困难呀,这几天弄那个Qt+Caffe部署到Android设备上的程序简直弄的心累,现在还是有莫名其妙的问题。

第二天,在windows中尝试使用上述方法,我以为只需要改个文件路径就会没有问题了,结果出现了:

在github中看到很多libtorch出现的问题,在windows中可以尝试一下先把pytorch源文件编译一下。

参考文章:
CMake的详细使用方式:https://www.jianshu.com/p/c71ec5d63f0d

cmake 版本 arm_尝试使用CMake构建Qt+Pytorch简单应用相关推荐

  1. cmake 版本 arm_在 ARM 架构服务器上编译 Greenplum6并制作rpm安装包

    Greenplum 是一款开源MPP数据分析平台,提供包括数据分析.机器学习和人工智能等特色功能.目前 Greenplum 的二进制发行版本只能运行在 X86 服务器.github上的Greenplu ...

  2. cmake 版本 arm_学习电路仿真:proteus电路仿真软件在ARM中的应用解析

    目前,使用较多的电路仿真软件为proteus,因此学习这款电路仿真软件的朋友也通常较多.本文中,将基于protues电路仿真软件,对proteus在ARM开发中的应用加以解析,一起来了解下吧. 现在, ...

  3. 在 Ubuntu Linux 上从源代码构建 Qt 6.2.2的简短教程

    Qt 6.2.0 是 Qt 6 系列的第3个版本,功能与 Qt 5 相当,因此有望成为第一个被新 Qt 项目或从 Qt 5 移植的项目广泛采用的版本.在这篇文章中我提供有关在 Ubuntu Linux ...

  4. Linux使用cmake编译项目,如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake)...

    如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake) 我使用的是ubuntu 14.04,cmake 2.8.12.2 ...

  5. VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS2019,且远程目标平台cmake版本大于等于3.8)

    参考文章:使用vs2019进行Linux远程开发 vs进行远程开发分为三步: 1.创建远程环境的连接,随后让vs将远程环境中的系统头文件同步到本地(也可以指定其他地方的头文件,后面会讲解),c++的代 ...

  6. yocto下的cmake版本hello world,追加分层使用

    这里记载如何使用Yocto编译一个cmake的helloworld的程序 我想把这个helloworld当成一个新的模块区别与yocto版本的helloworld 1.所以先在yo目录下,建立一个cm ...

  7. 由于CMake版本过高Invalid revision: 3.18.1-g262b901-dirty

    Invalid revision: 3.18.1-g262b901-dirty 这个错误是由于CMake版本过高造成的 在SDK Manager中,卸载高版本,再下载个低版本CMake即可,比如3.6 ...

  8. CMake 常用总结二:CMake 生成静态库与动态库

    引言 CMake 实践帮助我们对 CMake 有一个系统全面的了解,并且有大量示例以供参考,至少在实际项目中可以让我们有能力看懂并修改项目中现有的 CMake . 阅读完 CMake 实践文档,认为自 ...

  9. linux下cmake命令行,深入理解CMake(1): CMake命令行参数

    初衷 CMake能用来编写跨平台(cross-platform)的构建规则,通过这些规则来调用各个平台的编译器.链接器,生成各个目标(静态库,静态库,或者可执行). 我第一个接触的大型C++项目是Op ...

最新文章

  1. python中字典的键必须是可以哈希的对象
  2. ZLYD团队第一周项目总结
  3. 计算机专业大学排名_2020全国计算机专业大学排名
  4. java初学者练手项目_最适合初学者的Java练手项目!
  5. 目前最完美的魔兽世界服务端AzerothCore,Centos系统docker编译教程
  6. win10下如何安装win7自带的照片查看器。
  7. python定义一个整数变量_Python变量和数据类型详解
  8. 豆瓣电影数据可视化项目
  9. Unreal Engine 4 控制台命令参数合集
  10. 淘宝,天猫获取sku详细信息 API
  11. 【解决方案】如何搭建运动场体育赛事直播方案:EasyCVR综合智能化体育赛事直播
  12. android美拍sd卡,AI美拍,智慧四摄;小i也有大不同
  13. C++用递归方法求x^n,x和n由键盘输入完整可运行源代码及过程
  14. 数字图像处理|Matlab-基于颜色的车牌识别程序
  15. 百度aistudio上使用yolov4训练人脸检测模型
  16. PGL 系列(四)词向量 CBOW
  17. linux中more命令的意思,linux中的more命令的详细解释
  18. 【连载】说透运维监控系统01-监控系统概述
  19. MySQL标准差和方差函数使用
  20. 作为设计师的一些工作技巧

热门文章

  1. qpython手机版-qpythonl app下载
  2. python中常见的流程结构-Python分支结构(switch)操作简介
  3. python处理流程-在python异步协程中处理流程分析(一)
  4. python实现简单的api接口-用python写一个restful API
  5. python中文读音ndarray-Python Numpy 控制台完全输出ndarray的实现
  6. python爬虫实例-python使用百度进行爬虫简单学习例子
  7. win10笔记本电脑桌面发蓝、呈现负片的颜色,以及键盘中个别键失灵
  8. lua学习笔记之模式查找
  9. codeforce 154C - Double Profiles(hash)
  10. python中的字符串常用函数