OpenMMLab 2.0:新架构、新算法、新生态

简介: OpenMMLab 2.0:新架构、新算法、新生态

OpenMMLab 2.0:新架构、新算法、新生态
2022 年 9 月 1 日,2022 世界人工智能大会(WAIC)在上海隆重开幕,上海人工智能实验室发布了“OpenXLab 浦源”人工智能开源开放体系。

作为其中重要项目之一,OpenMMLab 2.0 浦视视觉算法体系也正式亮相,展示了新架构、新算法、新生态,迎来开源后最大版本升级!

系列直播
为了向大家更好地介绍 OpenMMLab 2.0 的技术升级,我们筹划了系列直播,连续 3 天,13 个算法库的研究员亲临,你所有的疑问,这里都能解答!欢迎大家在开播时间进入 OpenMMLab 知乎和 B 站直播间观看直播~

OpenMMLab 知乎直播间

OpenMMLab B 站直播间

具体直播安排见下图:

开发维护计划
社区力量是 OpenMMLab 生态中至关重要的部分,OpenMMLab 2.0 还处于初期阶段,我们欢迎社区和我们一同完善。我们有如下开发维护计划:

公测活动
OpenMMLab 2.0 公测活动期待你的参与!

我们将提供:新功能优先体验/一对一答疑与技术支持/优先提交 PR 获取荣誉奖励 十分欢迎:选择感兴趣或常用的算法库最新版试用/提交使用反馈或是提交问题 issue/pr

点击下方链接,填写问卷申请,通过审核的社区用户将受邀加入 OpenMMLab 2.0 公测用户群。

OpenMMLab 2.0 公测活动申请问卷

总体介绍
OpenMMLab 首次发布于 2018 年,当时算法开源还没有蔚然成风,复现靠运气,对比凭人品,PyTorch 生态也远不足以抗衡 TensorFlow。模块化设计、算法支持丰富的检测算法库 MMDetection 的出现,为这个研究领域带来了新的气息。自此之后,越来越多的标准化算法工具箱涌现出来,开源也逐渐成为研究者们理所当然的事情。从 2018 年到 2021 年,OpenMMLab 也不断推出新的算法框架,覆盖更多的研究领域和算法,从一枝独秀到百花齐放,形成了 OpenMMLab 1.0 版本。代码质量和易用性始终是我们关注的重点,形成了良好的开发体验和口碑,被全球 100 多个国家和地区的开发者使用。

经过一年的潜心研发,OpenMMLab 2.0 正式亮相。我们发布了新一代训练架构 MMEngine,以统一的执行引擎,灵活支持了各算法库中 20 个以上的计算机视觉任务和半监督、自监督等丰富的训练流程。在此基础上,OpenMMLab 2.0 还新增了 MMRotate,MMFewshot,MMFlow,MMHuman3D,MMSelfSup,MMRazor 六个算法库和 MMDeploy 模型部署框架,实现了从模型训练、部署到推理的无缝衔接,打通了 AI 落地的最后一公里。OpenMMLab 2.0 还对训练和推理芯片进行了广泛适配,并在新一代核心架构设计之初就将多训练芯片的支持纳入考量,促进了国产软硬件生态共同发展。

新架构
基于 MMEngine,OpenMMLab 2.0 的核心架构焕然一新,具有通用、统一、灵活三大特点。

通用
OpenMMLab 2.0 中的 20 多个算法任务都基于一个强大且通用的训练器。和 OpenMMLab 1.0 中的训练器相比,新的训练器以统一的方式实现了数据、模型、评测等组件的构造流程供各算法库调用,以更加可拓展的方式支持了不同芯片环境(CPU,GPU,Apple M1,MLU等)下的分布式和非分布式训练,并支持了一些最新的大模型训练技术如 FullyShardedDataParallel。下游的各种算法库都可以直接使用这个训练器,在简化代码的同时,通过依赖最新的 MMEngine 享受最新的训练技术和芯片支持。

同时,这个通用的训练器还支持被 OpenMMLab 体系外的算法库单独使用,它可以做到以少量代码训练不同任务:例如仅使用 80 行代码训练 imagenet(而 pytorch example 需要 400行),100 行代码训练 CLIP(OpenCLIP 中有上千行训练代码) ,还能轻松兼容当前流行的算法库中的模型,例如 TIMM,TorchVision 和 Detectron2。

统一
OpenMMLab 1.0 中的各算法库分别支持了感知、生成、预训练等 30 多个算法方向,每个算法方向中还有各种不同的算法和训练范式,各算法库也因此在接口上存在细微差别,难以兼容,使得支持新芯片和训练技术的开发成本和算法库数量成正比。

在 OpenMMLab 2.0 中,我们将不同算法的训练流程统一拆解成了数据、数据变换、模型、评测、可视化器等抽象,并且将这些接口进行了统一设计,在 MMEngine 和 MMCV 中实现了若干基类来定义它们的接口。为了保持架构的开放性,上述关键抽象都在 MMEngine 中有一个对应的注册器进行管理,使得符合接口定义的扩展模块只要被正确注册进了注册器中,就可以通过配置文件进行使用。OpenMMLab 2.0 中的各个算法库都继承了这些注册器,并且基于 MMEngine 的基类和接口约定重构了相关组件,拥有了统一的训练/测试/可视化抽象、统一的数据接口和数据流。示意如下:

