DUICUO

EasyCV オープンソース | すぐに使えるビジュアル自己教師あり学習 + Transformer アルゴリズム ライブラリ

著者 |臨済、前燕

I. はじめに

近年、自己教師学習とTransformerはコンピュータビジョンの分野で大きな注目を集めています。画像の自己教師事前学習は、画像タスクにおける骨の折れるアノテーション作業を大幅に削減し、人件費を大幅に節約しました。一方、NLPにおけるTransformer技術の大きな成功は、CVモデルのパフォーマンスをさらに向上させる大きな可能性をもたらしました。アリババグループとアリババクラウドにおける自己教師学習とビジュアルTransformerの実装を促進するため、アリババクラウドの機械学習プラットフォーム(PAI)は、オールインワンのビジュアルモデリングツールであるEasyCVを開発しました。EasyCVは、豊富で包括的な自己教師アルゴリズムシステムを誇り、最先端(SOTA)のビジュアルTransformer事前学習済みモデルを提供します。ModelZooは、画像の自己教師学習、画像分類、メトリック学習、物体検出、キーポイント検出などの分野をカバーしています。また、学習/推論効率のための深い最適化により、開発者にすぐに使用できる学習および推論機能を提供します。さらに、EasyCV は Alibaba の Lingjie システムと完全に互換性があるため、ユーザーは Alibaba Cloud 環境内で EasyCV のすべての機能を簡単に利用できます。

アリババ社内での徹底的な改良を経て、EasyCVフレームワークをコミュニティに展開し、幅広いCVアルゴリズム開発者や愛好家にさらなるサービスを提供したいと考えています。これにより、最新の画像自己教師学習および画像変換技術を迅速かつ容易に体験し、自社のビジネス開発に適用できるようになります。

EasyCVのアルゴリズムフレームワークはどのように設計されているのでしょうか?開発者はどのように活用できるのでしょうか?今後の計画はどうなっているのでしょうか?今日は詳しく見ていきましょう。

II. EasyCV とは何ですか?

EasyCVは、アリババが開発したオープンソースのオールインワン型ビジュアルアルゴリズムモデリングツールです。PyTorchをベースとし、自己教師学習とTransformer技術を核としています。アリババグループ内では、Search、Taobao、Youku、Fliggyといった複数の事業部門をサポートし、Alibaba Cloud上の複数のエンタープライズクライアントにもサービスを提供しています。プラットフォームベースのコンポーネントを通じて、EasyCVはモデルのカスタマイズやビジネス課題の解決といった顧客のニーズに応えます。

プロジェクトのオープンソースアドレス: https://github.com/alibaba/EasyCV

1. プロジェクトの背景

過去2年間で、ラベルなし学習データに基づく画像自己教師あり事前学習技術は急速に発展し、様々な視覚タスクにおいて、大量のアノテーションを必要とする教師あり学習に匹敵、あるいは凌駕する成果を上げています。一方、NLP分野で大きな成功を収めたTransformer技術は、様々な画像タスクにおいて最先端の性能をさらに向上させ、その応用は爆発的な成長を遂げています。そして、この両者を組み合わせた自己教師あり視覚Transformer事前学習も登場しています。

業界では、自己教師学習アルゴリズムとビジュアルTransformerアルゴリズムが急速に更新・反復されており、CVアルゴリズム開発者にとって多くの課題ももたらしています。例えば、関連するオープンソースコードが散在し、実装方法やスタイルの一貫性がないために、学習・再現コストが高く、トレーニングと推論のパフォーマンスが低下します。Alibaba Cloud PAIチームは、柔軟で使いやすいアルゴリズムフレームワークEasyCVを構築し、最先端(SOTA)の自己教師アルゴリズムとTransformer事前学習済みモデルを体系的に蓄積し、統一された簡潔で使いやすいインターフェースをカプセル化し、自己教師ビッグデータトレーニングのパフォーマンスを最適化しました。これにより、ユーザーは最新の自己教師事前学習技術とTransformerモデルを試すことができ、ビジネスアプリケーションへの応用と実装を促進します。

さらに、PAIチームが長年にわたり蓄積してきたディープラーニングのトレーニングおよび推論加速技術を活用し、EasyCVはIO最適化、モデルトレーニング加速、量子化プルーニングなどの機能を統合することで、パフォーマンス上の優位性を実現しています。Alibaba CloudのPAI製品エコシステムを基盤とすることで、ユーザーはモデルの管理、オンラインサービスの展開、大規模なオフライン推論タスクの実行を容易に行うことができます。

