EasyCV开源|开箱即用的视觉自监督+Transformer算法库

简介:EasyCV是阿里巴巴开源的基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具。EasyCV在阿里巴巴集团内支撑了搜索、淘系、优酷、飞猪等多个BU业务,同时也在阿里云上服务了若干企业客户,通过平台化组件的形式,满足客户自定定制化模型、解决业务问题的需求。

作者 | 临在、谦言
来源 | 阿里开发者公众号

一 导读

近年来,自监督学习和Transformer在视觉领域大放异彩。图像自监督预训练极大降低了图像任务繁重的标注工作,节省大量人力成本,而transormer技术在NLP领域的巨大成功也为CV模型效果进一步提升提供了非常大的想象空间。为推进自监督学习和视觉Transformer在阿里集团、阿里云上的落地,阿里云机器学习平台PAI 打造了 EasyCV all-in-one视觉建模工具,搭建了丰富完善的自监督算法体系,提供了效果SOTA的视觉Transformer预训练模型,modelzoo覆盖图像自监督训练、图像分类、度量学习、物体检测、关键点检测等领域,并且面向开发者提供开箱即用的训练、推理能力,同时在训练/推理效率上也做了深度优化。此外,EasyCV对阿里灵杰系统做了全面兼容,用户可以非常方便的在阿里云环境下使用EasyCV的全部功能。

在经过阿里内部业务充分打磨以后,我们希望把EasyCV框架推向社区,进一步服务广大的CV算法开发者以及爱好者们,使其能够非常快速方便的体验最新的图像自监督以及transformer技术,并落地到自己的业务生产当中。

EasyCV背后的算法框架如何设计?开发者可以怎么使用?未来有哪些规划?今天一起来深入了解。

二 什么是EasyCV

EasyCV是阿里巴巴开源的基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具。EasyCV在阿里巴巴集团内支撑了搜索、淘系、优酷、飞猪等多个BU业务,同时也在阿里云上服务了若干企业客户,通过平台化组件的形式,满足客户自定定制化模型、解决业务问题的需求。

项目开源地址:GitHub - alibaba/EasyCV: An all-in-one toolkit for computer vision

1 项目背景

近两年,基于无标注训练数据的图像自监督预训练技术发展迅猛,在各个视觉任务的效果上已经媲美甚至超过需大量标注的有监督训练的效果;另一方面,在NLP领域大获成功的Transformer技术在各个图像任务上进一步刷新SOTA效果,其应用呈现出井喷式的爆发。作为二者的结合,自监督视觉Transformer的预训练也应运而生。

业界自监督学习和视觉Transformer算法技术更新迭代非常快,同时也给CV算法开发者带来了诸多困扰,比如相关开源代码零散,实现方式和风格参差不齐导致学习和复现成本过高,训练、推理性能低下等等。阿里云PAI团队通过搭建灵活易用的算法框架EasyCV,体系化地沉淀SOTA的自监督算法和Transformer预训练模型,封装统一、简洁易用的接口,针对自监督大数据训练方面进行性能优化,方便用户尝试最新的自监督预训练技术和Transformer模型,推动在业务上的应用和落地。

此外,基于PAI团队多年积累的深度学习训练、推理加速技术,在EasyCV中也集成了IO优化,模型训练加速、量化裁剪等功能,在性能上具备自己的优势。基于阿里云的PAI产品生态,用户可以方便地进行模型管理、在线服务部署、大规模离线推理任务。

2 主要特性

  • 丰富完善的自监督算法体系:囊括业界有代表性的图像自监督算法SimCLR, MoCO, Swav, Moby, DINO等,以及基于mask图像预训练方法MAE,同时提供了详细的benchmark工具及复现结果。
  • 丰富的预训练模型库:提供丰富的预训练模型,在以transformer模型为主的基础上,也包含了主流的CNN 模型, 支持ImageNet预训练和自监督预训练。兼容PytorchImageModels支持更为丰富的视觉Transformer backbone。
  • 易用性和可扩展性 :支持配置方式、API调用方式进行训练、评估、模型导出;框架采用主流的模块化设计,灵活可扩展。
  • 高性能 :支持多机多卡训练和评估,fp16训练加速。针对自监督场景数据量大的特点,利用DALI和TFRecord文件进行IO方面的加速。对接阿里云机器学习PAI平台训练加速、模型推理优化。

