TNN新版本上线!全新特性,更加好用!

TNN作为腾讯优图对外开源的深度学习推断框架,在610日对外开源以来受到了业界的广泛关注,吸引了众多的开发者。开源的第4天登上了GitHub热搜榜;在3个月的时间内,累积了将近1800StarTNN技术交流群的人数也突破1200

优图实验室也持续地对外输出,针对开发者提出的问题不断完善。经过一系列迭代,优图实验室在911日发布TNN新版本——v0.2版本。TNN新版本在通用性、易用性、NPU支持上都有很大的提升。

01通用性

1.1 TF Lite模型支持

ONNX作为中间格式转换的基础上,TNN新版本新增了模型转换工具,可直接将TF Lite的模型转为TNN的模型。同时在转换过程中,引入了两次模型优化:一次是针对模型本身的结构进行等效转换、层融合与常数折叠等优化;另一次是在TNN Runtime中需要输入输出大小才能进行的优化,如Reshape层相关的融合等。

image.png

TF Lite TNN模型工具

1.2 模型算子扩充

TNN新版本新增了对SSDYOLO等模型的支持。在算子数量上从之前的80个增加到88个,新增的算子包括DetectionPostProcessPriorBoxSquaredDifference等常用算子。另外原来算子的功能也进行了扩充,如在 Pad 算子除了在HW方向扩充外,新支持了在 Channel 方向进行扩充。

02易用性

2.1 预处理模块

基于TNNMat数据结构,新版本TNN增加了Mat的常用的图像预处理操作,如ResizeCropWarpAffine,格式转换等操作。Mat预处理接口的开放,打通了移动端AI推理的整条链路。用户可以直接输入原始YUV的数据,经过预处理模块和推理模块,最终获取到模型的结果。如图所示

image.png

Mat预处理模块针对不同的硬件平台进行了特殊的优化,与OpenCV v4.4.0的相关图像处理相比,性能有显著的优势。预处理从1080P720P缩小到224x224的性能数据对比如下

image.png

2.2 算法模型库

TNN新版本新增了模型库,首次将优图自研算法直接开放给用户使用,同时提供了Demo演示示例。此次版本更新我们输出了优图在各个领域广泛使用的人脸配准算法模型,后续TNN将基于腾讯优图和腾讯光影的算法能力陆续推出手势识别、头发分割、超分辨率等算法模型。

2.3 示例展示

TNN新版本重构了示例代码TNNSDKSample,抽象了TNN调用的相关接口,用户可轻松基于TNNSDKSample直接构造自己的SDK并进行效果演示。同时TNN新增了BlazeFaceYOLOv5Mobilenet SSD等多个示例,便于用户根据自身使用场景进行参考。

BlazeFace人脸检测

腾讯优图人脸配准

YOLOV5物体检测

03NPU支持

华为从麒麟970开始增加了NPU(神经网络处理器)。NPU是专为深度学习算法而设计,算力强,功耗低。在如智能手机等实际端侧AI应用场景中,AI算力与功耗的协调是至关重要的,有了NPU的加持,智能手机如虎添翼。

TNN框架在麒麟芯片的适配与性能优化方面,和华为进行了的深度合作。基于之前的合作成果,受邀参加华为910日的HDC大会,并且在技术论坛中进行合作案例的经验分享和技术展示。目前TNN新版本终于要对外开放NPU能力了!

image.png

TNNNPU的适配上通过HiAI Foundation层适配、IR适配来达到接口统一和模型统一的效果。用户在原来的基础上可以非常方便的切换到NPU进行模型推理。只需要初始化时DeviceType设置为NPU,剩下的工作都会自动完成。

image.png

支持NPU后,我们也对NPU的实际性能进行了测试,使用TNNbenchmark模型,测试数据如下

image.png

可以发现,NPU的算力非常惊人,同样的平台,NPU的性能比GPUCPU高出很多。而NPU的功耗仅有CPU1/10左右。高性能,低功耗,真的是太适合移动端的AI推理了!

目前腾讯优图实验室正联合腾讯光影研究室迁移部分AI应用到NPU平台。比如,微视中人脸变小孩的应用和实时人脸3D玩法。

人脸变小孩

3D卡通捏脸

04结语

TNN的目标是做一个全平台支持的AI推理框架,TNN在其他硬件平台(X86NVIDIAAtlas)的适配与优化也做了大量的工作,后续会陆续对外开放,敬请期待!

0 条评论

目前没有人发表评论

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信