双子: 効率的な視覚的注意モデルの設計を再考する

双子: 効率的な視覚的注意モデルの設計を再考する

著者 | 湘湘天志 張波 他

Twins は Meituan とアデレード大学が提案した視覚的注意モデルです。関連論文は NeurIPS 2021 カンファレンスに採択されました。この記事では主に、Twins が解決した困難、設計と実装のアイデア、および Meituan シナリオでの調査と実装について説明します。ビジュアル アルゴリズムの研究開発に携わる学生にとって、この記事が役に立ち、刺激になることを願っています。

導入

双子  [1]  これは、Meituanとアデレード大学が提案した視覚的注意モデルです。関連論文はNeurIPS 2021カンファレンスに採択され、コードはGitHubでオープンソース化されています。 NeurIPS(Conference on Neural Information Processing Systems)は、機械学習や計算神経科学に関する学術会議であり、人工知能分野におけるトップクラスの国際会議でもあります。 Twins は、Twins-PCPVT と Twins-SVT という 2 種類の構造を提案しました。

  • Twins-PCPVT ピラミッドトランスフォーマーモデル PVT   [2]   CPVTのチーム変更における位置エンコーディング(位置エンコーディング)を修正  [3]  本論文で提案された条件付き位置エンコーディング(CPE)は、モデルを並進等変(つまり、入力画像を並進させると、出力もそれに応じて変化する)にし、異なる空間スケールの特徴を柔軟に処理できるため、画像のセグメンテーションや検出など、可変長入力を伴うシナリオで広く使用できます。
  • Twins-SVT は、画像特徴の空間次元をグループ化し、各ローカル空間の自己注意を個別に計算し、グローバル自己注意メカニズムを使用してそれらを融合する、空間的に分離可能な自己注意メカニズム (SSSA) を提案します。このメカニズムは計算効率が高く、パフォーマンスも向上します。

Twins シリーズのモデルは実装が簡単で展開しやすく、ImageNet 分類、ADE20K セマンティック セグメンテーション、COCO オブジェクト検出などの複数の従来の視覚タスクで業界をリードする結果を達成しています。

背景

2020年9月、Googleの視覚的注意モデル(Vision Transformer、ViT)   [4]  もともと自然言語処理に使用されていたTransformerは、   [5]  視覚分類タスクに適用されます。 ViT は入力画像を複数の画像パッチに分割し、画像パッチを Transformer エンコーダーの入力として単語と比較します (図 1 を参照)。L 層エンコーダーで処理された後、通常の多層パーセプトロン (MLP) を使用してカテゴリ空間にマッピングされます。 ViT のモデル性能は畳み込みニューラル ネットワークを大幅に上回っており、その後急速に現在の視覚研究の主要なホットスポットへと発展しました。

図1 視覚的注意モデル(ViT)は、自然言語処理タスクに使用されるTransformerを視覚タスクに適用します(出典:ViT [4])Transformerエンコーダーにおけるマルチヘッド注意の基本的な計算方法は次の式で与えられます。ここで、Q、K、VはそれぞれQuery、Key、Valueの略語、dはエンコード次元、softmaxは正規化関数であり、注意メカニズムは、入力をその関連性に応じて重み付けするプロセスとして理解できます。

バックボーン ネットワークとしてのネイティブ視覚注意モデルは、ターゲット検出やセマンティック セグメンテーションなどの一般的な高密度予測タスクにうまく適応できません。さらに、畳み込みニューラル ネットワークと比較すると、ViT は通常、より多くの計算を必要とし、推論速度が遅いため、実際のビジネスへの適用には適していません。したがって、より効率的な視覚注意モデルを設計し、それを下流のタスクにより適切に適応させることが、現在の研究の焦点となっています。香港大学とセンスタイムが共同で提案したピラミッド視覚注意モデル(PVT)   [2]  畳み込みニューラル ネットワークの画像ピラミッド パラダイムは、マルチスケールの特徴を生成するために借用されています。この構造は、図 2 (c) に示すように、高密度タスクの既存のバックエンドと直接組み合わせて、さまざまな下流タスクをサポートできます。ただし、PVT は静的で固定長の位置エンコーディングを使用し、補間によって可変長入力に適応するため、入力機能に基づいて具体的にエンコードすることができず、パフォーマンスが制限されます。また、PVT は ViT のグローバル自己注意メカニズムを使用するため、計算量は依然として大きいです。

