TNN编译及使用
要使用 CMake 和 TNN 库基于 C++ 实现神经网络模型的推理预测,你需要按照以下步骤进行操作:
- 准备环境
确保已安装 CMake 和 C++ 编译器。并从 TNN 的 GitHub 仓库下载源代码(https://github.com/Tencent/TNN)。
- 编译 TNN
在 TNN 根目录下创建一个新目录,例如 build,然后进入该目录并运行以下命令:
mkdir build
cd build
cmake ..
make -j4
这将在 build 目录下生成 TNN 库文件。
过程如下:




- 创建你的项目
创建一个新的 C++ 项目,例如 TNNInference。在该项目中创建一个名为 CMakeLists.txt 的文件,用于配置 CMake。以下是一个示例:
cmake_minimum_required(VERSION 3.10)
project(TNNInference)
set(CMAKE_CXX_STANDARD 11)
# 添加 TNN 头文件和库文件路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/path/to/TNN/include)
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/path/to/TNN/lib)
add_executable(TNNInference main.cpp)
# 链接 TNN 库
target_link_libraries(TNNInference TNN)
- 编写 C++ 代码
在 main.cpp 中编写 C++ 代码,使用 TNN 进行模型推理。以下是一个简单的示例:
#include <iostream>
#include "tnn/core/common.h"
#include "tnn/core/tnn.h"
int main() {
// 创建 TNN 实例
std::shared_ptr<TNN_NS::TNN> tnn = std::make_shared<TNN_NS::TNN>();
// 配置模型文件路径
TNN_NS::ModelConfig model_config;
model_config.params.push_back("path/to/your/model.proto");
model_config.params.push_back("path/to/your/model.bin");
// 初始化 TNN
TNN_NS::Status status = tnn->Init(model_config);
if (status != TNN_NS::TNN_OK) {
std::cerr << "TNN init failed: " << status.description() << std::endl;
return -1;
}
// 创建输入和输出 Blob
TNN_NS::Blob input_blob, output_blob;
// 进行模型推理
status = tnn->Forward(&input_blob, &output_blob);
if (status != TNN_NS::TNN_OK) {
std::cerr << "TNN forward failed: " << status.description() << std::endl;
return -1;
}
// 获取并处理输出结果
// ...
return 0;
}
请注意,你需要根据你的模型和数据修改代码,例如设置输入 Blob 的形状、填充输入数据等。
- 编译和运行项目
在项目根目录下创建一个新目录,例如 build,然后进入该目录并运行以下命令:
mkdir build
cd build
cmake ..
make
./TNNInference
这将编译并运行你的项目,使用 TNN 库进行模型推理。
以上步骤将帮助你使用 CMake 和 TNN 库基于 C++ 实现神经网络模型的推理预测。
TNN编译及使用的更多相关文章
- TNN iOS非图像模型入门
注:本文同步发布于微信公众号:stringwu的互联网杂谈TNN iOS 非图像模型入门指南 1 背景 TNN是腾讯优图实验室开源的高性能.轻量级神经网络推理框架TNN,github上也有比较详细的例 ...
- TODO:macOS编译PHP7.1
TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...
- Centos6.5下编译安装mysql 5.6
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- CENTOS 6.5 平台离线编译安装 Mysql5.6.22
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...
- Hawk 6. 编译和扩展开发
Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...
- android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...
- 在Windows上编译和调试CoreCLR
生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...
- 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~
这篇博客,只是把自己在开发中经常遇到的打包编译问题以及解决方案给大家稍微分享一下,不求吸睛,但求有用. 1.大家都知道我们常常会遇到dex超出方法数的问题,所以很多人都会采用android.suppo ...
随机推荐
- 使用netsh命令行进行网络管理
显示网络适配器状态 netsh interface show interface 显示各个网络适配器的名称和状态 启用(禁用)网络适配器 本系列命令需要以"以管理员身份运行". 禁 ...
- DRF-Permission组件源码分析及改编源码
1. 权限组件源码分析 PS:下列源码为了方便理解都进行了简化,只保留了权限相关的代码 由于视图函数中继承了APIView,因此permission_classes可在视图类中进行重写. 注意点: 执 ...
- QT creator中cmake管理项目,如何引入外部库(引入Eigen库为例)
在Eigen的官网下载压缩包[点我进入] 解压到当前项目的根目录(当然你也可以自己选择目录) 在当前项目的CMakeLists.txt任意位置加入这句话include_directories(${CM ...
- Power BI新卡片更改显示单位
Power BI 不知道什么时候发布了新卡片,照现在官方来说,该视觉对象目前还属于预览版,但已经可以正常使用了,对比旧的卡片,显示效果个人觉得会友好一些,详见官方说明:创建"新"卡 ...
- Linux设置显示中文和设置字体
设置中文 一.查看当前使用的系统语言 1.登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言.如 echo $LANG 2.查看安装的语言包 查看是否有中文语言包 ...
- 从0搭建一个FIFO模块-01(基础知识)
1. FIFO介绍 基本概念 FIFO(First In, First Out)是一种常用的数据结构,用于存储和处理数据.它的工作原理与排队的顺序类似,遵循"先进先出"的原则.即, ...
- 奥迪借助Karpenter为关键业务节省63%成本
原文链接: https://aws.amazon.com/cn/solutions/case-studies/audi-efficient-compute-case-study/ 翻译:cloudpi ...
- AI智能学生体测小程序解决方案
引言: 近年来,随着教育理念的提升,对学生综合素质的教育越发重视,特别是越发重视学生的身体素质提升,各阶段的升学考试也将体测纳入考核范围.学校也推出了各种体测锻炼促进手段,今天为您介绍一个基于小程序的 ...
- nginx配置php-fpm虚拟主机站点
ubuntu下安装nginx 很简单 sudo apt-get install nginx 然后安装php-fpm 我这本地php7.4所以这么写 sudo apt search php7.4-fpm ...
- VScode 扩展推荐和配置
VScode 扩展推荐和配置 VSCode Extensions 推荐 Themes Dracula Official 拥有明亮的颜色和舒适的对比度,非常适合长时间编程. Nord 基于北极地区自然色 ...