ディープ ラーニングに関する論文: RepViT: ViT の観点からモバイル CNN を再検討するおよびその PyTorch 実装

ディープ ラーニングの論文: RepViT: ViT の観点からモバイル CNN を再検討するおよびその PyTorch 実装
RepViT: ViT の観点からモバイル CNN を再検討する
PDF: https://arxiv.org/pdf/2307.09283.pdf
PyTorch コード: https://github.com/ shanglianlm0525/CvPytorch
PyTorch コード: https://github.com/shanglianlm0525/PyTorch-Networks

1。概要

この論文では、軽量 ViT のアーキテクチャ上の選択を導入することにより、軽量 CNN の効率的な設計を再検討します。これにより、リソースに制約のあるモバイル デバイス向けに設計された軽量 CNN の新しいファミリーである RepViT が登場しました。RepViT は、さまざまな視覚タスクにおいて既存の最先端の軽量 ViT および CNN を上回り、優れたパフォーマンスと遅延を示します。これは、モバイル デバイス向けの純粋に軽量な CNN の可能性を強調しています。

2 RepViT

主に MobileNetV3-L に対する最新の改善が加えられました。モバイル デバイスでの遅延と ImageNet でのトップ 1 の精度を考慮しました。その結果、純粋に軽量な CNN モデルの新しいファミリーである RepViT が誕生し、より低いレイテンシーとより高いパフォーマンスを実現できます。
ここに画像の説明を挿入します

2-1 トレーニングレシピの調整

トレイン: 300 エポック
オプティマイザー: AdamW
スケジュール:コサイン アニーリング学習率
ウォームアップ: 5 エポック
データ拡張:ミックスアップ、自動拡張、ランダム消去
正則化:ラベル スムージングの
アクティベーション: GeLU 置き換え Hardswish
ベンチマーク メトリック:レイテンシ メトリック

2-2 ブロック設計

トークン ミキサーとチャネル ミキサーを分離RepViT は深度畳み込みを高度化することで、チャネル ミキサーとトークン ミキサーを分離できます。パフォーマンスを向上させるために、構造的な再パラメータ化も導入され、トレーニング時に深いフィルターにマルチブランチ トポロジが導入されます。
ここに画像の説明を挿入します
拡張率を下げて幅を広げるチャネル ミキサーでは、元の拡張率は 4 ですが、これは MLP ブロックの隠れ次元が入力次元の 4 倍であることを意味し、これはコンピューティング リソースに多大な負担を課し、パフォーマンスに悪影響を及ぼします。推論時間に大きな影響を与えました。この問題を解決するには、拡張率を 2 に下げることでパラメータの冗長性と遅延を減らし、MobileNetV3-L の遅延を 0.65 ミリ秒に短縮できます。その後、ネットワークの幅を増やす、つまり各ステージのチャネル数を増やすことによって、Top-1 の精度は 73.5% に増加しましたが、遅延は 0.89 ミリ秒に増加しただけです。

2-3 マクロ設計

RepViT は、ステム、ダウンサンプリング レイヤー、分類子、ステージ全体のスケールなどのマクロ アーキテクチャ要素から始まります。これらのマクロアーキテクチャ要素を最適化することで、モデルのパフォーマンスを大幅に向上させることができます。

ステムの早期畳み込み:複雑な開始モジュールは重大なレイテンシ ボトルネックを引き起こすため、元の開始モジュールは早期畳み込みに置き換えられ、チャネル数は 24 に増加します。総遅延は 0.86 ミリ秒に短縮され、トップ 1 の精度は 73.9% に向上しました。
ここに画像の説明を挿入します
より深いダウンサンプリング層:まず 1x1 畳み込みを使用してチャネル次元を調整し、次に 2 つの 1x1 畳み込みの入力と出力を残差を通じて接続し、フィードフォワード ネットワークを形成します。さらに、ダウンサンプリング層をさらに深くするために前面に RepViT ブロックを追加し、ネットワークの深さを増し、解像度の低下による情報損失を削減しました。このステップにより、トップ 1 の精度が 75.4%、レイテンシー 0.96ms に向上します。
ここに画像の説明を挿入します
**単純な分類器。** 元の複雑な分類器を単純な分類器、つまりグローバル平均プーリング層と線形層に置き換えます。このステップにより、待ち時間が 0.77 ミリ秒に短縮され、トップ 1 の精度は 74.8 % になります。
ここに画像の説明を挿入します
全体的なステージ比:この改善では、論文では 1:1:7:1 というより良いステージ比を選択し、ネットワークの深さを 2:2:14:2 に増やし、より深いレイアウトを実現しました。このステップにより、トップ 1 の精度が 76.9% に向上し、遅延はわずか 1.02 ミリ秒になります。

2-4 微細設計

RepViT は、適切なコンボリューション カーネル サイズの選択やスクイーズアンド励起 (SE) 層の位置の最適化など、層ごとのマイクロ設計を通じて軽量 CNN を調整します。どちらの方法でもモデルのパフォーマンスが大幅に向上します。

カーネル サイズの選択: CNN のパフォーマンスとレイテンシは、通常、コンボリューション カーネル サイズの影響を受けることはよく知られています。MHSA のような長距離コンテキスト依存関係をモデル化するために、ConvNeXt は大規模なコンボリューション カーネルを使用し、その結果、パフォーマンスが大幅に向上します。ただし、大規模なコンボリューション カーネルは、計算の複雑さとメモリ アクセス コストのため、モバイルに適していません。MobileNetV3-L は主に 3x3 畳み込みを使用し、一部のブロックは 5x5 畳み込みを使用します。この論文では、これらを 3x3 コンボリューションに置き換えます。その結果、76.9% のトップ 1 の精度を維持しながら、レイテンシーが 1.00 ミリ秒に短縮されます。
スクイーズおよび励起層の配置:
チャネル アテンション モジュールとして、SE 層はデータ駆動型プロパティの欠如における畳み込みの制限を補うことができ、その結果、パフォーマンスが向上します。このペーパーでは、最小の遅延増分で精度の向上を最大化するために、すべてのステージでブロック間で SE 層を使用する戦略を設計します。このステップにより、遅延を 0.87 ミリ秒に削減しながら、トップ 1 の精度が 77.4% に向上します。

RepViT の全体的なアーキテクチャは次のとおりです。
ここに画像の説明を挿入します
上記の改善戦略を統合することにより、モデル RepViT の全体的なアーキテクチャが得られます。
ここに画像の説明を挿入します

3 実験

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/shanglianlm/article/details/132076012