同时,OpenMMLab 2.0 中的各个算法库也继承了 MMEngine 中的注册器,使得一个符合接口约定的拓展模块只需要被实现一次,就可以被 OpenMMLab 2.0 中的其他算法库使用。例如,我们可以基于一份代码搞定所有任务的轻量化,使得 MMRazor 1.x 可以优化 36% 的代码量 ;训练芯片等上下游也只需一次性对接 MMEngine 接口,便可适配多个算法库 。

灵活
在 OpenMMLab 2.0 中,我们对算法训练流程进行了更细粒度的模块化设计,使得整个训练流程中有了更多可定制化的空间,包括在训练器中增加更多抽象模块、更多可自定义的插入点,和组件之间的信息交流渠道 MessageHub 等。上述贴心的设计提供了一个“乐高”式的训练流程 ,用户可以像拼乐高一样,随心所欲地“插拔”各种模块,实现训练流程的定制化,例如:

根据迭代数、 loss 和评测结果等动态调整的训练流程、优化策略和数据增强策略,实现 early stopping,ReduceLROnPlateau 等
任意形式的模型权重平均,如 Exponential Momentum Average (EMA) 和 Stochastic Weight Averaging (SWA)
训练过程中针对任意数据和任意节点的灵活可视化和日志控制
逐参数的优化配置
混合精度训练的灵活控制
新的架构除了通用、统一、灵活等三大亮点,还针对各个模块进行了精心设计和优化(设计的时间和开发时间五五开),平衡兼顾了简单性、扩展性和效率。在代码可读性和文档方面,我们对 MMEngine 的要求也比以往的各个算法库都要严格,希望大家在阅读 MMEngine 的源码时还能有所收获(copy 的时候记得 star),也欢迎大家试用 MMEngine。

新算法
OpenMMLab 2.0 中,我们还发布了:

6 个新的算法库
MMRotate 将目标检测从水平框拓展到旋转框,为场景文字、遥感影像、自动驾驶等领域的应用打下了基础,为学术界和产业界提供了高效强大的基准模型。

MMFlow 高质量地支持了主流的光流估计算法模型,使得大量光流估计模型开箱即用,支撑了光流估计在动作识别和视频超分辨率等视频任务中的广泛应用,促进社区的发展。

MMHuman3D 为人体参数化模型的研发提供了一个统一的测试基准,并且以统一的数据结构支持了 16 个常用数据集,助力人体参数化模型的学术研究和应用研发。

MMSelfSup 支持了多种自监督学习任务和一系列前沿算法,为自监督学习方向的研究提供了统一的基准。

MMFewShot 针对当下流行的少样本分类与检测算法,提供了统一的训练、推理、评估的算法框架,解决了由于样本选取的随机性,不同视觉任务中的少样本学习方法难以统一评估比较的难题。

MMRazor整合了主流的模型轻量化算法,包括模型结构搜索,模型剪枝与蒸馏,同时支持各类轻量化算法灵活组合应用于 OpenMMLab 其他算法库中,为模型在实际场景的使用提供了解决方案。

1 个模型部署库
MMDeploy 建立了一个统一高效的模型转换框架,并实现了高度可扩展的组件式 SDK,支持了 7 种后端推理引擎,支持将 OpenMMLab 各算法库训练的模型一键式部署到硬件设备上并高效运行。为人工智能应用部署建立了一套适应全场景、高性能的部署框架,可高效适配各类芯片硬件,满足终端用户对人工智能应用的需求。

CV 技术盛宴,期待你的参与!

github.com/open-mmlab​…

相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
3086 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
机器学习/深度学习 运维 监控
实时异常检测实战:Flink+PAI 算法模型服务化架构设计
本文深入探讨了基于 Apache Flink 与阿里云 PAI 构建的实时异常检测系统。内容涵盖技术演进、架构设计、核心模块实现及金融、工业等多领域实战案例,解析流处理、模型服务化、状态管理等关键技术,并提供性能优化与高可用方案,助力企业打造高效智能的实时异常检测平台。
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
3276 11
架构学习:7种负载均衡算法策略
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
646 6
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
6705 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
423 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
1456 4
|
存储 算法 安全
分布式系统架构1:共识算法Paxos
本文介绍了分布式系统中实现数据一致性的重要算法——Paxos及其改进版Multi Paxos。Paxos算法由Leslie Lamport提出,旨在解决分布式环境下的共识问题,通过提案节点、决策节点和记录节点的协作,确保数据在多台机器间的一致性和可用性。Multi Paxos通过引入主节点选举机制,优化了基本Paxos的效率,减少了网络通信次数,提高了系统的性能和可靠性。文中还简要讨论了数据复制的安全性和一致性保障措施。
1226 1
|
机器学习/深度学习 算法 机器人
【博士每天一篇文献-算法】改进的PNN架构Lifelong learning with dynamically expandable networks
本文介绍了一种名为Dynamically Expandable Network(DEN)的深度神经网络架构,它能够在学习新任务的同时保持对旧任务的记忆,并通过动态扩展网络容量和选择性重训练机制,有效防止语义漂移,实现终身学习。
690 9

热门文章

最新文章