近兩年,基于無標注訓練數(shù)據(jù)的圖像自監(jiān)督預訓練技術發(fā)展迅猛,在各個視覺任務的效果上已經(jīng)媲美甚至超過需大量標注的有監(jiān)督訓練的效果;另一方面,在NLP領域大獲成功的Transformer技術在各個圖像任務上進一步刷新SOTA效果,其應用呈現(xiàn)出井噴式的爆發(fā)。作為二者的結合,自監(jiān)督視覺Transformer的預訓練也應運而生。
業(yè)界自監(jiān)督學習和視覺Transformer算法技術更新迭代非??欤瑫r也給CV算法開發(fā)者帶來了諸多困擾,比如相關開源代碼零散,實現(xiàn)方式和風格參差不齊導致學習和復現(xiàn)成本過高,訓練、推理性能低下等等。阿里云PAI團隊通過搭建靈活易用的算法框架EasyCV,體系化地沉淀SOTA的自監(jiān)督算法和Transformer預訓練模型,封裝統(tǒng)一、簡潔易用的接口,針對自監(jiān)督大數(shù)據(jù)訓練方面進行性能優(yōu)化,方便用戶嘗試最新的自監(jiān)督預訓練技術和Transformer模型,推動在業(yè)務上的應用和落地。
此外,基于PAI團隊多年積累的深度學習訓練、推理加速技術,在EasyCV中也集成了IO優(yōu)化,模型訓練加速、量化裁剪等功能,在性能上具備自己的優(yōu)勢?;诎⒗镌频腜AI產品生態(tài),用戶可以方便地進行模型管理、在線服務部署、大規(guī)模離線推理任務。
2 主要特性
●豐富完善的自監(jiān)督算法體系:囊括業(yè)界有代表性的圖像自監(jiān)督算法SimCLR, MoCO, Swav, Moby, DINO等,以及基于mask圖像預訓練方法MAE,同時提供了詳細的benchmark工具及復現(xiàn)結果。
●
●豐富的預訓練模型庫:提供豐富的預訓練模型,在以transformer模型為主的基礎上,也包含了主流的CNN 模型, 支持ImageNet預訓練和自監(jiān)督預訓練。兼容PytorchImageModels支持更為豐富的視覺Transformer backbone。
● 易用性和可擴展性 :支持配置方式、API調用方式進行訓練、評估、模型導出;框架采用主流的模塊化設計,靈活可擴展。
●高性能 :支持多機多卡訓練和評估,fp16訓練加速。針對自監(jiān)督場景數(shù)據(jù)量大的特點,利用DALI和TFRecord文件進行IO方面的加速。對接阿里云機器學習PAI平臺訓練加速、模型推理優(yōu)化。
三 主要技術特點
1 技術架構
EasyCV 架構圖
EasyCV 底層引擎基于Pytorch,接入Pytorch訓練加速器進行訓練加速。算法框架部分主要分為如下幾層:
· 框架層:框架層復用目前開源領域使用較為廣泛的openmmlab/mmcv 接口,通過Trainer控制訓練的主要流程,自定義Hooks進行學習率控制、日志打印、梯度更新、模型保存、評估等操作,支持分布式訓練、評估。Evaluators模塊提供了不同任務的評估指標,支持多數(shù)據(jù)集評估,最優(yōu)ckpt保存,同時支持用戶自定義評估指標??梢暬С诸A測結果可視化、輸入圖像可視化。
· 數(shù)據(jù)層:提供了不同數(shù)據(jù)源(data_source)的抽象,支持多種開源數(shù)據(jù)集例如Cifar、ImageNet、CoCo等,支持raw圖片文件格式和TFrecord格式,TFrecord格式數(shù)據(jù)支持使用DALI進行數(shù)據(jù)處理加速,raw格式圖片支持通過緩存機制加速數(shù)據(jù)讀取。數(shù)據(jù)預處理(數(shù)據(jù)增強)過程抽象成若干個獨立的pipeline,支持配置文件方式靈活配置不同的預處理流程。
· 模型層:模型層分為模塊和算法,模塊提供基礎的backbone,常用的loss,neck和各種下游任務的head,模型ModelZoo涵蓋了自監(jiān)督學習算法、圖像分類、度量學習、目標檢測和關鍵點檢測算法,后續(xù)會繼續(xù)擴充支持更多的high-level算法。
· 推理:EasyCV提供了端到端的推理API接口,支持PAI-Blade進行推理優(yōu)化,并在云上產品支持離在線推理。
· API層:提供了統(tǒng)一的訓練、評估、模型導出、預測的API。
EasyCV支持在本地環(huán)境方便的運行和調試,同時,如果用戶想跑大規(guī)模生產任務,我們也支持在aliyun PAI產品中方便的進行部署。
2 完善的自監(jiān)督算法體系
自監(jiān)督學習無需數(shù)據(jù)標注,對比學習的引入使其效果逐步逼近監(jiān)督學習,成為近年來學術界和工業(yè)界關注的重點之一。EasyCV囊括了主流的基于對比學習的自監(jiān)督算法,包括SimCLR、MoCo v1/v2、Swav, Moby, DINO。也復現(xiàn)了基于mask image modeling的MAE算法。此外,我們提供了完善的benchmark工具,進行自監(jiān)督預訓練模型在ImageNet上效果的評估。
基于體系化的自監(jiān)督算法和benchmark工具,用戶可以方便的進行模型改進,效果對比,進行模型創(chuàng)新。同時也可以基于自己的大量無標注的數(shù)據(jù),訓練適合自己業(yè)務領域的更好的預訓練模型。
下表展示了已有自監(jiān)督算法基于ImageNet數(shù)據(jù)預訓練的速度和在ImageNet驗證集上linear eval/finetune的效果。
3 豐富的預訓練模型庫
CNN作為主干網(wǎng)絡,配合各種下游任務的head,是CV模型常用的結構。EasyCV提供了多種傳統(tǒng)的CNN網(wǎng)絡結構,包括resnet、resnext、hrNet、darknet、inception、mobilenet、genet、mnasnet等。隨著視覺Transformer的發(fā)展,Transformer在越來越多的領域替代CNN,成為表達能力更強的主干網(wǎng)絡??蚣軐崿F(xiàn)了常用的ViT、SwinTransformer等, 同時引入了PytorchImageModel(Timm) 用于支持更為全面的Transformer結構。
結合自監(jiān)督算法,所有的模型支持自監(jiān)督預訓練和ImageNet數(shù)據(jù)監(jiān)督訓練,為用戶提供了豐富的預訓練backbone,用戶可以在框架預置的下游任務中簡單配置進行使用,同時也可以接入自定義的下游任務中。
4 易用性
1. 框架提供參數(shù)化方式和python api接口啟動訓練、評估、模型導出,并且提供了完備的預測接口支持端到端推理。
API方式
推理示例
2. 框架目前focus在high-level視覺任務,針對分類檢測分割三大任務,基于內容風控、智能零售、智能監(jiān)控、同圖匹配、商品類目預測、商品檢測、商品屬性識別、工業(yè)質檢等應用場景,基于阿里巴巴內部的業(yè)務實踐和服務阿里云外部客戶的經(jīng)驗,篩選復現(xiàn)效果SOTA算法,提供預訓練模型,打通訓練、推理以及端側部署流程, 方便用戶進行各個場景應用的定制化開發(fā)。例如在檢測領域,我們復現(xiàn)了YOLOX算法,集成了PAI-Blade的剪枝、量化等模型壓縮功能,并能導出MNN模型進行端側部署,詳細可以參考模型壓縮量化tutorial。
5 可擴展性
1、如技術架構圖右側所示,所有的模塊都支持注冊、通過配置文件配置使用Builder自動創(chuàng)建,這就使得各個模塊可以通過配置進行靈活的組合、替換。下面以model和evaluator配置為例,用戶可以簡單的通過配置文件修改切換不同的backbone,不同的分類head進行模型結構調整。在評估方面支持用戶指定多個數(shù)據(jù)集,使用不同evaluator進行多指標評估。
2、基于注冊機制,用戶可以自行編寫定制化的neck、head、data pipeline, evaluator等模塊,快速注冊到框架內,通過配置文件指定type字段進行創(chuàng)建和調用。
配置文件如下
6 高性能
訓練方面,支持多機多卡、fp16加速訓練、評估。
此外,針對特定任務,框架會做針對性優(yōu)化,例如自監(jiān)督訓練需要使用大量小圖片進行預訓練,EasyCV使用tfrecord格式數(shù)據(jù)對小文件進行封裝,使用DALI對預處理進行GPU加速,提升訓練優(yōu)化性能。下圖是使用DALI+TFrecord格式進行訓練,和原始圖片訓練的性能對比。
四 應用場景
如開篇所述,EasyCV支撐了阿里巴巴集團內10+BU20+業(yè)務,同時通過平臺化組件的方式滿足了云上客戶定制化模型、解決業(yè)務問題的需求。
例如某BU使用業(yè)務圖庫100w圖片進行自監(jiān)督預訓練, 在預訓練模型基礎上進行下游任務finetune,達到最佳效果,比baseline模型效果提升1%。多位BU的同學使用自監(jiān)督預訓練模型進行特征抽取,利用對比學習的特性,使用圖像特征進行同圖匹配的任務,與此同時,我們在公有云上也推出了相似圖匹配的解決方案。
針對公有云用戶,對于入門級用戶,打通數(shù)據(jù)標注、模型訓練、服務部署鏈路,打造順滑的開箱即用的用戶體驗,涵蓋圖像分類、物體檢測、實例分割、語義分割、關鍵點檢測等領域的算法,用戶只需要指定數(shù)據(jù),簡單調參即可完成模型訓練,通過一鍵部署即可完成在線服務拉起。針對高級開發(fā)者,提供了notebook開發(fā)環(huán)境,云原生集群訓練調度的支持,支持用戶使用框架進行定制化算法開發(fā),使用預置的預訓練模型進行finetune。
· 公有云某客戶利用物體檢測組件定制化模型訓練,完成其業(yè)務場景工人安裝是否合格的智能審核。
· 某推薦用戶使用自監(jiān)督訓練組件,使用其大量的無標注廣告圖片,訓練圖像表征模型,進而把圖像特征接入推薦模型,結合推薦模型優(yōu)化,ctr提升10+%。
· 某面板研發(fā)廠商基于EasyCV定制化瑕疵檢測模型,完成云端訓練、端側部署推理。
五 Roadmap
后續(xù)我們計劃每個月發(fā)布Release版本。近期的Roadmap如下:
· Transformer 分類任務訓練性能優(yōu)化 & benchmark
· 自監(jiān)督學習增加檢測&分割benchmark
· 開發(fā)更多基于Transformer的下游任務,檢測 & 分割
· 常用圖像任務數(shù)據(jù)集下載、訓練訪問接口支持
· 模型推理優(yōu)化功能接入
· 更多領域模型的端側部署支持
此外,在中長期,我們在下面幾個探索性的方向上會持續(xù)投入精力,也歡迎各種維度的反饋和改進建議以及技術討論,同時我們十分歡迎和期待對開源社區(qū)建設感興趣的同行一起參與共建。
· 自監(jiān)督技術和Transformer結合,探索更高效的預訓練模型
· 輕量化Transformer,基于訓練推理的聯(lián)合優(yōu)化,推動Transformer在實際業(yè)務場景落地
· 基于多模態(tài)預訓練,探索統(tǒng)一的transformer在視覺high-level 多任務上的應用
項目開源地址:https://github.com/alibaba/EasyCV