AI框架知多少 | AidLux小课堂

AI开发依赖开发环境和框架,AidLux集成了全球10大主流AI框架(TensorFlow、PaddlePaddle、NCNN、TNN、MNN、PyTorch、Caffe、MXNet、MindSpore、OpenCV)和AI应用所依赖的各种科学计算库,并做了全面的环境部署、适配和整合优化,无需配置。

AI框架知多少 | AidLux小课堂_第1张图片

开发者们也可以把正在开发的AI应用快速迁移到 AidLux 中来,进行运行、调试与发布。

在我们之前“手势比心放烟花”的视频中,手势识别就是在AidLux平台上运行的TensorFlow框架下的tflite模型。

本期知识小课堂先带大家认识一下TensorFlow、PaddlePaddle、NCNN、TNN和MNN五个框架,再展示部分框架下的模型在AidLux平台上的部署运行。

TensorFlow

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow即为张量从流图的一端流动到另一端计算过程。

TensorFlow编程接口支持Python、C++、GO、Java、Haskell和Rust API,且该框架可以在众多不同的搭载单一或多个CPU和GPU的系统上运行,甚至可以在移动设备、边缘设备上运行。

TensorFlow拥有深度灵活性、真正的可移植性,以及自动差分功能,可用于语音识别或图像识别等多项机器学习和深度学习领域,也比较适用于工业生产环境,模型训练与部署有完备的解决方案。

此外,TensorFlow官方网站上有很多教程和实用文章,可供有兴趣使用或扩展其功能的开发者使用;它还提供了认证课程,以便有经验的Tensorflow 开发者为已有机器学习知识基础的开发者们提供进一步指导。

Paddlepaddle

Paddlepaddle(中文译名“飞桨”)是百度公司于2016年宣布对外推出的开源、易学习、易使用的分布式深度学习平台,其前身是百度于 2013 年自主研发供内部工程师使用的深度学习平台Paddle。

Paddlepaddle是主流深度学习框架中完全国产化的产品,被誉为国内AI框架最早的探索与践行者。

AI框架知多少 | AidLux小课堂_第2张图片

AI框架知多少 | AidLux小课堂_第3张图片

PaddlePaddle 同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数、数百个几点的并行训练,拥有多端部署能力,支持服务器端、移动端等多种异构硬件设备的高速推理,预测性能有优势,并且已经实现API的稳定和向后兼容。

此外,PaddlePaddle拥有较为活跃的社区和相对完整的生态链,同时为用户提供了很多经典模型和中英双语使用文档。在深度学习框架方面,PaddlePaddle覆盖了搜索、图像识别、语音语义识别理解、情感分析、机器翻译、用户画像推荐等多领域的业务和技术。

目前,其在智能农业、智能工业、智能城市、智能零售、智能推荐、智能制造和智能医疗等各个方面都有较为广泛的落地应用。

NCNN

NCNN是腾讯优图实验室于2017年推出的首个开源项目,它是为手机端优化的神经网络前向计算框架,也是业界首个为移动端优化的开源神经网络推断库。

该框架能实现无第三方依赖和跨平台操作,开发者能利用它将深度学习算法移植到手机端,进而产出人工智能APP。

NCNN结构简单、代码易懂,且社区活跃度高,方便初学者轻松上手。但该框架只支持推理,不支持学习,所以一般情况下是相关工作人员用训练框架训练好模型后,转化到NCNN,进而能用于移动端设备。它支持caffe、mxnet等模型的转换。

此外,NCNN几乎覆盖了所有常用的系统平台,其在Linux、Windows和Android、以及iOS、macOS平台上都可以使用GPU来部署模型,在移动平台上它的适用性更强。NCNN目前已在腾讯应用中广泛使用,如QQ、Qzone、微信、天天P图等。

TNN

TNN作为腾讯优图实验室新一代的深度学习推理框架,支持移动端、服务端、桌面端,适配CPU、GPU、NPU等底层硬件,能实现人工智能在多个平台的轻量部署落地。

AI框架知多少 | AidLux小课堂_第4张图片

与腾讯2017年开源的NCNN相比,TNN算力显著提升,支持移动设备,且进一步优化了对移动端的适应性,可将深度学习算法移植到手机端,开发移动端的AI产品。此外,该框架适应中低端机,且在低精度计算的加持下,TNN在中低端机上的性能提升约20%。

通用、轻便也是TNN框架的亮点之一,它解决了一部分不同框架间的模型转换问题,但与MNN的通用性相比而言仍有一定差距——TNN的模型转换需要基于ONNX,无法直接支持转换。

TNN上手非常简单,如果已有训练好的模型,那么一般只需通过三个步骤就能完成模型在目标平台上的部署:首先将训练好的TensorFlow、PyTorch、Caffe或者其他模型用TNN提供的工具转换成TNN模型;然后编译目标平台的TNN引擎,可根据自己的目标平台的硬件支持情况选择CPU、ARM、OpenCL、Metal 等加速方案;最后使用编译好的TNN引擎进行推理,可在自己的应用程序中嵌入对 TNN 的调用,对此,TNN提供了丰富的demo可参考。

MNN

MNN(全称Mobile Neural Network)是一个阿里巴巴开源用于端侧加载深度神经网络模型进行推理预测的轻量级深度神经网络推理引擎,主要用于解决目前端智能在底层硬件、操作系统碎片化和机器学习框架复杂化这两个方面的痛点。

它包含深度神经网络模型的优化、转换和推理等功能,支持多种训练框架的模型、常用深度学习算子、多种系统,以及卷积计算方式计算优化等。

AI框架知多少 | AidLux小课堂_第5张图片

MNN具有多种优势:一是轻量性,MNN文件文件小至几兆,可以轻松部署到移动设备以及各种嵌入式设备中;

二是通用性,它支持Tensorflow、Caffe、ONNX等主流模型文件格式,支持CNN、RNN、GAN等常用网络和大量Op,并且支持异构设备混合计算,例如动态导入GPU Op插件替代CPU Op的实现;

三是高性能,它不依赖任何第三方计算库,依靠大量手写汇编实现核心运算,iOS设备上可开启GPU加速(Metal),Android上提供了OpenCL、Vulkan、OpenGL三套方案,并针对主流GPU(Adreno和Mali)做了深度调优,且卷积、转置卷积算法高效稳定;

四是易用性,MNN拥有高效的图像处理模块,覆盖常见的形变、转换等需求,支持回调机制,可以在网络运行中插入回调,提取数据或者控制运行走向。

目前,MNN已经在阿里巴巴的手机淘宝、天猫、优酷、闲鱼、钉钉等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等多个场景。此外,其在菜鸟自提柜等IoT设备中也有若干应用。

AidLux平台上Yolov5在不同框架下推理

基于TFlite的yolov5s的模型测试

部署核心代码:

AI框架知多少 | AidLux小课堂_第6张图片

运行结果:

AI框架知多少 | AidLux小课堂_第7张图片

基于TNN的yolov5s的模型测试

部署核心代码:

AI框架知多少 | AidLux小课堂_第8张图片

运行结果:

 

基于MNN的yolov5s的模型测试

部署核心代码:

AI框架知多少 | AidLux小课堂_第9张图片

运算结果:

AI框架知多少 | AidLux小课堂_第10张图片

基于NCNN的yolov5s的模型测试

部署核心代码:

AI框架知多少 | AidLux小课堂_第11张图片

运算结果:

AI框架知多少 | AidLux小课堂_第12张图片

AidLux将主流AI深度学习框架及其运行库进行了整合优化,作为AI推理运算核心功能内置于平台之中。开发者们可以在AidLux上轻松进行不同框架下的AI应用项目开发和部署运行。

你可能感兴趣的:(AidLux,物联网,人工智能)