RepVGG:最小限のアーキテクチャ、SOTAパフォーマンス、VGGモデルを再び素晴らしいものにする

RepVGG:

ミニマリストアーキテクチャとSOTAパフォーマンスにより、VGGモデルは再び素晴らしいものになります

この記事の著者について:Ding Xiaohanは清華大学の博士課程の学生であり、彼のスーパーバイザーはDing Guiguang准教授であり、彼の研究の方向性は基本的なニューラルネットワークモデルの設計と最適化です。

彼は、CVPR、ICML、ICCV、NeurIPSなどの国際会議の筆頭著者として5つの論文を発表しています。彼の個人的な研究と研究は、Baidu Scholarship(2019)によって資金提供されました

2020年のステーションBの年間弾幕は「YeQinghui」です。「マスターの青春が帰ってきた」と感じさせる瞬間がたくさんあるに違いありません。畳み込みネットワークのさまざまなハイパーパラメータが小数点以下3桁まで正確であるこの時代において、5〜6年前の牧歌的な時代、いくつかの畳み込み層がポイントを増やすことができる幸福を今でも覚えていますか?

私たちの最近の仕事であるRepVGGは、構造的な再パラメーター化を使用して、VGGスタイルのシングルチャネルミニマリストアーキテクチャを実装します。3x3ボリュームで最後まで、速度とパフォーマンスでSOTAレベルに達し、ImageNetで80%を超える精度を実現します。

NASがなくても、注意がなくても、あらゆる種類の新しい活性化関数がなくても、あるいは分岐構造がなくても、3x3の畳み込みとReLUだけで、SOTAのパフォーマンスを達成できますか?

RepVGG:VGGモデルを再び素晴らしいものにする

清華大学、MegviiTechnologyなど。

Ding Xiaohan、Zhang Xiangyu、Ma Ningning、Han Jungong、Ding Guiguang、Sun Jian

紙のアドレス:https://arxiv.org/abs/2101.03697

オープンソースの事前トレーニングモデルとコード(PyTorchバージョン):https://github.com/DingXiaoH/RepVGG。

700以上の星があり、モデルは何百回もダウンロードされています。ピアのフィードバックによると、実際のビジネスでは非常にうまく機能します。

(MegEngine版):https://github.com/megvii-model/RepVGG

バージョンを見るには長すぎます

方法はどれくらい簡単ですか?午後5時に記事を読んだ後、夕食前にコードを記述してトレーニングを開始すると、翌日結果を確認できます。この記事を読む時間がない場合は、下のコードをクリックして最初の100行を読んでください。

完全に理解します。https://github.com/DingXiaoH/RepVGG/blob/main/repvgg.py

以下は詳細な紹介です。

モデル定義

私たちが「VGGスタイル」と呼ぶものは、次のことを指します。

1.分岐構造はありません。これは、いわゆるプレーンアーキテクチャまたはフィードフォワードアーキテクチャです。

2.3x3コンボリューションのみを使用します。

3.活性化関数としてReLUのみを使用します。

以下は、RepVGGモデルの基本アーキテクチャを紹介する文です。20個のマルチレイヤー3x3畳み込みをスタックし、それらを5つのステージに分割します。各ステージの最初のレイヤーはstride = 2のダウンサンプリングであり、各畳み込みレイヤーはReLUを次のように使用します。活性化関数。

RepVGGモデルの詳細な構造を紹介する別の文:RepVGG-Aの5つのステージには[1、2、4、14、1]層があり、RepVGG-Bの5つのステージには[1、4、6、16]があります。 ]。、1]レイヤー、幅は数倍[64、128、256、512]です。ここでの倍数は、微調整なしで、1.5や2.5などの任意に指定された「整頓された」数値です。

トレーニング設定を一文で紹介します。ImageNetの120エポック、トリックなしで、PyTorchの公式例のトレーニングコードを使用することもできます。

なぜこのようなミニマリストモデルを設計するのでしょうか。また、このような単純で純粋に手作業で設計されたモデルは、どのようにしてImageNetのSOTAレベルに到達するのでしょうか。

VGGモデルを使用する理由

シンプルさが美しさであるという私たちの信念に加えて、VGGスタイルのミニマリストモデルには少なくとも5つの実用的な利点があります(詳細については論文を参照してください)。

1.3x3の畳み込みは非常に高速です。GPUでは、3x3畳み込みの計算密度(理論計算を使用時間で割ったもの)は、1x1および5x5畳み込みの4倍に達する可能性があります。

2.高度な並列処理のため、シングルチャネルアーキテクチャは非常に高速です。同じ計算量で、「大きくて全体」の計算効率は「小さくて壊れた」の計算効率をはるかに上回ります。

3.シングルチャネルアーキテクチャはメモリを節約します。たとえば、ResNetのショートカットは計算量を考慮していませんが、メモリ使用量は2倍になります。

4.シングルチャネルアーキテクチャは、より柔軟で、各レイヤーの幅を簡単に変更できます(プルーニングなど)。

5. RepVGGの主要部分には、3x3畳み込みとReLUの1つの演算子しかありません。専用チップを設計する場合、チップサイズまたはコストを考慮して、大規模な3x3コンボリューション-ReLUコンピューティングユニットを統合して、高効率を実現できます。シングルソケットアーキテクチャのメモリ節約機能は、ストレージユニットの削減にも役立つことを忘れないでください。

構造の再パラメータ化により、VGGは再び素晴らしいものになります