2. 主な特徴

包括的かつ堅牢な自己教師型アルゴリズムのシステム: SimCLR、MoCO、Swav、Moby、DINO などの業界をリードする画像自己教師型アルゴリズム、マスクベースの画像事前トレーニング手法 MAE、詳細なベンチマーク ツール、再現結果を網羅しています。

豊富な事前学習済みモデルライブラリ:幅広い事前学習済みモデルを提供します。主にTransformerモデルですが、主流のCNNモデルも含まれています。ImageNetの事前学習と自己教師あり事前学習をサポートしています。PyTorchImageModelsと互換性があり、より多様なビジュアルTransformerバックボーンをサポートします。

使いやすさとスケーラビリティ: 構成と API 呼び出しによるトレーニング、評価、モデルのエクスポートをサポートします。フレームワークは主流のモジュール設計を採用しているため、柔軟性とスケーラビリティに優れています。

高性能:マルチマシン、マルチGPUによる学習と評価をサポートし、FP16学習アクセラレーションを備えています。自己教師あり学習シナリオ特有の大容量データを扱うため、DALIファイルとTFRecordファイルを用いたI/Oアクセラレーションを採用しています。Alibaba Cloud Machine Learning PAIプラットフォームと統合することで、学習アクセラレーションとモデル推論の最適化を実現します。

III. 主な技術的特徴

1. 技術アーキテクチャ

EasyCVアーキテクチャ図

EasyCVの基盤エンジンはPyTorchをベースにしており、PyTorchトレーニングアクセラレータと統合することでトレーニングを高速化します。アルゴリズムフレームワークは主に以下のレイヤーに分かれています。

  • フレームワーク層:フレームワーク層は、オープンソース分野で広く使用されているopenmmlab/mmcvインターフェースを再利用しています。Trainerを介して主要なトレーニングプロセスを制御し、学習率制御、ログ出力、勾配更新、モデルの保存、評価のためのカスタムフックを使用することで、分散トレーニングと評価をサポートします。評価モジュールは、さまざまなタスクの評価指標を提供し、マルチデータセット評価をサポートし、最適なCKPT(モデルキーポイント)を保存するほか、ユーザー定義の評価指標もサポートします。可視化機能は、予測結果と入力画像の可視化をサポートします。
  • データレイヤー:Cifar、ImageNet、CoCoといった様々なオープンソースデータセットをサポートし、様々なデータソースの抽象化を提供します。RAW画像ファイル形式とTFrecord形式をサポートしています。TFrecord形式のデータはDALIをサポートし、データ処理を高速化します。一方、RAW形式の画像はキャッシュメカニズムをサポートし、データ取得を高速化します。データ前処理(データ拡張)は複数の独立したパイプラインに抽象化されており、設定ファイルを介して様々な前処理ワークフローを柔軟に構成できます。
  • モデル層:モデル層はモジュールとアルゴリズムに分かれています。モジュールは、様々な下流タスクに必要な基本的なバックボーン、一般的に使用される損失関数、ネック関数、ヘッド関数を提供します。ModelZooは、自己教師学習アルゴリズム、画像分類、メトリック学習、物体検出、キーポイント検出アルゴリズムをカバーしています。今後、より高レベルなアルゴリズムをサポートするために拡張されていきます。
  • 推論: EasyCV はエンドツーエンドの推論 API インターフェイスを提供し、推論の最適化のための PAI-Blade をサポートし、クラウド製品でのオンラインおよびオフラインの推論をサポートします。
  • API レイヤー: トレーニング、評価、モデルのエクスポート、予測のための統合 API を提供します。
  • EasyCVは、ローカル環境での便利な実行とデバッグをサポートします。同時に、大規模な本番環境タスクを実行したい場合、aliyun PAI製品への便利なデプロイもサポートしています。

2. 包括的な自己教師ありアルゴリズムシステム

自己教師学習はデータのラベル付けを必要とせず、対照学習の導入によりその性能は徐々に教師学習に近づき、近年、学術研究および産業界の研究の重要な焦点となっています。EasyCVは、SimCLR、MoCo v1/v2、Swav、Moby、DINOなど、対照学習に基づく主流の自己教師学習アルゴリズムを網羅しています。また、マスク画像モデリングに基づくMAEアルゴリズムも再現します。さらに、ImageNetにおける自己教師学習済み事前学習モデルの性能を評価するための包括的なベンチマークツールも提供しています。

体系的な自己教師型アルゴリズムとベンチマークツールを基盤として、ユーザーはモデルの改善、パフォーマンス比較、そして革新を容易に行うことができます。また、大量のラベルなしデータを用いて、特定のビジネス分野に合わせた、より優れた事前学習済みモデルを学習することも可能です。

以下の表は、ImageNet データで事前トレーニングされた既存の自己教師型アルゴリズムの速度と、ImageNet 検証セットでの線形評価/微調整のパフォーマンスを示しています。

アルゴリズム

線形評価/微調整設定

事前学習済み構成

トップ1(%)

モコv2

mocov2_resnet50_8xb2048_40e_feature

mocov2_resnet50_8xb32_200e

66.8

ディノ

ディノ・デイト・スモール_p16_8xb2048_20e_フィーチャー

ディノ・デイト・スモール_p16_8xb32_100e

71.248

モビー

moby_deit_small_p16_8xb2048_30e_feature

モビー・デイト・スモール_p16_4xb128_300e

72.214

スワブ

swav_resnet50_8xb2048_20e_feature

swav_resnet50_8xb32_200e

73.618

MAE(微調整)

mae_vit_base_patch16_8xb64_100e_lrdecay075_fintune

mae_vit_base_patch16_8xb64_400e

83.13

MAE(微調整)

mae_vit_large_patch16_8xb16_50e_lrdecay075_fintune

mae_vit_large_patch16_8xb32_1600e

85.49

3. 豊富な事前学習済みモデルのライブラリ

CNNは、バックボーンネットワークとして、また様々な下流タスクのヘッドと組み合わせて使用​​される、コンピュータービジョン(CV)モデルで広く用いられるアーキテクチャです。EasyCVは、ResNet、ResNext、HRNet、DarkNet、Inception、MobileNet、GeneNet、MNASNetなど、様々な従来のCNNネットワークアーキテクチャを提供しています。ビジュアルトランスフォーマーの開発に伴い、トランスフォーマーはますます多くの分野でCNNに取って代わり、より強力な表現力を持つバックボーンネットワークになりつつあります。このフレームワークは、一般的に使用されるViTとSwingTransformerを実装し、さらにPyTorchImageModel(Timm)を導入することで、より包括的なトランスフォーマーアーキテクチャをサポートします。

自己教師ありアルゴリズムと組み合わせることで、すべてのモデルは自己教師あり事前学習とImageNetデータ教師あり学習をサポートし、豊富な事前学習済みバックボーンセットをユーザーに提供します。ユーザーは、これらのバックボーンを簡単に設定して、フレームワークの事前構築済みダウンストリームタスクで使用したり、カスタムダウンストリームタスクに接続したりできます。

4. 使いやすさ

(1)このフレームワークは、トレーニング、評価、モデルのエクスポートを開始するためのパラメータ化とPython APIインターフェースを提供し、エンドツーエンドの推論をサポートするための完全な予測インターフェースを提供します。

 # 設定ファイル方式
Python ツール/トレーニング.py構成/分類/ cifar10 / r50 .py --work_dir work_dirs/classification/cifar10/r50 --fp16


# 簡略化されたパラメータ渡し方法
Python ツール/ train .py --model_type 分類 --model.num_classes 10 --data.data_source.type ClsSourceImageList --data.data_source.list data/train.txt

APIメソッド

 easycv.toolsをインポートする
config_path = 'configs/classification/cifar10/r50.py'
easycv .tools .train ( config_path gpus = 8 fp16 = False master_port = 29527 )

推論の例

 cv2をインポート
easycv .predictors .classifier からTorchClassifier をインポートします。

output_ckpt = 'work_dirs/classification/cifar10/r50/epoch_350_export.pth'
tcls =トーチ分類器( output_ckpt )

img = cv2 .imread ( 'aeroplane_s_000004.png' )
# 入力画像はRGB 順である必要があります
img = cv2 .cvtColor ( img cv2 .COLOR_BGR2RGB )
出力= tcls .predict ( [画像] )
印刷出力

(2)このフレームワークは現在、高レベルの視覚タスクに焦点を当てており、分類、検出、セグメンテーションという3つの主要タスクを対象としています。コンテンツリスク管理、インテリジェント小売、インテリジェント監視、画像マッチング、製品カテゴリ予測、製品検出、製品属性認識、工業品質検査などのアプリケーションシナリオに基づき、アリババの社内ビジネスプラクティスとアリババクラウドの外部顧客へのサービス提供経験を活かし、再現性のあるパフォーマンスを持つ最先端(SOTA)アルゴリズムを選択し、事前学習済みモデルを提供し、学習、推論、エッジ展開プロセスを合理化することで、さまざまなアプリケーションシナリオに合わせたカスタマイズ開発を可能にしました。例えば、検出分野では、YOLOXアルゴリズムを再現し、PAI-Bladeのプルーニングや量子化などのモデル圧縮機能を統合し、エッジ展開用のMNNモデルをエクスポートできます。詳細については、モデル圧縮と量子化のチュートリアルを参照してください。

5. スケーラビリティ

(1) 技術アーキテクチャ図の右側に示すように、すべてのモジュールは設定ファイルを介してビルダーに登録および自動作成できます。これにより、設定によるモジュールの柔軟な組み合わせと置き換えが可能になります。モデルと評価器の設定を例に挙げると、設定ファイルを変更してモデル構造を調整することで、異なるバックボーンや異なる分類ヘッドを簡単に切り替えることができます。評価に関しては、複数のデータセットを指定し、異なる評価器を使用してマルチメトリック評価を行うことができます。

モデル=辞書(
type = '分類'
事前トレーニング済み=なし
バックボーン=辞書(
タイプ= 'ResNet'
深さ= 50
out_indices = [ 4 ] # 0 : conv - 1 x : stage - x
norm_cfg = dict ( type = 'SyncBN' ) )
ヘッド=辞書(
type = 'ClsHead' with_avg_pool = True in_channels = 2048
num_classes = 1000

eval_config = dict (初期値= True 間隔= 1 gpu_collect = True )
eval_pipelines = [
辞書
モード= 'テスト'
データ=データ[ 'val1' ] ,
dist_eval = True
評価者= [ dict ( type = 'ClsEvaluator' , topk = ( 1 , 5 ) ) ] ,
)
辞書
モード= 'テスト'
データ=データ[ 'val2' ] ,
dist_eval = True
評価者= [ dict ( type = 'RetrivalEvaluator' , topk = ( 1 , 5 ) ) ] ,

]


(2) 登録メカニズムに基づいて、ユーザーはネック、ヘッド、データパイプライン、評価器などの独自のカスタマイズモジュールを作成し、フレームワークに迅速に登録できます。設定ファイル内のtypeフィールドを指定することで、これらのモジュールを作成および呼び出すことができます。

 @ NECKS.register_module ( )
クラス Projection ( nn.Module ) :
カスタマイズされたネック。
def __init__ ( self input_size output_size ) :
self .proj = nn .Linear (入力サイズ,出力サイズ)

def forward ( self , input ) :
self.proj (入力)を返す

設定ファイルは次のとおりです。

モデル=辞書(
type = '分類'
バックボーン= dict ( ... ) ,
=辞書(
タイプ= '投影'
入力サイズ= 2048
出力サイズ= 512
)
ヘッド=辞書(
タイプ= 'ClsHead'
埋め込みサイズ= 512
num_classes = 1000

6. 高性能

トレーニングに関しては、FP16 アクセラレーションによるマルチマシンおよびマルチカードのトレーニングと評価をサポートします。

さらに、このフレームワークは特定のタスクに的を絞った最適化を実行します。例えば、自己教師あり学習では、多数の小さな画像を用いた事前学習が必要です。EasyCVは、これらの小さなファイルをTFrecord形式のデータでカプセル化し、DALIを用いて前処理のGPUアクセラレーションを行うことで、学習の最適化パフォーマンスを向上させます。次の図は、DALI+TFrecord形式を用いた学習と、元の画像を用いた学習のパフォーマンスを比較したものです。

モデル

DALITFレコード(サンプル/秒)

JPG (サンプル/秒)

パフォーマンスの向上

述べる

ディノ・デイト・スモール_p16

492.3

204.8

140%

fp16 バッチサイズ=32x8

モビー・デイト・スモール_p16

1312.8

1089.3

20.5%

fp16 バッチサイズ=128x8

mocov2_resnet50

2164.9

1365.3

58.56%

fp16 バッチサイズ=128x8

swav_resnet50

1024.0

853.3

20%

fp16 バッチサイズ=128x8

IV. アプリケーションシナリオ

冒頭で述べたように、EasyCV は Alibaba グループ内の 10 以上の BU と 20 以上の事業をサポートするとともに、クラウド顧客のカスタマイズされたモデルのニーズに応え、プラットフォーム ベースのコンポーネントを通じてビジネス上の問題を解決します。

例えば、ある事業部門(BU)は、業務画像ライブラリから100万枚の画像を用いて自己教師あり事前学習を行いました。その後、この事前学習済みモデルに基づいて下流タスクを微調整し、ベースラインモデルと比較して1%の改善を実現し、最適な結果を達成しました。BUの複数の担当者は、自己教師あり事前学習済みモデルを用いて特徴抽出を行い、対照学習の特性を活用して画像特徴マッチングタスクを実行しました。同時に、同様の画像マッチングソリューションをパブリッククラウド上でも提供開始しました。

パブリッククラウドユーザー、特に初心者にとって、このプラットフォームはデータアノテーション、モデルトレーニング、サービス展開のプロセスを効率化し、スムーズですぐに使えるユーザーエクスペリエンスを提供します。画像分類、オブジェクト検出、インスタンスセグメンテーション、セマンティックセグメンテーション、キーポイント検出といった分野のアルゴリズムを網羅しています。ユーザーはデータを指定し、簡単なパラメータ調整を行うだけでモデルトレーニングを完了し、ワンクリックでサービスをオンラインで展開できます。上級開発者向けには、ノートブック開発環境とクラウドネイティブなクラスタトレーニングスケジューリングサポートが提供されます。ユーザーはこのフレームワークを使用して、カスタマイズされたアルゴリズムを開発し、事前トレーニング済みモデルを微調整することができます。

  • パブリック クラウドの顧客は、オブジェクト検出コンポーネントを使用してカスタマイズされたモデルをトレーニングし、従業員のインストールがビジネス シナリオの標準に準拠しているかどうかをインテリジェントに監査しました。
  • ユーザーレコメンデーションツールは、自己教師あり学習コンポーネントを用いて、多数のラベルなし広告画像を用いた画像表現モデルを学習しました。学習された画像特徴はレコメンデーションモデルに入力され、レコメンデーションモデルの最適化と組み合わせることで、クリック率が10%以上向上しました。
  • パネル研究開発メーカーは、EasyCV に基づくカスタマイズされた欠陥検出モデルを使用して、クラウドベースのトレーニングとエッジ側の展開および推論を完了しました。

V. ロードマップ

今後、毎月新しいバージョンをリリースする予定です。最新のロードマップは以下の通りです。

  • Transformer分類タスクのトレーニングパフォーマンスの最適化とベンチマーク
  • 自己教師学習により、検出とセグメンテーションのベンチマークが強化されます。
  • 検出とセグメンテーションのために、Transformer に基づいてさらに下流のタスクを開発します。
  • 一般的に使用される画像タスクデータセットのダウンロードとトレーニングアクセスインターフェースをサポート
  • モデル推論最適化機能の統合
  • より多くのドメイン モデルのエッジ展開のサポート

さらに、中長期的には、以下の探究的な方向性に引き続き注力し、あらゆる方面からのフィードバック、改善提案、技術的な議論を歓迎します。同時に、オープンソースコミュニティの構築に関心のある皆様の共同構築への参加を心より歓迎し、期待しております。

  • 自己教師あり学習技術とTransformerを組み合わせて、より効率的な事前学習済みモデルを探索する
  • トレーニングと推論の共同最適化に基づく軽量トランスフォーマーは、実際のビジネス シナリオでのトランスフォーマーの展開を推進します。
  • マルチモーダル事前トレーニングに基づいて、高レベルマルチタスク視覚処理における統合トランスフォーマーの応用を検討します。

参考リンク:

(1) モデル圧縮と量子化のチュートリアル: https://github.com/alibaba/EasyCV/blob/master/docs/source/tutorials/compression.md

(2) PAI-Blade: https://www.aliyun.com/activity/bigdata/blade

(3)類似グラフマッチングソリューション:https://help.aliyun.com/document_detail/313270.html

(4) PAI製品ページ: https://www.aliyun.com/product/bigdata/learn?spm=5176.19720258.J_3207526240.78.e9392c4aJWW64C