上一篇文章中总结了当前深度学习视觉算法的主流开源库,详见[开源深度学习视觉算法库总结对比](https://blog.csdn.net/unique_zhao/article/details/147050259?spm=1011.2415.3001.10575&sharefrom=mp_manage_link)。 总结后可以看出**OpenMMLab和PaddlePaddle系列可以算是内容最为全面丰富的两个库,例如分类、检测、分割等功能都会单独作为一个库来使用,本篇将具体从多个维度对两个开源库进行对比**。
目录
OpenMMLab与PaddlePaddle算法库内容对比
官网链接:
OpenMMLab:https://openmmlab.com/codebase
PaddlePaddle:https://www.paddlepaddle.org.cn/
OpenMMlab
概览
MMLab总体由4个部分构成:
- Deep Learning Framework:是基于pytorch框架的
- Foundational Libraries:基础库,包含MMCV与MMEngine,其各个视觉库模块的开发都是基于这两个底层库
- Computer Vision Libraries:具体的视觉任务库,例如分类、检测、分割等,每个库中基于其Foundational Libraies集成了丰富的模型
- Deployment:部署库,Computer Vision Libraries中训练好的模型,可以通过Deployment进行部署,例如转为onnx格式等
MMLab包含的子库
如果你了解过深度学习视觉,那么你对mmdection一定不会陌生,而mmdetection只是MMLab在目标检测方向的子模块,也是最初打出名声的核心模块,不过,MMLab当前的的内容远不止目标检测,还有分类、分割、OCR、旋转目标检测、3D目标检测、目标跟踪等等,如上图所示,MMLab有30+计算机视觉库,下面总结了MMLab github中展示的star数排名前30的子库介绍:
序号 | 子库名称 | 描述 | 编程语言 | Fork 数 | Star 数 |
---|---|---|---|---|---|
1 | mmdetection | OpenMMLab Detection Toolbox and Benchmark OpenMMLab检测工具箱和基准测试 | Python | 9.6k | 31k |
2 | Amphion | Amphion (/æmˈfaɪən/) is a toolkit for Audio, Music, and Speech Generation. Its purpose is to support reproducible research and help junior researchers and engineers get started in the field of audio, music, and speech generation research and development. Amphion是一个用于音频、音乐和语音生成的工具包。其目的是支持可复现的研究,并帮助初级研究人员和工程师在音频、音乐和语音生成领域的研究和开发中入门 | Python | 697 | 8.9k |
3 | mmsegmentation | OpenMMLab Semantic Segmentation Toolbox and Benchmark. OpenMMLab语义分割工具箱和基准测试 | Python | 2.7k | 8.8k |
4 | mmagic | OpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic 🪄: Generative-AI (AIGC), easy-to-use APIs, awesome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc. OpenMMLab多模态高级、生成式和智能创作工具箱。解锁魔法:生成式人工智能(AIGC)、易于使用的API、强大的模型库、扩散模型,用于文本到图像生成、图像/视频修复/增强等 | Jupyter Notebook | 1.1k | 7.1k |
5 | mmpose | OpenMMLab Pose Estimation Toolbox and Benchmark. OpenMMLab姿态估计工具箱和基准测试 | Python | 1.3k | 6.3k |
6 | mmcv | OpenMMLab Computer Vision Foundation OpenMMLab计算机视觉基础库 | Python | 1.7k | 6.1k |
7 | mmdetection3d | OpenMMLab’s next-generation platform for general 3D object detection. OpenMMLab下一代通用3D目标检测平台 | Python | 1.6k | 5.7k |
8 | OpenPCDet | OpenPCDet Toolbox for LiDAR-based 3D Object Detection. 基于激光雷达的3D目标检测工具箱 | Python | 1.3k | 4.9k |
9 | mmaction2 | OpenMMLab’s Next Generation Video Understanding Toolbox and Benchmark OpenMMLab下一代视频理解工具箱和基准测试 | Python | 1.3k | 4.5k |
10 | mmocr | OpenMMLab Text Detection, Recognition and Understanding Toolbox OpenMMLab文本检测、识别和理解工具箱 | Python | 757 | 4.5k |
11 | mmtracking | OpenMMLab Video Perception Toolbox. It supports Video Object Detection (VID), Multiple Object Tracking (MOT), Single Object Tracking (SOT), Video Instance Segmentation (VIS) with a unified framework. OpenMMLab视频感知工具箱。它支持视频目标检测(VID)、多目标跟踪(MOT)、单目标跟踪(SOT)、视频实例分割(VIS)的统一框架 | Python | 598 | 3.7k |
12 | mmpretrain | OpenMMLab Pre-training Toolbox and Benchmark OpenMMLab预训练工具箱和基准测试 | Python | 1.1k | 3.6k |
13 | mmselfsup | OpenMMLab Self-Supervised Learning Toolbox and Benchmark OpenMMLab自监督学习工具箱和基准测试 | Python | 436 | 3.2k |
14 | mmyolo | OpenMMLab YOLO series toolbox and benchmark. Implemented RTMDet, RTMDet-Rotated, YOLOv5, YOLOv6, YOLOv7, YOLOv8, YOLOX, PPYOLOE, etc. OpenMMLab YOLO系列工具箱和基准测试。实现了RTMDet、RTMDet-Rotated、YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOX、PPYOLOE等 | Python | 565 | 3.1k |
15 | mmskeleton | A OpenMMLAB toolbox for human pose estimation, skeleton-based action recognition, and action synthesis. 一个OpenMMLab工具箱,用于人体姿态估计、基于骨架的动作识别和动作合成 | Python | 1k | 3k |
16 | mmdeploy | OpenMMLab Model Deployment Framework OpenMMLab模型部署框架 | Python | 659 | 2.9k |
17 | mmgeneration | MMGeneration is a powerful toolkit for generative models, based on PyTorch and MMCV. MMGeneration是一个基于PyTorch和MMCV的强大生成模型工具包 | Python | 232 | 2k |
18 | mmrotate | OpenMMLab Rotated Object Detection Toolbox and Benchmark OpenMMLab旋转目标检测工具箱和基准测试 | Python | 579 | 2k |
19 | mmaction | An open-source toolbox for action understanding based on PyTorch 一个基于PyTorch的动作理解开源工具箱 | Python | 350 | 1.9k |
20 | mmrazor | OpenMMLab Model Compression Toolbox and Benchmark. OpenMMLab模型压缩工具箱和基准测试 | Python | 236 | 1.6k |
21 | Multimodal-GPT | 多模态GPT | Python | 131 | 1.5k |
22 | mmhuman3d | OpenMMLab 3D Human Parametric Model Toolbox and Benchmark OpenMMLab 3D人体参数化模型工具箱和基准测试 | Python | 145 | 1.3k |
23 | mmfashion | Open-source toolbox for visual fashion analysis based on PyTorch 基于PyTorch的视觉时尚分析开源工具箱 | Python | 287 | 1.3k |
24 | mmengine | OpenMMLab Foundational Library for Training Deep Learning Models OpenMMLab训练深度学习模型的基础库 | Python | 384 | 1.3k |
25 | playground | A central hub for gathering and showcasing amazing projects that extend OpenMMLab with SAM and other exciting features. 一个中心枢纽,用于收集和展示通过SAM和其他令人兴奋的功能扩展OpenMMLab的惊人项目 | Python | 126 | 1.2k |
26 | OpenMMLabCourse | OpenMMLab course index and stuff OpenMMLab课程索引及相关资料 | Jupyter Notebook | 137 | 1.1k |
27 | mmflow | OpenMMLab optical flow toolbox and benchmark OpenMMLab光流工具箱和基准测试 | Python | 115 | 1k |
28 | PIA | [CVPR 2024] PIA, your Personalized Image Animator. Animate your images by text prompt, combing with Dreambooth, achieving stunning videos. PIA,你的个性化图像动画生成器,利用文本提示将图像变为奇妙的动画 | Python | 75 | 954 |
29 | PowerPaint | [ECCV 2024] PowerPaint, a versatile image inpainting model that supports text-guided object inpainting, object removal, image outpainting and shape-guided object inpainting with only a single model. 一个高质量多功能的图像修补模型,可以同时支持插入物体、移除物体、图像扩展、形状可控的物体生成,只需要一个模型 | Python | 54 | 857 |
30 | mmfewshot | OpenMMLab FewShot Learning Toolbox and Benchmark OpenMMLab少样本学习工具箱和基准 | Python | 120 | 723 |
子库总结
- 从star数排名靠前的子库可以看出,MMLab的最火的3个方面在于检测(mmdetection)、音频生成(Amphion)、分割(mmsegmentation)
- star数可以反映研究者或者开发者对该库的使用和认可情况,后面star数较少的子库有一些mmlab社区开发者们的单个最新算法的发布,以mm开头的基本都是集成库
PaddlePaddle
Paddle概览
包含的子库
子库名称 | 描述 | 编程语言 | fork数 | star数 |
---|---|---|---|---|
PaddleOCR | 基于 PaddlePaddle 的强大多语言 OCR 工具包,支持 80+ 种语言识别,提供数据标注和合成工具,支持在服务器、移动设备、嵌入式和物联网设备之间的训练和部署 | Python | 8.1k | 48k |
Paddle | PaddlePaddle 核心框架,支持深度学习和机器学习的高性能单机、分布式训练和跨平台部署 | C++ | 5.7k | 23k |
PaddleDetection | 基于 PaddlePaddle 的目标检测工具包,支持目标检测、实例分割、多目标跟踪和实时多人关键点检测 | Python | 2.9k | 13k |
PaddleHub | 基于 PaddlePaddle 的预训练模型工具包,包含 400+ 模型,涵盖图像、文本、音频、视频和跨模态,支持简单推理和部署 | Python | 2.1k | 13k |
PaddleNLP | 易于使用且功能强大的 LLM 和 SLM 库,拥有出色的模型库 | Python | 3k | 12k |
PaddleSpeech | 易于使用的语音工具包,包含自监督学习模型、带标点的 SOTA/流式 ASR、带文本前端的流式 TTS、说话人验证系统、端到端语音翻译和关键词检测 | Python | 1.9k | 12k |
PaddleSeg | 易于使用的图像分割库,支持语义分割、交互式分割、全景分割、图像抠图、3D 分割等多种实际任务 | Python | 1.7k | 9k |
PaddleGAN | PaddlePaddle GAN 库,包含一阶运动转移、Wav2Lip、图片修复、图像编辑、照片转卡通、图像风格迁移等应用 | Python | 1.3k | 8k |
Paddle-Lite | PaddlePaddle 高性能深度学习端侧推理引擎,适用于移动和边缘设备 | C++ | 1.6k | 7.1k |
models | PaddlePaddle 官方维护的模型库,涵盖计算机视觉、自然语言处理、语音、推荐、时间序列等领域 | Python | 2.9k | 6.9k |
ERNIE | ERNIE 家族预训练模型的官方实现,涵盖语言理解与生成、多模态理解与生成等主题 | Python | 1.3k | 6.4k |
PaddleClas | 由 PaddlePaddle 提供支持的视觉分类和识别工具库 | Python | 1.2k | 5.6k |
PaddleX | 基于 PaddlePaddle 的一站式开发工具 | Python | 1k | 5.3k |
VisualDL | PaddlePaddle 深度学习可视化工具 | HTML | 629 | 4.8k |
PaddleRec | 大规模推荐算法库,包含推荐系统经典及最新算法 | Python | 646 | 3.9k |
PARL | 用于强化学习的高性能分布式训练框架 | Python | 821 | 3.3k |
FastDeploy | 易于使用且快速的深度学习模型部署工具包,支持云、移动和边缘设备,涵盖图像、视频、文本和音频等多种场景 | C++ | 477 | 3.1k |
PaddleVideo | 基于 PaddlePaddle 的视频理解工具包,支持视频数据标注工具、轻量级动作识别模型及视频标签和运动检测等应用 | Python | 383 | 1.6k |
PaddleSlim | PaddlePaddle 模型压缩和架构搜索工具库 | Python | 351 | 1.6k |
PGL | 基于 PaddlePaddle 的高效灵活图学习框架 | Python | 312 | 1.6k |
PaddleHelix | “螺旋桨”生物计算工具集,支持大规模表示学习和多任务深度学习 | Python | 229 | 1.1k |
Paddle.js | PaddlePaddle 的 Web 项目,支持在浏览器中运行深度学习模型 | JavaScript | 144 | 1k |
Serving | PaddlePaddle 服务化部署框架,支持高性能模型部署 | C++ | 251 | 904 |
Paddle2ONNX | PaddlePaddle 模型转换为 ONNX 格式的工具 | C++ | 175 | 790 |
RocketQA | 基于 PaddlePaddle 的信息检索和问答系统,支持中英文 SOTA 模型 | Python | 126 | 775 |
X2Paddle | PaddlePaddle 深度学习模型转换工具 | Python | 162 | 750 |
Knover | 基于 PaddlePaddle 的大规模开放领域知识引导对话系统。 | Python | 672 | 130 |
PaddleMIX | Paddle 多模态集成与探索,支持主流多模态任务,包括大规模多模态预训练模型和扩散模型工具箱。 | Python | 610 | 201 |
Quantum | 量子计算相关项目。 | Jupyter Notebook | 608 | 182 |
Parakeet | Paddle 并行文本到语音工具包(支持 Tacotron2、Transformer TTS、FastSpeech2/FastPitch、SpeedySpeech、WaveFlow 和 Parallel WaveGAN)。 | Python | 602 | 83 |
Paddle3D | 基于 PaddlePaddle 的 3D 计算机视觉开发工具包。支持点云目标检测、分割和单目 3D 目标检测模型。 | Python | 600 | 145 |
PaddleYOLO | PaddlePaddle 实现的 YOLO 系列,包括 PP-YOLOE+、RT-DETR、YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv10、YOLOv11、YOLOX、YOLOv5u、YOLOv7u、YOLOv6Lite、RTMDet 等。 | Python | 596 | 142 |
FlyCV | 用于处理计算机视觉任务的高性能库。 | C++ | 588 | 63 |
Anakin | 高性能跨平台推理引擎,可在 x86-cpu、arm、nv-gpu、amd-gpu、bitmain 和 cambricon 设备上运行。 | C++ | 533 | 133 |
PaddleTS | 基于 PaddlePaddle 的深度时间序列建模工具,包括 TSDataset、分析、转换、模型、AutoTS 和集成等功能模块,支持时间序列预测、表示学习和异常检测等任务。 | Python | 515 | 122 |
PaddleFL | PaddlePaddle 中的联邦深度学习。 | Python | 502 | 121 |
VIMER | 视觉预训练基础模型仓库。 | Python | 498 | 92 |
PaddleFleetX | 飞桨大模型开发套件,提供大语言模型、跨模态大模型、生物计算大模型等领域的全流程开发工具链。 | Python | 466 | 164 |
PaddleRS | 基于 PaddlePaddle 的遥感工具包。 | Python | 428 | 94 |
ERNIE-SDK | ERNIE Bot Agent 是一个大型语言模型(LLM)代理框架,由 ERNIE Bot 的先进能力和百度 AI Studio 的平台资源提供支持。 | Jupyter Notebook | 363 | 53 |
PaddleSpatial | 基于 PaddlePaddle 的时空计算工具。 | GLSL | 352 | 172 |
PaddleScience | 基于 PaddlePaddle 的 AI 驱动科学计算应用开发 SDK 和库。 | Python | 341 | 199 |
PaddleCloud | PaddlePaddle Docker 镜像和 K8s 操作符,供 PaddleOCR/Detection 开发人员在公有云或私有云上使用。 | Go | 291 | 78 |
MetaGym | 强化学习/元强化学习环境的集合。 | Python | 290 | 60 |
PASSL | 包含图像自监督算法(如 SimCLR、MoCo v1/v2、BYOL、CLIP 等)和基础视觉算法(如 Vision Transformer、DEiT 等)。 | Python | 282 | 65 |
InterpretDL | 基于飞桨的深度学习模型可解释性算法库。 | Python | 250 | 40 |
PaddleRobotics | 基于 Paddle 的机器人开源算法库,包括人机交互、复杂运动控制、环境感知、SLAM 定位和导航等开源部分。 | Python | 227 | 56 |
TrustAI | 飞桨可信 AI。 | Python | 187 | 37 |
PALM | 一个快速、灵活、可扩展且易于使用的 NLP 大规模预训练和多任务学习框架。 | Python | 183 | 30 |
ElasticCTR | 基于 Kubernetes 的企业级推荐系统开源解决方案,融合高精度 CTR 模型和大规模分布式训练能力。 | Python | 182 | 44 |
AutoDL | 自动深度学习工具。 | Python | 157 | 29 |
PLSC | Paddle 大规模分类工具,支持 ArcFace、CosFace、PartialFC、数据并行 + 模型并行。模型包括 ResNet、ViT、Swin、DeiT、CaiT、FaceViT、MoCo、MAE 等。 | Python | 152 | 34 |
paddle库总结
- 飞桨github库中包含的内容非常丰富,除了深度学习视觉任务相关库,还涵盖量子计算、联邦学习、推理引擎、推荐系统、强化学习等;
- 通过概览中其官网主推的几项功能,以及子库star数排名前列的库可以看出,paddle在OCR(PaddleOCR)和目标检测(PaddleDetection)方面具备优势
针对单独模块的对比
针对具体的子任务,分析两个库的能力,会从多个详细维度进行对比,并在最后从以下几个维度考虑选型:
- 模型库更新速度
- 易用性
- 二次开发便利性
- 其他
目标检测
针对 MMDetection(OpenMMLab)和 PaddleDetection(百度飞桨)两个目标检测库的多维度对比分析:
核心维度对比
对比维度 | MMDetection | PaddleDetection |
---|---|---|
框架依赖 | PyTorch | PaddlePaddle |
开源社区 | 🔸国际社区活跃(GitHub stars: 25k+) | 中文社区主导(GitHub stars: 12k+),国内企业支持 |
模型丰富度 | 🔸支持 100+模型(Faster R-CNN、YOLO系列、DETR、Mask R-CNN等) | 支持 50+模型(PP-YOLO系列、Faster R-CNN、YOLOX、CenterNet等) |
预训练模型 | 基于COCO、VOC等公开数据集,模型精度高 | 提供大量 工业级优化模型(如PP-YOLO、PP-PicoDet,PP开头的都是自研的模型),侧重速度和部署性能 |
文档与教程 | 英文文档为主,技术细节详细但需一定学习成本 | 中文文档完善,案例丰富(含产业实践教程) |
部署支持 | 依赖TorchScript/ONNX,需配合第三方工具(如TensorRT、ONNX) | 🔸内置 全流程部署工具链(Paddle Inference、Paddle Lite、Paddle Serving) |
灵活性 | 🔸模块化设计,支持高度自定义模型结构 | 配置较为固定,扩展需深入PaddlePaddle生态 |
训练效率 | 分布式训练支持完善,多GPU训练性能优秀 | 分布式训练优化(支持超大规模数据),内置混合精度训练加速 |
推理速度 | 依赖硬件和模型优化(如TensorRT加速) | 原生推理性能强,轻量化模型(PP-PicoDet)在移动端表现突出 |
中文支持 | 社区讨论以英文为主、国际化 | 中文文档、中文案例、中文社区(飞桨官方论坛、AI Studio学习平台) |
多任务扩展 | 需配合MM系列其他库(如MMSeg、MMTracking) | 🔸内置多任务支持(检测+跟踪+关键点),与其他Paddle套件(如PaddleSeg)无缝集成 |
政策与生态 | 国际通用,无特殊限制 | 符合国内数据安全与国产化需求,适配国产硬件(如昇腾、飞腾) |
其他辅助维度对比
对比维度 | MMDetection | PaddleDetection |
---|---|---|
模型压缩与优化 | 依赖第三方工具(如NNI、PyTorch原生量化) | 🔸内置 模型压缩工具(PaddleSlim),支持量化、剪枝、蒸馏等一体化优化 |
数据增强功能 | 提供丰富的数据增强方法(MixUp、Mosaic等),可灵活配置 | 内置产业级数据增强(如AutoAugment优化版),支持自定义但需适配Paddle数据格式 |
可视化工具 | 依赖第三方(如TensorBoard) | 🔸内置 VisualDL,支持训练日志、模型结构、数据分布可视化 |
产业实践案例 | 学术论文复现为主,产业案例较少 | 🔸提供 安防、医疗、遥感等产业级解决方案(如PCB缺陷检测、交通流量统计) |
跨平台兼容性 | 支持Linux/Windows,依赖PyTorch生态 | 🔸支持Linux/Windows/Android/iOS,国产OS(如麒麟)适配更优 |
模型训练门槛 | 需要熟悉PyTorch和MMLab配置系统 | 🔸低代码开发支持(AI Studio云端平台),适合初学者快速上手 |
场景化选择建议
1. 学术研究/前沿探索/模型更新速度
- 推荐MMDetection:
- 优势:模型丰富(支持DETR等Transformer模型),模块化设计便于复现论文、调整模型结构。
- 场景:目标检测算法创新、多任务联合研究(检测+分割)。
2. 工业部署/国产化需求
- 推荐PaddleDetection:
- 优势:预训练模型针对部署优化(如PP-YOLO-E+),支持国产硬件,提供从训练到端侧推理的全流程工具链。
- 场景:安防监控、移动端APP、国产服务器部署。
3. 中文团队/快速落地
- 推荐PaddleDetection:
- 优势:中文文档和社区支持完善,提供产业级案例和AI Studio免费算力资源。
- 场景:中小企业快速开发、教育领域教学实践。
4. 二次开发/国际协作
- 推荐MMDetection:
- 优势:模块化设计,便于开发者自定义,社区活跃,易于与国际团队协作。
- 场景:跨国项目、开源社区贡献、复杂模型改造。
5. 模型效果
- 准确性上推荐MMDetection
- 效率和部署上推荐PaddleDetection
总结
- 需要注意,开源集成类算法库的优势在于多种任务、模型的集成,缺乏及时性,若要关注最新的算法模型,则需要直接去论文作者发布的算法库。例如MMLab中如果将repo按最新日期排序,则可以看到多篇最新发布的功能或论文,都是单独的库
- 当涉及不同任务时,可以考虑结合各自的优势,例如OCR任务使用Paddle,检测分割任务使用MMLab
- 如果考虑计算机视觉任务任务外更丰富的功能,可以借助PaddlePaddle