さまざまなマルチブランチアーキテクチャ(ResNet、Inception、DenseNet、さまざまなNASアーキテクチャなど)と比較して、VGGスタイルのモデルは、主にパフォーマンスが低いため、近年ほとんど注目されていません。たとえば、ある研究[1]は、ResNetの優れたパフォーマンスの1つの説明は、ResNetのブランチ構造(ショートカット)が多数のサブモデルの暗黙的なアンサンブルを生成することであると考えています(ブランチに遭遇するたびに、合計パスが2回になります)、シングルチャネルアーキテクチャには明らかにこの機能がありません。

マルチブランチアーキテクチャはトレーニングに有益であり、展開するモデルはシングルチャネルアーキテクチャであるため、分離されたトレーニングと推論のアーキテクチャを提案します。通常モデルを使用する方法は次のとおりです。

1.モデルをトレーニングする

2.モデルをデプロイします

しかし、ここでは、新しいアプローチを提案します。

1.マルチブランチモデルをトレーニングします

2.マルチブランチモデルをシングルチャネルモデルに同等に変換します

3.シングルチャネルモデルを展開します

このようにして、マルチブランチモデルトレーニングの利点(高性能)とシングルチャネルモデル推論の利点(高速とメモリ節約)を同時に使用できます。ここで重要なのは、明らかにこのマルチブランチモデルの構築形式と変換方法です。

私たちの実装は、RepVGGブロックを形成するためのトレーニング中に、並列1x1畳み込みブランチとIDマッピングブランチを各3x3畳み込みレイヤーに追加することです。この設計はResNetの慣例に基づいていますが、違いは、ResNetが2つまたは3つのレイヤーごとにブランチを追加し、各レイヤーを追加することです。

トレーニングが完了したら、モデルに対して同等の変換を実行して、展開モデルを取得します。1x1畳み込みは特別な(畳み込みカーネルには多くの0があります)3x3畳み込みであり、単位行列は特別な(単位行列を畳み込みカーネルとして使用する)1x1畳み込みであるため、この変換も非常に簡単です。畳み込みの線形性(具体的には加法性)に従って、各RepVGGブロックの3つのブランチを3x3の畳み込みにマージできます。

次の図は、この変換プロセスを示しています。この例では、入力チャネルと出力チャネルは両方とも2であるため、3x3畳み込みのパラメーターは4つの3x3行列であり、1x1畳み込みのパラメーターは2x2行列です。3つのブランチにはBN(バッチ正規化)レイヤーがあり、そのパラメーターには、累積平均と標準偏差、および学習されたスケーリング係数とバイアスが含まれていることに注意してください。推論中の畳み込み層とそれに続くBN層は、バイアスのある畳み込み層に同等に変換できるため(つまり、いわゆる「BNを吸収する」)、これは変換の実現可能性を妨げることはありません。

3つのブランチの「BNを吸収」した後(アイデンティティマッピングは「畳み込み層」と見なすことができ、そのパラメーターは2x2のアイデンティティ行列です!)、取得された1x1畳み込みカーネルは0から3x3にパッドされます。最後に、3つのブランチによって取得された畳み込みカーネルとバイアスを別々に追加できます。このように、変換前後の各RepVGGブロックの出力はまったく同じであるため、トレーニングされたモデルは、3x3の畳み込みのみで単一チャネルモデルに同等に変換できます。

この変換プロセスから、「構造の再パラメーター化」の本質がわかります。トレーニング中の構造はパラメーターのセットに対応し、推論中に必要な構造は別のパラメーターのセットに対応します。前者のパラメーターが同等に変換された後者の場合、前者の構造は後者に同等に変換できます。

実験結果

1080Tiでテストしたところ、RepVGGモデルの速度精度は非常に優れています。公正なトレーニング設定の下で、RepVGG速度の同じ精度はResNet-50の183%、ResNet-101の201%、EfficientNetの259%、およびRegNetの131%です。RepVGGはEfficientNetおよびRegNetよりも優れており、NASや大量の手動反復設計を使用していないことに注意してください。

これは、異なるアーキテクチャ間の実際の速度を測定するためにFLOPを使用することは適切ではないことも示しています。たとえば、RepVGG-B2のFLOPはEfficientNet-B3の10倍ですが、1080Tiの速度は後者の2倍であり、前者の計算密度が後者の20倍以上であることを示しています。

都市の景観でのセマンティックセグメンテーション実験では、速度が速い場合、RepVGGモデルはResNetシリーズよりもmIoUで約1%から1.7%高く、mIoUが0.37%を超える場合は62%速くなります。

さらに、一連のアブレーション研究と比較実験により、構造の再パラメータ化がRepVGGモデルの優れたパフォーマンスの鍵であることが示されています(詳細については、論文を参照してください)。

最後に、RepVGGは、GPUおよび専用ハードウェア用に設計された効率的なモデルであり、高速を追求し、メモリを節約し、パラメーターの量と理論計算にあまり注意を払わないことに注意してください。低コンピューティングパワーデバイスでは、MobileNetおよびShuffleNetシリーズほど適切ではない場合があります。

参照

[1] Andreas Veit、Michael J Wilber、およびSergeBelongie。残余ネットワークは、比較的浅いネットワークのアンサンブルのように動作します。神経情報処理システムの進歩、ページ550–558、2016年。2、4、8

おすすめ

転載: blog.csdn.net/duxinshuxiaobian/article/details/112975664