三 主要技术特点

1 技术架构

EasyCV 架构图

EasyCV 底层引擎基于Pytorch,接入Pytorch训练加速器进行训练加速。算法框架部分主要分为如下几层:

  • 框架层:框架层复用目前开源领域使用较为广泛的openmmlab/mmcv 接口,通过Trainer控制训练的主要流程,自定义Hooks进行学习率控制、日志打印、梯度更新、模型保存、评估等操作,支持分布式训练、评估。Evaluators模块提供了不同任务的评估指标,支持多数据集评估,最优ckpt保存,同时支持用户自定义评估指标。可视化支持预测结果可视化、输入图像可视化。
  • 数据层:提供了不同数据源(data_source)的抽象,支持多种开源数据集例如Cifar、ImageNet、CoCo等,支持raw图片文件格式和TFrecord格式,TFrecord格式数据支持使用DALI进行数据处理加速,raw格式图片支持通过缓存机制加速数据读取。数据预处理(数据增强)过程抽象成若干个独立的pipeline,支持配置文件方式灵活配置不同的预处理流程。
  • 模型层:模型层分为模块和算法,模块提供基础的backbone,常用的loss,neck和各种下游任务的head,模型ModelZoo涵盖了自监督学习算法、图像分类、度量学习、目标检测和关键点检测算法,后续会继续扩充支持更多的high-level算法。
  • 推理:EasyCV提供了端到端的推理API接口,支持PAI-Blade进行推理优化,并在云上产品支持离在线推理。
  • API层:提供了统一的训练、评估、模型导出、预测的API。

EasyCV支持在本地环境方便的运行和调试,同时,如果用户想跑大规模生产任务,我们也支持在aliyun PAI产品中方便的进行部署。

2 完善的自监督算法体系

自监督学习无需数据标注,对比学习的引入使其效果逐步逼近监督学习,成为近年来学术界和工业界关注的重点之一。EasyCV囊括了主流的基于对比学习的自监督算法,包括SimCLR、MoCo v1/v2、Swav, Moby, DINO。也复现了基于mask image modeling的MAE算法。此外,我们提供了完善的benchmark工具,进行自监督预训练模型在ImageNet上效果的评估。

基于体系化的自监督算法和benchmark工具,用户可以方便的进行模型改进,效果对比,进行模型创新。同时也可以基于自己的大量无标注的数据,训练适合自己业务领域的更好的预训练模型。

下表展示了已有自监督算法基于ImageNet数据预训练的速度和在ImageNet验证集上linear eval/finetune的效果。

3 丰富的预训练模型库

CNN作为主干网络,配合各种下游任务的head,是CV模型常用的结构。EasyCV提供了多种传统的CNN网络结构,包括resnet、resnext、hrNet、darknet、inception、mobilenet、genet、mnasnet等。随着视觉Transformer的发展,Transformer在越来越多的领域替代CNN,成为表达能力更强的主干网络。框架实现了常用的ViT、SwinTransformer等, 同时引入了PytorchImageModel(Timm) 用于支持更为全面的Transformer结构。

结合自监督算法,所有的模型支持自监督预训练和ImageNet数据监督训练,为用户提供了丰富的预训练backbone,用户可以在框架预置的下游任务中简单配置进行使用,同时也可以接入自定义的下游任务中。

4 易用性

1、框架提供参数化方式和python api接口启动训练、评估、模型导出,并且提供了完备的预测接口支持端到端推理。

# 配置文件方式
python tools/train.py  configs/classification/cifar10/r50.py --work_dir work_dirs/classification/cifar10/r50  --fp16# 简易传参方式
python tools/train.py --model_type Classification --model.num_classes 10 --data.data_source.type ClsSourceImageList --data.data_source.list data/train.txt

API方式

import easycv.tools
config_path = 'configs/classification/cifar10/r50.py'
easycv.tools.train(config_path, gpus=8, fp16=False, master_port=29527)

推理示例

