cmake 版本 arm_尝试使用CMake构建Qt+Pytorch简单应用
(哈哈哈,上面的图是我自己做的。。。)
CMake+libtorch+Qt
毕业设计打算做一个小软件,实现一个简单的Machine Reading。2018年12月pytorch发布了1.0稳定版,据说在部署上更方便,于是尝试一下。我不会java,Qt用的还可以,所以没办法,只好用Qt。
首先准备anaconda+pycharm+Qt+pytorch1.0+libtorch。
流程:
- pytorch训练模型完成,保存为.pt文件(包含模型与参数,相当于tensorflow的pb文件?)
- 编写CMakeLists文件(保留一个以后直接用)
- Qt中制作界面,把pytorch C++加载使用.pt文件的代码加进去
- 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简单应用相关推荐
- cmake 版本 arm_在 ARM 架构服务器上编译 Greenplum6并制作rpm安装包
Greenplum 是一款开源MPP数据分析平台,提供包括数据分析.机器学习和人工智能等特色功能.目前 Greenplum 的二进制发行版本只能运行在 X86 服务器.github上的Greenplu ...
- cmake 版本 arm_学习电路仿真:proteus电路仿真软件在ARM中的应用解析
目前,使用较多的电路仿真软件为proteus,因此学习这款电路仿真软件的朋友也通常较多.本文中,将基于protues电路仿真软件,对proteus在ARM开发中的应用加以解析,一起来了解下吧. 现在, ...
- 在 Ubuntu Linux 上从源代码构建 Qt 6.2.2的简短教程
Qt 6.2.0 是 Qt 6 系列的第3个版本,功能与 Qt 5 相当,因此有望成为第一个被新 Qt 项目或从 Qt 5 移植的项目广泛采用的版本.在这篇文章中我提供有关在 Ubuntu Linux ...
- 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 ...
- VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS2019,且远程目标平台cmake版本大于等于3.8)
参考文章:使用vs2019进行Linux远程开发 vs进行远程开发分为三步: 1.创建远程环境的连接,随后让vs将远程环境中的系统头文件同步到本地(也可以指定其他地方的头文件,后面会讲解),c++的代 ...
- yocto下的cmake版本hello world,追加分层使用
这里记载如何使用Yocto编译一个cmake的helloworld的程序 我想把这个helloworld当成一个新的模块区别与yocto版本的helloworld 1.所以先在yo目录下,建立一个cm ...
- 由于CMake版本过高Invalid revision: 3.18.1-g262b901-dirty
Invalid revision: 3.18.1-g262b901-dirty 这个错误是由于CMake版本过高造成的 在SDK Manager中,卸载高版本,再下载个低版本CMake即可,比如3.6 ...
- CMake 常用总结二:CMake 生成静态库与动态库
引言 CMake 实践帮助我们对 CMake 有一个系统全面的了解,并且有大量示例以供参考,至少在实际项目中可以让我们有能力看懂并修改项目中现有的 CMake . 阅读完 CMake 实践文档,认为自 ...
- linux下cmake命令行,深入理解CMake(1): CMake命令行参数
初衷 CMake能用来编写跨平台(cross-platform)的构建规则,通过这些规则来调用各个平台的编译器.链接器,生成各个目标(静态库,静态库,或者可执行). 我第一个接触的大型C++项目是Op ...
最新文章
- python中字典的键必须是可以哈希的对象
- ZLYD团队第一周项目总结
- 计算机专业大学排名_2020全国计算机专业大学排名
- java初学者练手项目_最适合初学者的Java练手项目!
- 目前最完美的魔兽世界服务端AzerothCore,Centos系统docker编译教程
- win10下如何安装win7自带的照片查看器。
- python定义一个整数变量_Python变量和数据类型详解
- 豆瓣电影数据可视化项目
- Unreal Engine 4 控制台命令参数合集
- 淘宝,天猫获取sku详细信息 API
- 【解决方案】如何搭建运动场体育赛事直播方案:EasyCVR综合智能化体育赛事直播
- android美拍sd卡,AI美拍,智慧四摄;小i也有大不同
- C++用递归方法求x^n,x和n由键盘输入完整可运行源代码及过程
- 数字图像处理|Matlab-基于颜色的车牌识别程序
- 百度aistudio上使用yolov4训练人脸检测模型
- PGL 系列(四)词向量 CBOW
- linux中more命令的意思,linux中的more命令的详细解释
- 【连载】说透运维监控系统01-监控系统概述
- MySQL标准差和方差函数使用
- 作为设计师的一些工作技巧
热门文章
- qpython手机版-qpythonl app下载
- python中常见的流程结构-Python分支结构(switch)操作简介
- python处理流程-在python异步协程中处理流程分析(一)
- python实现简单的api接口-用python写一个restful API
- python中文读音ndarray-Python Numpy 控制台完全输出ndarray的实现
- python爬虫实例-python使用百度进行爬虫简单学习例子
- win10笔记本电脑桌面发蓝、呈现负片的颜色,以及键盘中个别键失灵
- lua学习笔记之模式查找
- codeforce 154C - Double Profiles(hash)
- python中的字符串常用函数