図2 PVTは畳み込みニューラルネットワークのピラミッドパラダイム(a)を視覚的注意モデル(b)に移行し、(c)を取得して分類、検出、セグメンテーションタスクに適応します(出典:PVT   [2]

マイクロソフトリサーチアジアが提案したSwin   [6]   PVT のピラミッド構造が再利用されます。自己注意を計算する際には、特徴のウィンドウ グループ化の方法が使用されます (図 3 を参照)。これにより、注意メカニズムが小さなウィンドウ (赤いグリッド) に制限され、その後、異なるグループの情報が相互作用できるようにウィンドウがずらされます。これにより、グローバルな自己注意の計算を回避し、計算量を削減できます。欠点は、グローバルな注意が失われることです。同時に、ウィンドウのずれによって引き起こされる情報相互作用能力は比較的弱く、パフォーマンスに一定の影響を与えます。

図3 Swinは各赤いグリッドのローカル自己注意を計算し、異なるレイヤー間でウィンドウをシフトすることでローカル注意間の相互作用を可能にします(出典:Swin [6])

視覚的注意モデルの設計における難しさ

簡単にまとめると、視覚注意モデルの現在の設計で解決する必要がある困難は次のとおりです。

  • 高効率コンピューティング: 畳み込みニューラル ネットワークによるコンピューティング効率のギャップを縮小し、実用的なビジネス アプリケーションを促進します。
  • 柔軟な注意メカニズム: 畳み込みのローカル受容野と自己注意のグローバル受容野を備え、両方の利点を組み合わせています。
  • 下流タスクの利点: 検出やセグメンテーションなどの下流タスク、特に入力スケールが変化するシナリオをサポートします。

双子モデルデザイン

これらの困難な問題から出発し、現在の視覚注意モデルの詳細な分析に基づいて、Meituan のビジュアル インテリジェンス部門は、自己注意メカニズムの設計アイデアを再考し、ターゲットを絞ったソリューションを提案しました。まず、PVT   [2]  およびCPVT   [4]  これらを組み合わせると、Twins-PCPVT が形成され、スケール変更シナリオでの下流タスクをサポートします。自己注意機構の効率性と受容野の観点から、局所的受容野と全体的受容野と互換性のある新しいタイプの自己注意が設計され、空間的に分離可能な自己注意と呼ばれる。   (空間的に分離可能な自己注意、SSSA )、Twins-SVT を形成します。

ツインズ-PCPVT

Twins-PCPVTは、PVT(およびDeiT)の位置をエンコードすることによって実現されます。   [7]  固定長の学習可能な位置エンコーディングはCPVTに置き換えられた。   [4]  条件付き位置エンコーディング (CPE )CPE を生成するモジュールは、位置エンコーディング ジェネレーター(PEG ) と呼ばれます。Twins モデルにおける PEG の具体的な位置は、以下の図 4 に示すように、各ステージの最初の Transformer Encoder の後です。

図4 CPVTが提案した位置エンコーダ(PEG)を使用したTwins-PCPVT-Sモデル構造

条件付き位置エンコーディング

下の図5はCPVTのチームを示しています。   [4]  で提案された条件付き位置エンコーダのエンコードプロセス。初め、   入力シーケンスは次のように変換されます  入力された特徴は  入力に基づいて条件付き位置エンコーディングが行われ、出力サイズは入力特徴と同じなので、   シーケンスと入力機能は、追加によって要素ごとに融合されます。

図5 条件付き位置エンコーダ(PEG)

その中で、エンコード機能  これは、単純な深さ方向の分離可能な畳み込みまたはその他のモジュールによって実装できます。 PEG 部分の簡略化されたコードは次のとおりです。入力feat_tokenの形状は次のようになります。   テンソルの バッチの場合、  トークンの数です。  はエンコード次元(図5と同じ)である。   )。 feat_tokenを変換する  テンソル cnn_featが処理された後、深さ方向に分離可能な畳み込み (PEG) 演算が実行され、入力 feat_token と同じ形状のテンソル、つまり条件付き位置エンコーディングが生成されます。

 クラスPEG ( nn . モジュール):
def __init__ ( selfin_chansembedded_dim ):
super ( PEGself )。__ init__ ()
self.peg = nn.Conv2d ( in_chansembed_dim 3、1、1bias = True groups = embed_dim )

def forward ( selffeat_tokenHW ):
B NC = feat_token.shape
cnn_feat = feat_token . transpose ( 1 , 2 ). view ( B , C , H , W ) です。
x = 自己.peg ( cnn_feat ) + cnn_feat
x = x .flatten ( 2 ) .transpose ( 1,2 )
x を返す

条件付き位置エンコーディング CPE は入力に基づいて生成され、可変長入力をサポートしているため、Twins はさまざまな空間スケールの特徴を柔軟に処理できます。さらに、PEG は畳み込みを使用して実装されているため、Twins は変換の等価性も保持します。これは、画像タスクにとって非常に重要です。たとえば、検出タスクでターゲットが移動した場合、検出ボックスもそれに応じて移動する必要があります。実験では、Twins-PCPVT シリーズ モデルが、分類タスクと下流タスク、特に高密度タスクのパフォーマンスを直接向上できることが示されています。このアーキテクチャは、PVT が CPVT の条件付き位置エンコーディングによって強化された後にのみ非常に優れたパフォーマンスを達成できることを示しており、PVT で使用される位置エンコーディングがそのパフォーマンスを制限することを示しています。

ツインズ-SVT

Twins-SVT (下の図6を参照) は、グローバル注意戦略を最適化および改善します。グローバルアテンション戦略の計算の複雑さは画像の解像度の2乗に比例して増加するため、パフォーマンスを大幅に低下させることなく計算の複雑さを軽減する方法も研究のホットスポットです。 Twins-SVT は、局所的注意と全体的注意を組み合わせた新しいメカニズムを提案します。これは、畳み込みニューラル ネットワークの深さ方向に分離可能な畳み込み (Depthwise Separable Convolution) に匹敵するため、空間的に分離可能な自己注意 ( SSSA ) と名付けられています。深さ方向に分離可能な畳み込みとは異なり、Twins-SVT によって提案された空間的に分離可能な自己注意 (下の図 7 を参照) は、特徴の空間次元をグループ化し、各グループ内で自己注意を計算し、グループ化された注意の結果をグローバルに融合します。

図 6 Twins-SVT-S モデル構造。右側は、隣接する 2 つのトランスフォーマー エンコーダーの組み合わせを示しています。

図7 ツインズが提案した空間的に分離可能な自己注意メカニズム(SSSA)

空間的に分離可能な自己注意は、交互ローカル・グローバル自己注意 (LSA-GSA) のメカニズムを採用しており、グループ化された計算のローカル注意をグローバル注意に効率的に伝達できます。 LSAは、入力値の2乗から計算コストを大幅に削減できます。   線形に縮小  。グループ化されたローカルアテンション LSA の主な実装 (初期化関数は省略) は次のとおりです。

 クラスLSA ( nn . モジュール):
def forward ( selfxHW ):
BNC = x . 形状
h_group , w_group = H // self.ws, W // self.ws # ウィンドウサイズに応じて、長さ (H) と幅 (W) の次元でグループの数を計算します。
合計グループ数= h_group * w_group
x = x . reshape ( Bh_groupself . wsw_groupself . wsC ). transpose ( 23 ) # 入力をウィンドウに従ってグループ化しますB * h_group * ws * w_group * ws * C
qkv = self . qkv ( x ). reshape ( B , total_groups , - 1 , 3 , self . num_heads , C // self.num_heads).permute(3, 0, 1, 4, 2, 5) # 各グループの q、k、v を計算する
qkv = qkv [ 0 ]、 qkv [ 1 ]、 qkv [ 2 ]
attn = ( q @ k . transpose ( - 2 , - 1 )) * self . scale #各グループの注目度を計算する
attn = attn.softmax ( dim = -1 ) #注意正規化
attn = self.attn_drop ( attn ) # アテンションドロップアウトレイヤー
attn = ( attn @ v ). transpose ( 2 , 3 ). reshape ( B , h_group , w_group , self . ws , self . ws , C ) # 各グループ内のローカル自己注意を使用してv に重み付けする
x = attn . transpose ( 2 , 3 ). reshape ( B , N , C ) を記述します。
x = self.proj ( x ) # MLP レイヤー
x = self.proj_drop ( x ) # ドロップアウト
x を返す

LSA アテンションを効率的に統合する GSA の主要な実装 (初期化関数は省略) は次のとおりです。 ViT の元のグローバル自己注意と比較すると、GSA の K と V は削減された特徴に基づいて計算されますが、Q はグローバルであるため、注意をグローバル レベルに復元できます。このアプローチにより、計算量が大幅に削減されます。

 クラスGSA ( nn . モジュール):
def forward ( selfxHW ):
BNC = x . 形状
q = self . q ( x ). reshape ( B , N , self . num_heads , C // self.num_heads).permute(0, 2, 1, 3) # 入力特徴 x に基づいてクエリテンソル q を計算する
x_ = x . 並べ替え( 0 , 2 , 1 ). 形状変更( B , C , H , W )
x_ = self.sr ( x_ ) . reshape ( B , C , -1 ) .permute ( 0,2,1 ) # 入力特徴量のサイズを縮小してx_ 得る
x_ = self.norm ( x_ ) # レイヤー正規化LayerNorm
kv = self . kv ( x_ ). reshape ( B , - 1 , 2 , self . num_heads , C // self.num_heads).permute(2, 0, 3, 1, 4) # 縮小されたサイズの特徴 x_ に基づいて k、v を計算する
k , v = kv [ 0 ], kv [ 1 ]
attn = ( q @ k . transpose ( - 2 , - 1 )) * self . scale #グローバル自己注意を計算する
attn = attn.softmax ( ディメンション= -1 )
attn = self.attn_drop (attn )
x = ( attn @ v ). transpose ( 1 , 2 ). reshape ( B , N , C ) # グローバル自己注意に従ってv重み付けする
x = 自己.proj ( x )
x = 自己.proj_drop ( x )
x を返す

上記のコードからわかるように、SVT シリーズは、その実装において既存の主流のディープラーニング フレームワークの既存の操作を使用しており、追加の基盤の適応を必要としないため、導入が比較的簡単です。

実験

ImageNet-1k 分類

Twins-PCPVT と Twins-SVT は、同じ規模のモデルと比較して、ImageNet-1k 分類タスクで優れたスループットを備えた SOTA 結果を達成しました。さらに、Twins は TensorRT デプロイメントをサポートしています。Twins-SVT-S モデルは、NVIDIA TensorRT 7.0 推論を使用して 1.6 倍高速化でき、スループットは PyTorch で達成される 1059 (画像/秒) から1732 に増加できます。

表1 ImageNet-1k分類

ADE20Kセグメンテーション

セマンティックセグメンテーションタスク ADE20K では、Twins モデルはバックボーン ネットワークとして FPN と Upernet バックエンドを使用し、以下の表 2 に示すように、PVT や Swin よりも優れた結果を達成しています。

表2 ADE20Kのセグメンテーション

COCO オブジェクト検出 (RetinaNet フレームワーク)

RetinaNet フレームワークを使用した従来の COCO オブジェクト検出タスクでは、Twins モデルが PVT よりも大幅に優れたパフォーマンスを発揮します。さらに、Twins-PCPVT シリーズは、以下の表 3 に示すように、CPVT エンコード方式で強化された後、PVT が同じ大きさの Swin モデルに匹敵できることを証明しています。

表3 COCOオブジェクト検出(RetinaNetフレームワーク)

COCO オブジェクト検出 (Mask-RCNN フレームワーク)

Mask-RCNN フレームワークでは、Twins モデルは COCO に対しても優れたパフォーマンス上の利点があり、下の表 4 に示すように、より長い時間 (3 倍) トレーニングしてもその利点は維持されます。

表4 COCO物体検出(Mask-RCNNフレームワーク)

高精度マップの多要素セマンティックセグメンテーションシナリオへの応用

高精度地図は自動運転の重要な要素であり、美団の無人配達、オンライン配車サービスなどの事業において非常に重要な役割を果たしている。高精度マッピングの前段階として、道路シーンの主要要素の意味抽出は、マッピングの品質に直接影響を及ぼします。多要素セマンティックセグメンテーションはセマンティック抽出の重要な部分であり、業界ではこれを実現するために一般に従来のセマンティックセグメンテーションアルゴリズムが使用されています。ここではDeepLabシリーズ[8]を使用する。  たとえば、セグメンテーション モデルは通常、エンコードとデコードの 2 つの段階に分かれており、畳み込みニューラル ネットワークを使用して特徴を抽出し、空間ピラミッド プーリング異なるスケールのアトラス畳み込み演算(下の図 8a を参照) を採用して、グローバル受容野を拡大します。この設計は、一方では畳み込みニューラル ネットワークの特徴抽出機能によって制限され、他方ではグローバル関係をモデル化する機能が限られているため、セグメンテーション タスクの詳細や、十分に明確でないエッジへの注意が不十分になります。

図8 古典的なセマンティックセグメンテーションモデルアーキテクチャ(DeepLabV3+ [8])

Twins は視覚注意モデルの効率とパフォーマンスを大幅に向上させましたが、畳み込みニューラル ネットワークに近い推論効率を維持するためには、モデルのバックエンド構造をさらに最適化する必要があります。他の方法と公平に比較​​するために論文で使用されているより重いFPNとは異なる  [9]  またはUperNet   [10]  バックエンドについては、下の図 9 に示すようにシンプルで軽量なバックエンドを設計し、ビジネス データセットでのパフォーマンスと推論速度の適切なバランスを実現しました。このバックエンドはTwinsの特性に基づいて設計されています。Twinsはグローバルアテンションとローカルアテンションの両方を考慮しているため、バックエンドは受容野を増やすために複雑な設計を採用する必要がありません。線形変更とスケーリングを通じて、各スケールの特徴を同じサイズに復元し、それらを連結(Concat)するだけです。セグメンテーション結果は、簡単な次元変換後に出力できます。

図9 軽量ツインズ分割バックエンド設計

下の図 10 のセグメンテーション結果の比較から、Twins をバックボーン ネットワークとして使用したモデルでは、分離帯、道路標識、街灯柱、その他の主要な道路要素など、より細かい画像エッジを抽出でき、ラベル付けされた真の値 (Ground Truth) との差が小さくなっていることがわかります。

図10 道路多要素意味抽出結果の比較

要約する

視覚注意モデルは現在、視覚の分野で研究の焦点となっており、さまざまな視覚タスクにおいて従来の畳み込みニューラル ネットワークよりも優れていることが実証されています。ただし、その効率性は依然として慎重に最適化する必要があり、その有効性をさらに向上させる必要があります。より効率的な注意モデルの探求と設計、最先端の視覚研究の産業用アプリケーションへの変換の促進も、Meituan のビジネスにとって大きな意義を持っています。今回、Meituan とアデレード大学が設計した Twins シリーズ モデル アーキテクチャにより、コンピューティング コストが効果的に削減され、モデルのパフォーマンスが向上し、検出やセグメンテーションなどの高密度タスクのサポートが向上しました。さらに、Meituan の高精度マップの要素のセマンティックセグメンテーションに Twins を適用することで、より洗練されたセグメンテーション結果が得られ、高精度マップの構築品質が向上しました。ビジュアルチームは、その後も効率的な視覚的注意モデルの設計を探求し続け、それを Meituan のより幅広いビジネスシナリオで実践し、適用したいと考えています。

<<:  Google ドキュメントでテキスト要約を自動的に生成できるようになりました。

>>:  TiDB v5.1 体験: TiDB で機械学習モデルをトレーニングしました

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

スタンフォード大学の10のグラフはAI開発の新たなトレンドを分析している

スタンフォード大学のAI 100のAI Indexプロジェクトは、人工知能の活動と進歩を追跡し、人工...

DeepTraffic: MIT シミュレーション ゲームがディープラーニングを使用して交通渋滞を緩和

[[196857]]渋滞に巻き込まれるのはイライラするだけでなく、費用もかかります。頭痛の原因になっ...

顔認識アルゴリズムは人間の認識能力を超えている

コンピューター科学者たちは、人間自身よりも顔を識別できる新しい顔認識アルゴリズムを開発した。誰もが、...

北京大学の研究者らは、今回AIが「平らになる」理由を発見した。それはすべてデータセットのせいだ

人工知能をトレーニングする場合、AI は人間のタスクを完了するための不可解な方法を学習してしまうこと...

PubMedBERT: 生物医学的自然言語処理のためのドメイン固有の事前トレーニング済みモデル

今年、大規模言語モデルが急速に発展したため、BERT のようなモデルは「小規模」モデルと呼ばれるよう...

GoogleのオープンソースビッグモデルGemmaは何をもたらすのか?「Made in China」のチャンスはすでに到来していることが判明

Google の珍しいオープン AI は、オープンソースのビッグモデルに何をもたらすのでしょうか? ...

ロボット対コンベア:倉庫物流における戦い

ありがたいことに、倉庫のピッキング作業で荷物を手作業で扱う時代は終わりつつあります。コンベアを使用す...

Pythonアルゴリズムの正しい実装の紹介

経験豊富な Python プログラマーにとって、Python アルゴリズムの実装は難しくありません。...

未来を垣間見るのに役立つ9つの主要な人工知能開発トレンド

人工知能はテクノロジー界でホットな話題となっている。それは人々の生活を変えただけでなく、考えられるあ...

...

...

アルトマンの巨大な AI 帝国を深く探ります。核融合プラントから不死技術センターまで、その規模は驚異的です。

制御された核融合から AGI、そしてチップ業界全体の再編まで、アルトマン氏の将来の AI 展望は、も...

2021年にITリーダーがAIと機械学習に期待すること

毎年末と翌年の初めに、IT 思想リーダーが翌年のテクノロジー、革新的なサービス、業界の進歩などの開発...

ソフトウェア開発に AI とアジャイル管理を導入するための 9 つのヒント

[51CTO.com クイック翻訳] ご存知のとおり、人工知能 (AI) は 1956 年の誕生以来...

英雄の呼びかけ | 2018 WOT グローバル人工知能技術サミット: 英雄を呼ぶ宣言文

[51CTO.com オリジナル記事] 朗報です!テクノロジー愛好家たちの熱い期待の中、1年間開催さ...