import cv2
from easycv.predictors.classifier import TorchClassifieroutput_ckpt = 'work_dirs/classification/cifar10/r50/epoch_350_export.pth'
tcls = TorchClassifier(output_ckpt)img = cv2.imread('aeroplane_s_000004.png')
# input image should be RGB order
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
output = tcls.predict([img])
print(output)

2、框架目前focus在high-level视觉任务,针对分类检测分割三大任务,基于内容风控、智能零售、智能监控、同图匹配、商品类目预测、商品检测、商品属性识别、工业质检等应用场景,基于阿里巴巴内部的业务实践和服务阿里云外部客户的经验,筛选复现效果SOTA算法,提供预训练模型,打通训练、推理以及端侧部署流程, 方便用户进行各个场景应用的定制化开发。例如在检测领域,我们复现了YOLOX算法,集成了PAI-Blade的剪枝、量化等模型压缩功能,并能导出MNN模型进行端侧部署,详细可以参考模型压缩量化tutorial。

5 可扩展性

1、如技术架构图右侧所示,所有的模块都支持注册、通过配置文件配置使用Builder自动创建,这就使得各个模块可以通过配置进行灵活的组合、替换。下面以model和evaluator配置为例,用户可以简单的通过配置文件修改切换不同的backbone,不同的分类head进行模型结构调整。在评估方面支持用户指定多个数据集,使用不同evaluator进行多指标评估。

