Skip to content

Latest commit

 

History

History
139 lines (102 loc) · 16.6 KB

README_CH.md

File metadata and controls

139 lines (102 loc) · 16.6 KB

English Version

简介

TNN:由腾讯优图实验室开源的高性能、轻量级神经网络推理框架,同时拥有跨平台、高性能、模型压缩、代码裁剪等众多突出优势。TNN框架在原有Rapidnet、ncnn框架的基础上进一步加强了移动端设备的支持以及性能优化,同时借鉴了业界主流开源框架高性能和良好拓展性的特性,拓展了对于后台X86, NV GPU的支持。手机端 TNN已经在手机QQ、微视、P图等众多应用中落地,服务端TNN作为腾讯云AI基础加速框架已为众多业务落地提供加速支持。欢迎大家参与协同共建,促进TNN推理框架进一步完善。

效果示例

人脸检测(blazeface) 人脸配准(腾讯优图) 头发分割(腾讯光影)
face_detection
模型链接: tflite tnn
youtu_face_alignment
模型链接: tnn
hair_segmentation
模型链接: tnn
姿势估计(腾讯光流) 姿势估计(blazepose) 中文字符识别
skeleton
模型链接: tnn
blazepose
模型链接: tflite tnn
chinese-ocr
模型链接: onnx tnn
物体检测(yolov5s) 物体检测(MobilenetV2-SSD) 阅读理解
yolov5
模型链接: onnx tnn
mobilenetv2_ssd
模型链接: tensorflow tnn
bertsquad10
模型链接: onnx tnn

中文字符识别demo是chineseocr_lite的TNN实现,是一个超轻量级的中文ocr,支持倾斜、旋转和竖排文字识别。

各个平台对demo的支持情况如下表所示,单击✅标记,便可以跳转至对应demo的入口代码。

demo ARM OpenCL Metal Huawei NPU Apple NPU X86 CUDA
人脸检测
物体检测
人脸配准
头发分割
姿势估计(腾讯光流)
姿势估计(blazepose)
中文字符识别
阅读理解

快速开始

使用 TNN 非常简单,如果你有一个已经训练好的模型, 那么一般而言通过以下三个步骤就能完成模型在目标平台上的部署。

  1. 第一步是把训练好的模型转换成TNN的模型,为此我们提供了丰富的工具来帮助你完成这一步,无论你使用的是 TensorFlow、PyTorch、或者 Caffe,都可以轻松完成转换。 详细的手把手教程可以参见这里如何转换模型

  2. 当你完成了模型的转换,第二步就是编译目标平台的 TNN 引擎了,你可以根据自己的目标平台的硬件支持情况,选择 CPU/ARM/OpenCL/Metal/NPU/X86/CUDA 等加速方案。 对于这些平台,TNN 都提供了一键编译的脚本,使用非常方便。详细步骤可以参考这里如何编译TNN

  3. 最后一步就是使用编译好的 TNN 引擎进行推理,你可以在自己的应用程序中嵌入对 TNN 的调用,这方面我们提供了丰富而详实的 demo 来帮助你完成。

技术方案

目前TNN具有的以下特性获得了广泛的好评。

  • 计算优化

    • 针对不同架构在硬件指令发射、吞吐、延迟、缓存带宽、缓存延迟、寄存器数量等特点,深度优化底层算子,极致利用硬件算力
    • 主流硬件平台(CPU: ARMv7, ARMv8,X86 GPU: Mali, Adreno, Apple, NV GPU) 深度调优
    • CNN 核心卷积运算通过 Winograd,Tile-GEMM, Direct Conv 等多种算法实现,保证不同参数、计算尺度下高效计算
    • Op 融合:离线分析网络计算图,多个小 Op(计算量小、功能较简单)融合运算,减少反复内存读取、kernel 启动等开销
  • 低精度优化

    • 支持 INT8, FP16 低精度计算,减少模型大小、内存消耗,同时利用硬件低精度计算指令加速计算
    • 支持 INT8 Winograd 算法,(输入6bit), 在精度满足要求的情况下,进一步降低模型计算复杂度
    • 支持单模型多种精度混合计算,加速计算同时保证模型精度
  • 内存优化

    • 高效”内存池”实现:通过 DAG 网络计算图分析,实现无计算依赖的节点间复用内存,降低 90% 内存资源消耗
    • 跨模型内存复用:支持外部实时指定用于网络内存,实现“多个模型,单份内存”。
  • 主流模型实测性能:评测数据

  • TNN架构图:

  • 通过 ONNX 支持 TensorFlow, PyTorch, MXNet, Caffe 等多种训练框架,充分利用和融入不断完善的 ONNX 开源生态。当前支持 ONNX 算子100+,覆盖主流CNN, NLP网络。

  • 支持主流安卓、iOS、Embedded Linux 操作系统, Windows, Linux,支持 ARM CPU, x86, Mali GPU, Adreno GPU, NV GPU, 达芬奇NPU,RK NPU。

  • 模块化设计,将模型解析、计算图构建、优化、底层硬件适配、高性能 kernel 实现各部分抽象隔离,通过 Factory Mode 注册、构建设备,方便接入更多的底层硬件、加速方案。

  • 移动端动态库尺寸仅约 400KB,并提供基础图像变换操作,调用简单便捷。跨平台模型统一、调用接口统一,通过单个配置参数快速切换。

能力展示

使用手册

API文档

贡献者须知

Roadmap

致谢

TNN参考和借鉴了下列项目:

License

FAQ

加入我们

  • 欢迎大家参与,协同共建,打造业界最好的高性能推理框架。

  • 技术交流 QQ 群: 704900079 答案:TNN

  • QQ 群二维码: