社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

计算机视觉深度学习训练推理框架

小白学视觉 • 2 月前 • 153 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

前言 本文整理了一些深度学习训练推理框架,涉及计算机视觉、语音、时序任务上的框架,共计20多种。

1训练框架

Pytorch

PyTorch是由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库,也是目前使用范围和体验感最好的一款深度学习框架。它的底层基于Torch,但实现与运用全部是由python来完成。该框架主要用于人工智能领域的科学研究与应用开发。PyTroch最主要的功能有两个,其一是拥有GPU张量,该张量可以通过GPU加速,达到在短时间内处理大数据的要求;其二是支持动态神经网络,可逐层对神经网络进行修改,并且神经网络具备自动求导的功能。

一些学习资料与文档:

  • Awesome-pytorch-list:包含了NLP,CV,常见库,论文实现以及Pytorch的其他项目,地址:https://github.com/bharathgs/Awesome-pytorch-list;
  • PyTorch官方文档:官方发布文档,地址:https://pytorch.org/docs/stable/index.html;
  • Pytorch-handbook:pytorch hand book,地址:https://github.com/zergtant/pytorch-handbook;
  • PyTorch官方社区:pytorch开发者社区,地址:https://discuss.pytorch.org/

MXNet

MXNet 是亚马逊维护的深度学习库,它拥有类似于 Theano 和 TensorFlow 的数据流图,为多 GPU 提供了良好的配置。MXNet结合了高性能、clean的代码,高级API访问和低级控制,是深度学习框架中的佼佼者。

优点

  1. 速度上有较大优势;
  2. 灵活编程,支持命令式和符号式编程模型;
  3. 多平台支持:可运行于多CPU、多GPU、集群、服务器、工作站甚至移动mobile phone;
  4. 多语言支持:支持包括C++、Python、R、Scala、Julia、Matlab和JavaScript语言;
  5. 性能优化:使用一个优化的C++后端引擎并行I/O和计算,无论使用哪种语言都能达到最佳性能;
  6. 云端友好;

缺点

  1. 社区较小;
  2. 入门稍微困难些;

Tensorflow

TensorFlow是由谷歌开源并维护,可用于各类深度学习相关的任务中。TensorFlow = Tensor + Flow,Tensor就是张量,代表N维数组;Flow即流,代表基于数据流图的计算,其特性如下:

  • 支持Python、JavaScript、C ++、Java、Go、C#、Julia和R等多种编程语言;
  • GPU,iOS和Android等移动平台上都可运行;
  • 入门学习难度大;
  • 静态图操作;

Caffe

经典的深度学习框架,由贾扬清在加州大学伯克利分校读博期间主导开发,以C++/CUDA为主,需要编译安装,有python和matlab接口,支持单机多卡、多机多卡训练(目前已推出caffe2),特性如下:

  • 以C++/CUDA/Python代码为主,速度快,性能高;
  • 代码结构清晰,可读性和可拓展性强。
  • 支持命令行、Python和Matlab接口,使用方便;
  • CPU和GPU之间切换方便,多GPU训练方便;
  • 工具丰富,社区活跃;
  • 代码修改难度较大,不支持自动求导;
  • 不适合非图像(结构化)数据;

CNTK

微软开源的深度学习框架,CNTK具有高度优化的内置组件,可以处理来自Python,C ++或BrainScript的多维密集或稀疏数据。能够实现CNN,DNN,RNN等任务,能够优化海量的数据集加载。

主要特性:

  • CNTK性能优于其他的开源框架;
  • 适合做语音任务,CNTK本就是微软语音团队开源的,自然更适合做语音任务,便于在使用RNN等模型以及时空尺度时进行卷积;

学习资料与教程:

入门介绍:https://github.com/Microsoft/CNTK/wiki

官方入门教程:https://github.com/Microsoft/CNTK/wiki/Tutorial

官方论坛:https://github.com/Microsoft/CNTK/issues

Keras

一个小白非常友好的框架,上手简单,已被集成到Tensorflow中。Keras在高层可以调用TensorFlow、CNTK、Theano,还有更多优秀的库也在被陆续支持中。Keras的特点是能够快速搭建模型,高度模块化,搭建网络非常简洁,易于添加新模块,是高效地进行科学研究的关键。

学习资料:

  • https://tensorflow.rstudio.com/keras/
  • https://github.com/rstudio/keras

PaddlePaddle

百度开源框架,支持动态图和静态图,中文文档写的非常清楚,上手比较简单;

官网链接:https://www.paddlepaddle.org.cn/

飞桨针对不同硬件环境,提供了丰富的支持方案,生态较为完善:

  1. Paddle Inference:飞桨原生推理库,用于服务器端模型部署,支持Python、C、C++、Go等语言,将模型融入业务系统的首选;
  2. Paddle Serving:飞桨服务化部署框架,用于云端服务化部署,可将模型作为单独的Web服务;
  3. Paddle Lite:飞桨轻量化推理引擎,用于 Mobile 及 IoT 等场景的部署,有着广泛的硬件支持;
  4. Paddle.js:使用 JavaScript(Web)语言部署模型,用于在浏览器、小程序等环境快速部署模型;
  5. PaddleSlim:模型压缩工具,获得更小体积的模型和更快的执行性能;
  6. X2 Paddle:辅助工具,将其他框架模型转换成Paddle模型,转换格式后可以方便的使用上述5个工具;

OneFlow

项目地址:https://github.com/Oneflow-Inc/oneflow

一流科技开源的深度学习框架,使用类似PyTorch的API编程模型使用全局视图API将模型缩放为n维并行/分布式执行使用静态图编译器加速/部署模型。主要有以下优势:

  1. 分布式性能(高效性)是深度学习框架的核心技术难点,OneFlow围绕性能提升和异构分布式扩展,采用静态编译和流式并行的核心理念和架构,解决了集群层面的内存墙挑战;
  2. OneFlow计算集群内部的通信和调度消耗,提高硬件利用率,加快模型训练速度,训练成本时间大幅缩减;
  3. 自动支持模型并行与流水并行:OneFlow天生支持数据并行、模型并行和混合并行,无需定制化开发;

MegEngine

项目地址:https://www.megengine.org.cn/

MegEngine 是旷视完全自主研发的深度学习框架,中文名为“天元”,是旷视 AI 战略的重要组成部分,负责 AI 三要素(算法,算力,数据)中的“算法”。MegEngine 的研发始于 2014 年,旷视内部全员使用。如今,旷视的所有算法均基于 MegEngine 进行训练和推理。

MegEngine 特性:

  1. 训练推理一体化:MegEngine 支持多种硬件平台( CPU,GPU,ARM ),不同硬件上的推理框架和 MegEngine 的训练框架无缝衔接;部署时无需做额外的模型转换,速度/精度和训练保持一致,有效解决了 AI 落地中“部署环境和训练环境不同,部署难”的问题。
  2. 动静合一:动态图易调试,静态图好部署。MegEngine 在静态图的基础上,逐渐加入支持完整动态图的功能,在动态模式下加速研发过程,无需改变模型代码一键切换至静态模式下的部署,为科研和算法工程师同时提供便利。
  3. 兼容并包:MegEngine 的顶层 API 基于 Python,采取了类似于 PyTorch 的风格。简单直接,易于上手,便于现有项目进行移植或整合。
  4. 灵活高效:MegEngine 底层的高性能算子库对于不同的硬件架构进行了深度适配和优化,并提供高效的亚线性内存优化策略,对于生产环境繁多的计算设备提供了极致的性能保证,高效易用的分布式训练实现能有效支持富有弹性的大规模训练。

DeepLearning4j

基于Java的深度学习框架,正式诞生于2013年,在2017年加入Eclipse基金会,由美国的Skymind开源并维护。

项目地址:https://github.com/eclipse/deeplearning4j

  • 支持神经网络模型的构建、模型训练和部署;
  • 能够与现有大数据生态进行无缝衔接(Hadoop、Spark等),也是可以原生态支持分布式模型训练的框架之一;
  • 支持多线程;
  • 跨平台(硬件:CUDA GPu,x86,ARM,PowerPC;操作系统:Windows/Mac/Linux/Android);

2推理框架

TensorRT

Nvidia自家的推理库,几乎是自动驾驶边缘部署领域的标配,更新也很频繁,issue反馈及时,社区维护较好;TensorRT的应用场景很多,服务端、嵌入式端、PC端;利用Pytorch、TF或者其他框架训练好的模型,转化为TensorRT的格式,然后利用TensorRT推理引擎去运行模型,从而提升模型在英伟达板子上的运行速度,速度提升的比例是比较可观的。

项目链接:https://github.com/NVIDIA/TensorRT

NCNN

腾讯开源的ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。

项目链接:https://github.com/Tencent/ncnn

TNN

Tencent Youtu Lab开源的高性能、轻量级神经网络推理框架。它还具有跨平台、高性能、模型压缩和代码裁剪等诸多突出优势。TNN框架在原有Rapidnet和ncnn框架的基础上进一步加强了对移动设备的支持和性能优化。同时,它借鉴了业界主流开源框架的高性能和良好的可扩展性特点,并扩展了对X86和NV GPU的支持。在手机上,TNN已被许多应用程序使用。作为腾讯云人工智能的基本加速框架,TNN为许多业务的实施提供了加速支持。

项目链接:https://github.com/Tencent/TNN

MNN

MNN是一个高效、轻量级的深度学习框架。它支持深度学习模型的推理和训练,在设备推理和训练方面具有业界领先的性能。目前,MNN已整合在淘宝、天猫、优酷、鼎语、仙语等30多个阿里巴巴应用中,涵盖直播、短视频捕获、搜索推荐、图片搜索、互动营销、股权分销、安全风险控制等70多个使用场景。此外,MNN还用于嵌入式设备,如物联网。

项目链接:https://github.com/alibaba/MNN

TensorFlow Lite

这是Google在2017年I/O开发者大会上开源的将TensorFlow训练好的模型迁移到Android App的框架,地址和一些学习资源如下:TensorFlow Lite使用Android Neural Networks API,默认调用CPU,目前最新的版本已经支持GPU。

项目地址:https://tensorflow.google.cn/lite/

Core ML

Core ML是2017年Apple公司在WWDC上与iOS11同时发布的移动端机器学习框架,底层使用Accelerate和Metal分别调用CPU和GPU。Core ML需要将你训练好的模型转化为Core ML model。

在一年之后,也就是2018年WWDC上,Apple发布了Core ML 2,主要改进就是通过权重量化等技术优化模型的大小,使用新的Batch Predict API提高模型的预测速度,以及容许开发人员使用MLCustomLayer定制自己的Core ML模型。

项目地址:https://developer.apple.com/documentation/coreml

Paddle-Mobile

Paddle-Mobile是2017年百度PaddlePaddle组织下的移动端深度学习开源框架,当时叫做mobile-deep-learning(MDL)。支持安卓和ios平台,CPU和GPU使用,提供量化工具。可以直接使用Paddle Fluid训练好的模型,也可以将Caffe模型进行转化,或者使用ONNX格式的模型。

项目地址:https://github.com/PaddlePaddle/paddle-mobile

caffe2

Caffe2是facebook在2017年发布的一个跨平台、轻量级、模块化和可扩展的深度学习框架。Caffe2以原Caffe为基础,在设计时考虑到了表达、速度和模块化。不仅仅支持Windows,Linux,Macos三大桌面系统,也支持移动端iOS,Android,可以说是集训练和推理于一身。

MACE

MACE是2018年小米在开源中国开源世界高峰论坛中宣布开源的移动端框架,以OpenCL和汇编作为底层算子,提供了异构加速可以方便在不同的硬件上运行模型,同时支持各种框架的模型转换。

Mobile AI Compute Engine (MACE)是一个专为移动端异构计算平台(支持Android, iOS, Linux, Windows)优化的神经网络计算框架。主要从以下的角度做了专门的优化:

  • 性能:代码经过NEON指令,OpenCL以及Hexagon HVX专门优化,并且采用 Winograd算法来进行卷积操作的加速。此外,还对启动速度进行了专门的优化。
  • 功耗:支持芯片的功耗管理,例如ARM的big.LITTLE调度,以及高通Adreno GPU功耗选项。
  • 系统响应:支持自动拆解长时间的OpenCL计算任务,来保证UI渲染任务能够做到较好的抢占调度, 从而保证系统UI的相应和用户体验。
  • 内存占用:通过运用内存依赖分析技术,以及内存复用,减少内存的占用。另外,保持尽量少的外部 依赖,保证代码尺寸精简。
  • 模型加密与保护:模型保护是重要设计目标之一。支持将模型转换成C++代码,以及关键常量字符混淆,增加逆向的难度。
  • 硬件支持范围:支持高通,联发科,以及松果等系列芯片的CPU,GPU与DSP(目前仅支持Hexagon)计算加速。CPU模式支持Android, iOS, Linux等系统。
  • 模型格式支持支持TensorFlow, Caffe和ONNX等模型格式。

项目地址:https://github.com/XiaoMi/mace-models

NNIE

NNIE 是 Neural Network Inference Engine 的简称,是海思媒体 SoC 中专门针对神经网 络特别是深度学习卷积神经网络进行加速处理的硬件单元,支持现有大部分的公开网 络,如 Alexnet、VGG16、Googlenet、Resnet18、Resnet50 等分类网络,Faster R- CNN、YOLO、SSD、RFCN 等检测网络,以及 SegNet、FCN 等场景分割网络。目前 NNIE 配套软件及工具链仅支持以 Caffe 框架,使用其他框架的网络模型需要转化 为 Caffe 框架下的模型。该框架在海思系列芯片上性能极佳,很大的缺陷就在于仅限于海思系列芯片。

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20 个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/178548
 
153 次点击