model = dict(type='Classification',pretrained=None,backbone=dict(type='ResNet',depth=50,out_indices=[4],  # 0: conv-1, x: stage-xnorm_cfg=dict(type='SyncBN')),head=dict(type='ClsHead', with_avg_pool=True, in_channels=2048,num_classes=1000))eval_config = dict(initial=True, interval=1, gpu_collect=True)
eval_pipelines = [dict(mode='test',data=data['val1'],dist_eval=True,evaluators=[dict(type='ClsEvaluator', topk=(1, 5))],),dict(mode='test',data=data['val2'],dist_eval=True,evaluators=[dict(type='RetrivalEvaluator', topk=(1, 5))],)
]

2、基于注册机制,用户可以自行编写定制化的neck、head、data pipeline, evaluator等模块,快速注册到框架内,通过配置文件指定type字段进行创建和调用。

@NECKS.register_module()
class Projection(nn.Module):"""Customized neck."""def __init__(self, input_size, output_size):self.proj = nn.Linear(input_size, output_size)def forward(self, input):return self.proj(input)

配置文件如下

model = dict(type='Classification',backbone=dict(...),neck=dict(type='Projection',input_size=2048,output_size=512),head=dict(type='ClsHead',embedding_size=512,num_classes=1000)

6 高性能

训练方面,支持多机多卡、fp16加速训练、评估。

此外,针对特定任务,框架会做针对性优化,例如自监督训练需要使用大量小图片进行预训练,EasyCV使用tfrecord格式数据对小文件进行封装,使用DALI对预处理进行GPU加速,提升训练优化性能。下图是使用DALI+TFrecord格式进行训练,和原始图片训练的性能对比。

测试机型:V100 16GB*8

四 应用场景

如开篇所述,EasyCV支撑了阿里巴巴集团内10+BU20+业务,同时通过平台化组件的方式满足了云上客户定制化模型、解决业务问题的需求。

例如某BU使用业务图库100w图片进行自监督预训练, 在预训练模型基础上进行下游任务finetune,达到最佳效果,比baseline模型效果提升1%。多位BU的同学使用自监督预训练模型进行特征抽取,利用对比学习的特性,使用图像特征进行同图匹配的任务,与此同时,我们在公有云上也推出了相似图匹配的解决方案。

针对公有云用户,对于入门级用户,打通数据标注、模型训练、服务部署链路,打造顺滑的开箱即用的用户体验,涵盖图像分类、物体检测、实例分割、语义分割、关键点检测等领域的算法,用户只需要指定数据,简单调参即可完成模型训练,通过一键部署即可完成在线服务拉起。针对高级开发者,提供了notebook开发环境,云原生集群训练调度的支持,支持用户使用框架进行定制化算法开发,使用预置的预训练模型进行finetune。

  • 公有云某客户利用物体检测组件定制化模型训练,完成其业务场景工人安装是否合格的智能审核。
  • 某推荐用户使用自监督训练组件,使用其大量的无标注广告图片,训练图像表征模型,进而把图像特征接入推荐模型,结合推荐模型优化,ctr提升10+%。
  • 某面板研发厂商基于EasyCV定制化瑕疵检测模型,完成云端训练、端侧部署推理。

五 Roadmap

后续我们计划每个月发布Release版本。近期的Roadmap如下:

  • Transformer 分类任务训练性能优化 & benchmark
  • 自监督学习增加检测&分割benchmark
  • 开发更多基于Transformer的下游任务,检测 & 分割
  • 常用图像任务数据集下载、训练访问接口支持
  • 模型推理优化功能接入
  • 更多领域模型的端侧部署支持

此外,在中长期,我们在下面几个探索性的方向上会持续投入精力,也欢迎各种维度的反馈和改进建议以及技术讨论,同时我们十分欢迎和期待对开源社区建设感兴趣的同行一起参与共建。

  • 自监督技术和Transformer结合,探索更高效的预训练模型
  • 轻量化Transformer,基于训练推理的联合优化,推动Transformer在实际业务场景落地
  • 基于多模态预训练,探索统一的transformer在视觉high-level 多任务上的应用

参考链接:

1、模型压缩量化tutorial :EasyCV/compression.md at master · alibaba/EasyCV · GitHub

2、PAI-Blade:

机器学习PAI_模型推理优化Blade

3、相似图匹配解决方案:

相似图像匹配与图像检索解决方案 - 机器学习PAI - 阿里云

4、PAI产品页面:

机器学习PAI_机器学习建模训练部署_智能推荐_人工智能_阿里云

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源数据库为什么能捕获开发者的心?

【CSDN 编者按】开源数据库的重要性,早就不言而喻。早期的自由软件开发者和初创公司,很多都受益于开源数据库。伴随着曾经的初创公司羽翼逐渐丰满,它们的开发者文化渗透到整个生态系统中,更多的人开始关注这些初创公司采取的方法&…

“消息驱动、事件驱动、流 ”基础概念解析

简介:本文旨在帮助大家对近期消息领域的高频词“消息驱动(Message-Driven),事件驱动(Event-Driven)和流(Streaming)”有更清晰的了解和认知,其中事件驱动 EDA 作为 Gartn…

KubeVela 1.3 发布:开箱即用的可视化应用交付平台,引入插件生态、权限认证、版本化等企业级新特性

简介:得益于 KubeVela 社区上百位开发者的参与和 30 多位核心贡献者的 500 多次代码提交, KubeVela 1.3 版本正式发布。相较于三个月前发布的 v1.2 版本[1],新版本在 OAM 核心引擎(Vela Core),可视化应用交…

阿里云发布企业云原生IT成本治理方案:五大能力加速企业 FinOps 进程

简介:阿里云企业云原生 IT 成本治理方案助力企业落地企业 IT 成本治理的理念、工具与流程,让企业在云原生化的过程中可以数字化地实现企业 IT 成本管理与优化,成为 FinOps 领域的践行者与领先者。 作者:莫源 云原生技术与降本增…

阿里云数字化安全生产平台 DPS V1.0 正式发布

简介:数字化安全生产平台则帮助客户促进业务与 IT 的全面协同,从业务集中监控、业务流程管理、应急指挥响应等多维度来帮助客户建立完善专业的业务连续性保障体系。 作者:银桑、比扬 阿里云创立于 2009 年,是全球领先的云计算及…

玩转小程序压测

简介:小程序是移动互联网时代非常重要的流量入口。为了避免因系统性能瓶颈导致用户在使用过程中出现白屏、异常报错等问题影响用户体验,小程序在新功能上线前需要做好压力测试,评估出系统的承载能力,并以压测结果配置限流。让系统…

好的每日站会,应该这么开 | 敏捷开发落地指南

简介:高效落地敏捷开发,先从这3个关键活动着手。在敏捷迭代中,虽然迭代周期比较短,但依然需要对迭代过程进行有效跟进。如果在输入、过程、输出环节,没有要求,每日站会(迭代跟进)将会…

EasyNLP开源|中文NLP+大模型落地,EasyNLP is all you need

简介:EasyNLP背后的技术框架如何设计?未来有哪些规划?今天一起来深入了解。 作者 | 临在、岑鸣、熊兮 来源 | 阿里开发者公众号 一 导读 随着BERT、Megatron、GPT-3等预训练模型在NLP领域取得瞩目的成果,越来越多团队投身到超大…

内容社区行业搜索最佳实践

简介:社区内容通常包括UGC和PGC。由于关键词和内容多样性丰富、用词规范程度参差不齐,搜索引擎需要对关键词和内容进行智能语义分析,识别出用户真正的查询意图,找到最全面最相关的结果满足用户需求。本文将详细介绍如何通过“开放…

手把手,带你用数据做好迭代复盘改进 | 敏捷开发落地指南

简介:高效落地敏捷开发,先从这3个关键活动着手。带你用数据做好迭代复盘改进 ,数据说话,借助云效项目协作Projex 高效开展迭代复盘高效落地敏捷开发。 摘要:高效落地敏捷开发,先从这3个关键活动着手&#…

记一次网络相关的技术问题答疑

大家好,我是飞哥!前段时间飞哥参加了一期 OSChina 官方举办的「高手问答」栏目。在这个栏目里,我和 OSChina 的网友们以《深入理解 Linux 网络》为主题,对大家日常所关心的一些问题展开了一些技术探讨。今天我把这个活动中探讨的内…

Hexo博客框架—轻量、一令部署

简介:Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。Hexo支持Github Flavored Markdown的所有功能, 甚至可以整合Octopress的大多数…

被你质疑价值的混沌工程,阿里巴巴已落地实践了9年

简介:无可讳言,对于混沌工程的价值,目前在业内还没有一个明确的度量标准,但是可以通过简单的例子来有效佐证。据中亭介绍,一方面可以先选定一个场景,从结果上看,混沌工程可以保证场景不劣化&…

同为博客,不同风格 ——Hexo另类搭建

简介:通过阿里云云开发平台快速由Hexo创建赛博朋克风格的博客。 一 、通过云开发平台快速创建初始化应用 1.创建相关应用模版请参考链接:Hexo博客框架—轻量、一令部署 2.完成创建后就可以在github中查看到新增的Hexo仓库 二 、 本地编写《赛博朋克风…

即学即会 Serverless | 初识 Serverless

简介:Serverless 架构被越来越多的业务所采纳,成为其技术选型,大多数开发者已经跨越对 Serverless 概念了解,切实向落地实践出发。本文带大家一探究竟,为什么说 Serverless 可以帮助开发者聚焦核心业务价值&#xff0c…

宜搭小技巧|巧用审批按钮,流程随心流转

简介:一键启用流程退回,再也不用担心“一错回到提交前”! 今天,宜小搭提交了产品采购申请单,却因某项产品选错分类被领导拒绝,宜小搭只能重新填写再提交,这样做既麻烦也影响工作效率。 流程已…

阿里云将投入70亿元建国际生态、增设6大海外服务中心

9月22日消息,阿里云在泰国举办的国际云峰会上宣布将继续加快海外市场布局,未来三年投入70亿元建设国际本地化生态,并在海外增设6个服务中心,分别位于波尔图、墨西哥城、吉隆坡、迪拜等地。近年来,阿里云在海外市场获得…

开源|优酷动态模板研发体系为分发提效30%

简介:动态模板技术方案将客户端研发链路实现了串联,通过完备的工具化支撑体系,让开发者可以高效完成组件由原始设计稿到可运行代码的最短通路,本文将对研发体系中涉及到的核心模块就行介绍,希望对技术社区及广大开发者…

比心云平台基于阿里云容器服务 ACK 的弹性架构实践

简介:本文主要探讨比心云平台如何利用阿里云容器服务 ACK,来构建应用弹性架构,进一步优化计算成本。 作者:韩韬|比心技术 前言 应用容器化改造后,不可避免地会面临这样一个问题:Kubernetes 集…

程序员莫名收到谷歌转账170万元,直言:一个月没敢花

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life)近日,Google 公司发生一起乌龙事件, 意外地给一位博客和安全工程师转账近25万美元(约合人民币174万元),当事人表示等待将近一个月…