TNN是一个移动端高性能、轻量级推理框架,同时拥有跨平台、高性能、模型压缩、代码裁剪等众多突出优势。TNN框架在原有Rapidnet、ncnn框架的基础上进一步加强了移动端设备的支持以及性能优化,同时也借鉴了业界主流开源框架高性能和良好拓展性的优点。目前TNN已经在手Q、微视、P图等应用中落地,欢迎大家参与协同共建,促进TNN推理框架进一步完善。
使用 TNN 非常简单,如果你有一个已经训练好的模型, 那么一般而言通过以下三个步骤就能完成模型在目标平台上的部署。
第一步是把训练好的模型转换成TNN的模型,为此我们提供了丰富的工具来帮助你完成这一步,无论你使用的是 TensorFlow、PyTorch、或者 Caffe,都可以轻松完成转换。
当你完成了模型的转换,第二步就是编译目标平台的 TNN 引擎了,你可以根据自己的目标平台的硬件支持情况,选择 CPU/ARM/OpenCL/Metal 等加速方案。 对于这些平台,TNN 都提供了一键编译的脚本,使用非常方便。
最后一步就是使用编译好的 TNN 引擎进行推理,你可以在自己的应用程序中嵌入对 TNN 的调用,这方面我们提供了丰富而详实的 demo 来帮助你完成。
目前TNN已经在手Q、微视、P图等应用中落地:
计算优化
低精度优化
内存优化
主流模型实测性能:v0.1 2020.05.29
麒麟970:
model | cpu time(单线程,ms) | gpu time(ms) |
---|---|---|
Mobilenet_v1 | 88 | 12 |
Mobilenet_v1_int8 | 55 | |
Mobilenet_v2 | 58 | 11 |
Mobilenet_v2_int8 | 41 | |
squeezenet_v1.0 | 127 | 20 |
squeezenet_v1.0_int8 | 82 |
骁龙835:
model | cpu time(单线程,ms) | gpu time(ms) |
---|---|---|
Mobilenet_v1 | 94 | 16 |
Mobilenet_v1_int8 | 62 | |
Mobilenet_v2 | 61 | 14 |
Mobilenet_v2_int8 | 47 | |
squeezenet_v1.0 | 122 | 28 |
squeezenet_v1.0_int8 | 93 |
骁龙845:
model | cpu time(单线程,ms) | gpu time(ms) |
---|---|---|
Mobilenet_v1 | 60 | 10 |
Mobilenet_v1_int8 | 37 | |
Mobilenet_v2 | 39 | 8 |
Mobilenet_v2_int8 | 28 | |
squeezenet_v1.0 | 74 | 14 |
squeezenet_v1.0_int8 | 56 |
TNN架构图:
通过 ONNX 支持 TensorFlow, PyTorch, MXNet, Caffe 等多种训练框架,充分利用和融入不断完善的 ONNX 开源生态。当前支持 ONNX 算子55个,近期会完善到约80个,覆盖主流CNN网络
支持主流安卓、iOS、Embedded Linux 操作系统,支持 ARM CPU, GPU 硬件平台(近期还会加入达芬奇 NPU 支持)
模块化设计,将模型解析、计算图构建、优化、底层硬件适配、高性能 kernel 实现各部分抽象隔离,通过 Factory Mode 注册、构建设备,方便接入更多的底层硬件、加速方案。
Runtime 无任何第三方库依赖,CPU 动态库尺寸仅约 400KB,并提供基础图像变换操作,调用简单便捷。跨平台模型统一、调用接口统一,通过单个配置参数快速切换。
简介 TNN 是一个移动端高性能、轻量级推理框架,同时拥有跨平台、高性能、模型压缩、代码裁剪等众多突出优势。TNN 框架在原有 Rapidnet、ncnn 框架的基础上进一步加强了移动端设备的支持以及性能优化,同时也借鉴了业界主流开源框架高性能和良好拓展性的优点。目前 TNN 已经在手 Q、微视、P 图等应用中落地,欢迎大家参与协同共建,促进 TNN 推理框架进一步完善。 一、API兼容性 TNN
前言: 如果想借用TNN自己写一个库(比如exp.so), 通常我们选用TNN的静态库(libTNN.a), 因为使用静态库后自己生成的库文件就一个exp.so 如果使用动态库(libTNN.so)那么自己生成的库文件就有两个了: libTNN.so和exp.so TNN安卓库编译 环境: 源码: https://github.com/Tencent/TNN/archive/refs/ta
一、实验目的 1、掌握神经网络的基本原理。 2、熟悉神经网络的实现方式。 二、实验环境 1. PC机一台,机器上装有Python; 2、实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作; 3、能认真独立完成实验内容; 4、实验后做好实验总结,根据实验情况完成总结报告; 5、实验报告2-3页。 三、实验内容 1、参考实例构造两类数据,两类数据的分类界面
第一步:模型转换,按照github一步一步来就ok了~此处无坑 第二步:cmake建立vs工程,需要在cmakelist里面需要使用的accelerator,否则在getdevice会返回NULL值 第三步:调用 #include "tnn/utils/dims_vector_utils.h" #include "tnn/utils/blob_transfer_utils.h" #include
AKjs前端框架是Andrew.Kim和他的团队一起研发的基于jQuery的一个轻量级前端框架。它是只要懂jQuery的语法很容易上手的框架。该框架里面现在发布了很多移动端常用的功能效果;开发者们使用过程中功能插件也可以自己扩展增加。另一方面,它是相当于一个丰富的组件化UI框架,优点是开发要前后端分离,项目开发过程中后端通过ajax调用数据的机制。 AKjs是一个基于jQuery的一套构建用户界面
面试 自我介绍 项目介绍 1. img2col 的原理 2. RMSnorm的计算过程 3. reduce的计算流程 4. SIMD 是只能对fp32的算子使用吗(因为我没讲清楚) 5. effective transformer的好处,怎么加速的(没答太对) 6. embedding 和 building casual mask 怎么加速的 7. casual mask 有什么作用 8. 大模型
在之前已经了解了什么是响应式,其实响应式设计可以有两条道走,一条是移动优先的响应式设计(Mobile First RWD),一种是通常的响应式设计。像 Bootstrap 这样的前端 CSS 框架,就声称自己是 Mobile First 。 那什么是 “移动优先的响应式设计”?它的优势在哪里呢? 1.移动优先的响应式设计 Luke Wroblewski 在2009年写得一篇名为 Mobile Fi
本文向大家介绍使用Thinkphp框架开发移动端接口,包括了使用Thinkphp框架开发移动端接口的使用技巧和注意事项,需要的朋友参考一下 方案一:给原生APP提供api接口 使用TP框架时 放在common文件夹下文件名就叫function.php 查询单个果品详细信息 findRelease() 方法的model app端接收到的数据(解码json之后) app端接收到的数据(原生json串)
本文向大家介绍怎么实现移动端的边框0.5px?相关面试题,主要包含被问及怎么实现移动端的边框0.5px?时的应答技巧和注意事项,需要的朋友参考一下 一种是通过transform中的scale 一种是通过meta viewport中设置init-scale为0.5 一种是设置hr 一种是基于背景渐变实现
本文向大家介绍用过哪些移动端深度学习框架?相关面试题,主要包含被问及用过哪些移动端深度学习框架?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 开源的有:小米的MACE,骁龙的SNPE,腾讯的FeatherCNN和ncnn,百度的mobile-deep-learning(MDL);caffe、tensorflow lite都有移动端,只是可能没有上面的框架效率高。据传还有支付宝的xNN,商