ドロップアウト4

こちらも4時に到着

SR タスクに Dropout を導入すると、モデルの汎化パフォーマンスが大幅に向上し、SRResNet のパフォーマンスさえも RRDB を上回るレベルに向上することがわかり、後者のパラメータ量は RRDB よりも多くなります。従来の10倍!

単一画像超解像の分野でドロップアウト操作を再び素晴らしいものにしましょう

論文名:画像超解像におけるリフラッシュドロップアウト

用紙のアドレス:

https://arxiv.org/pdf/2112.12089.pdf

画像超解像度 (SR) は、低解像度の入力から高解像度の画像を復元することを目的とした、古典的な低レベル ビジョン タスクです。強力な畳み込みニューラル ネットワーク (CNN) のおかげで、SR ネットワークはトレーニング データを簡単に適合させ、印象的な結果を達成できます。これらを現実世界の画像にさらに拡張するために、研究者らは未知のダウンサンプリング カーネルや劣化を処理できるブラインド SR 手法の設計に着手しました。しかし、SR トレーニング戦略に関する研究は比較的少ないです。ネットワークのサイズが大幅に大きくなると、過学習の問題が顕著になり、汎化能力が弱くなります。

従来の SR タスク:

  • ドロップアウト操作はもともと、低レベルのタスクである SR の性質と矛盾するように見える、高レベルのビジュアル タスクにおけるオーバーフィッティングの問題を軽減するために設計されました。

  • ドロップアウトとは、トレーニング中にいくつかのニューロンをランダムに破棄して複数のサブネットワークを生成し、各サブネットワークをトレーニングできるようにすることです。しかし、古典的な回帰問題として、SR は高レベルのタスクとは異なる動作をします。つまり、ドロップアウト操作の影響を非常に受けやすいのですいくつかの特徴やピクセルをランダムに削除すると、出力パフォーマンスが大幅に低下する可能性があります。

  • 従来の SR タスクでは、オーバーフィッティングはそれほど深刻な問題ではないようです。

上記の理由により、Dropout は従来の SR タスクで広く使用されません。しかし今、この状況は変わりました。最近のブラインド SR タスクでは過学習が大きな問題となっています。縮退効果への過学習により、現実世界のシナリオではモデルのパフォーマンスが低下し、単純にデータとネットワーク サイズを増やすだけでは汎化能力を向上させることはできません。 。

そこで、著者は従来の SR タスクからドロップアウトの効果を研究し始めました。その結論は、ドロップアウト操作を適切に使用することで SR モデルのパフォーマンスを大幅に向上できるということでした。以下の図 1 に示すように、以前とのパフォーマンスの比較は、さまざまな実験設定で Dropout を使用した後、次のようになります。 Dropoutの導入により、モデルの汎化パフォーマンスが大幅に向上し、さらに SRResNet のパフォーマンスが RRDB よりも優れたレベルに向上し、後者のパフォーマンスは 10 倍以上向上します。前者のパラメータの数! 重要なことは、Dropout を追加するのに必要なコードは 1 行だけであり、非常に手間がかからないということです。

ドロップアウト操作

ドロップアウト操作の重要なアイデアは、トレーニング中にニューラル ネットワークからいくつかのユニット (およびその接続) をランダムにドロップすることです。したがって、トレーニング フェーズでは、ドロップアウト操作により、大規模なネットワーク全体ではなく、サブネットワークの一部のみを毎回更新し、推論フェーズですべてのサブネットワークの結果を平均することができます。

トレーニング中に、入力内の一部の要素はベルヌーイ分布に従って確率 p でランダムに 0 に設定され、出力は 1/1-p で乗算されます。
ドロップアウト操作は効果的な正則化手法であることが証明されています。
入力は任意の次元にすることができ、出力と入力の次元は同じです。

次に、PyTorch が提供する 3 つのドロップアウト操作について説明します。

 torch.nn.Dropout (p=0.5、その場=偽)

機能: 入力の一部の要素をランダムに 0 に設定し、1/1-p を乗算します。
入力: (H、W)
出力: (H、W)

m = nn.Dropout(p=0.2)
input = torch.randn(3, 2)
output = m(input)
print(input)
print(output)

# Input:
tensor([[ 0.7843,  0.0706],
        [ 0.4554, -0.3986],
        [-0.5532,  0.2141]])

# Output: 
tensor([[ 1.5686,  0.0000],
        [ 0.9108, -0.7971],
        [-1.1065,  0.0000]])

 torch.nn.Dropout2d (p=0.5、in place=False)

機能: 入力のチャンネルのすべての要素をランダムに 0 に設定し、1/1-p を乗算します。
入力: (N、C、H、W)
出力: (N、C、H、W)

m = nn.Dropout2d(p=0.5)
input = torch.randn(1, 3, 2, 2)
output = m(input)
print(input)
print(output)

# Input:
tensor([[[[ 0.9778, -1.0291],
          [ 1.9370,  0.6675]],

         [[ 0.3541, -1.5406],
          [ 0.8875, -0.2548]],

         [[ 0.9533,  0.1804],
          [-2.1946, -1.9770]]]])

# Output: 
tensor([[[[0., -0.],
          [0., 0.]],

         [[0., -0.],
          [0., -0.]],

         [[0., 0.],
          [-0., -0.]]]])

 torch.nn.Dropout3d(p=0.5,inplace=False)

機能: 入力のチャンネルのすべての要素をランダムに 0 に設定し、1/1-p を乗算します。
入力: (N、C、D、H、W)
出力: (N、C、D、H、W)

m = nn.Dropout3d(p=0.5)
input = torch.randn(1, 3, 2, 2, 2)
output = m(input)
print(input)
print(output)

# Input:
tensor([[[[[-0.5544, -0.9302],
           [ 0.2269,  2.7334]],

          [[-1.3619,  0.5699],
           [ 0.0862,  0.9609]]],


         [[[-1.8406, -2.6052],
           [-0.0212,  0.1684]],

          [[ 0.7024, -0.2568],
           [ 0.3187, -0.7208]]],


         [[[ 1.0922,  0.5909],
           [-0.7926,  1.9536]],

          [[ 1.0438, -0.3441],
           [-0.5067, -0.0417]]]]])

# Output:
tensor([[[[[-1.1088, -1.8604],
           [ 0.4539,  5.4667]],

          [[-2.7237,  1.1397],
           [ 0.1724,  1.9217]]],


         [[[-3.6813, -5.2105],
           [-0.0424,  0.3367]],

          [[ 1.4049, -0.5136],
           [ 0.6374, -1.4417]]],


         [[[ 0.0000,  0.0000],
           [-0.0000,  0.0000]],

          [[ 0.0000, -0.0000],
           [-0.0000, -0.0000]]]]])

興味深い超解像実験観察

観察 1: パフォーマンスに悪影響を与えるドロップアウト

このサブセクションの実験は通常の SR 設定の下で実行され、唯一の劣化はバイキュービック ダウンサンプリングです。使用されるドロップアウト戦略は、チャネルごとのドロップアウトです (つまり、チャネル全体の特性がランダムに 0 に設定されます)。以下の図 2 に示すように、ドロップアウト操作が追加された後、パフォーマンスは急激に低下します (図 2a)。この結果は私たちの常識と一致しています。これは、回帰モデルが分類モデルとは異なることを示しています。回帰では、ネットワーク内の各要素が最終出力に寄与します。これは、離散的なクラス ラベルではなく、連続的な RGB 値です。

観察 2: ドロップアウトはパフォーマンスに影響を与えない

著者は、上記の結論と矛盾する特殊なケース (図 2b) も発見しました。つまり、ドロップアウト操作は最後の層の畳み込みの前にのみ追加されますモデルのパフォーマンスには影響がないことがわかります。これは、最後の層の特徴はランダムに破棄でき、回帰結果に影響を与えないことを意味します。これらの機能はどうなったのでしょうか? これは、回帰ネットワークと分類ネットワークには共通点があるということですか?

観察 3: ドロップアウトはパフォーマンスに良い

著者はまた、上記の結論に反する状況 (図 2c、d) を発見しました。多重劣化下では、ドロップアウト操作が超解像に有益ですこれは、ドロップアウト操作により超解像モデルの汎化性能をある程度向上させることができることを意味します。

この実験の設定は次のとおりです。トレーニング データには複数の劣化効果が含まれています。つまり、Real-SRResNet です。著者は、最後から 2 番目の畳み込み層にドロップアウト操作を追加しました。テスト データには、バイキュービック ダウンサンプリング データ (トレーニング データに含まれる) とニアレスト ネイバー ダウンサンプリング データ (トレーニング データには含まれない) が含まれます。図 2 (c)(d) から、Dropout によりパフォーマンスが向上し、モデルの汎化能力が向上することがわかります。

スーパースコアタスクでのドロップアウトの使用

このセクションの実験モデルは SRResNet と RRDB です。このサブセクションの結論は、CNN モデルに基づく他の SR ネットワークに簡単に一般化できます。これは、これらのネットワークが同様のアーキテクチャを共有しているためです。Dropout はシンプルかつ柔軟な操作性を備え、さまざまな応用方法を備えています。一般に、ドロップアウトの効果は主に 2 つの側面に依存します。1 つは ドロップアウトの位置であり、もう 1 つは ドロップアウトの戦略 (使用される次元とドロップアウトの確率 p)です 。

ドロップアウトの場所

以下の図 3 は、ドロップアウト操作のさまざまな使用場所の概略図であり、3 つのカテゴリに分類できます。

  • 最終コンバージョン前のドロップアウト

  • ネットワークの途中でドロップアウトする

  • 残留ネットワークでのドロップアウト

last-conv 前のドロップアウト: 図 3(a) に示すように、Hinton らは最初に高レベルのタスクにドロップアウトを導入し、最終分類器の前に使用しました。同様に、著者らは出力畳み込み層 (last-conv と呼ばれる 64 チャネルから 3 チャネルまで) の前にもドロップアウトを適用します。

ネットワークの中央でのドロップアウト: 図 3(a) に示すように、一般性を失わずに、著者は SRResNet 残差ブロック (16 ブロック) を 4 つのグループに分割します。各グループは 4 つの残差ブロックで構成されます。著者は代表的な位置として B4、B8、B12、B16 を選択し、その中の数字はどのブロックの後にドロップアウトが追加されるかを示します。

残差ネットワークでのドロップアウト: 図 3(c) に示すように、複数のドロップアウト操作がブロック内に追加されます。以前の実験によると、このドロップアウト ブロックをネットワークの奥深くで使用すると、良好な結果が得られる可能性があります。この論文の著者は、SR ネットワークでドロップアウト ブロックを使用する 3 つの異なる方法を設計し、それぞれオールパート、ハーフパート、クォーターパートと名付けました。

ドロップアウト戦略 (使用される次元とドロップアウト確率 p)

ドロップアウト操作は最初は完全に接続されたレイヤーで使用されるため、どの次元をドロップするかを決定する必要はありません。ただし、畳み込み層で使用すると、さまざまな次元 (要素ドロップアウトとチャネル ドロップアウト) でさまざまな効果がもたらされます。

ドロップアウト確率 p は、チャネルまたは要素のドロップアウト率を決定します。一般に、ドロップアウト確率 p が大きすぎると、パフォーマンスが低下します。分類ネットワークでは、50% の確率は最終結果には影響しませんが、汎化パフォーマンスは向上します。ただし、SR ネットワークの堅牢なパフォーマンスは分類ネットワークのパフォーマンスよりはるかに低いため、この確率は SR ネットワークにとって大きすぎる可能性があります。モデルに影響を与えずにパフォーマンスの向上を実現するために、著者は 3 つの確率 (10%、20%、30%) を試しました。

要約すると、ドロップアウト位置には 8 つの異なる設定があり、2 つのドロップアウト次元 (チャネルと次元)、および 3 つのドロップアウト確率 (10%、20%、30%) があります。著者は、それらの結果を個別に観察する実験を実施しました。

単一変性実験結果

実験設定: 通常、SR タスクには 2 つの一般的に使用される設定、つまり単一劣化設定と多重劣化設定があります。複数の劣化効果により、現実世界の劣化プロセスをより適切にシミュレートできます。現在、SR ネットワークのパフォーマンスは主に汎化能力に依存します。著者らは、Real-ESRGAN で導入された高次劣化モデリングに従いました。

基礎となるタスクの非常に詳細な解釈 (3): 現実世界のブラインド超解像度モデルのトレーニングには純粋な合成データのみを使用する Real-ESRGAN

実験のこの部分では、著者はバイキュービック分解構成でのドロップアウトの使用を検討します。以下の図 3 は、ドロップアウトの使用場所、確率、および形式に関する実験結果の比較を示しており、そこから次のことがわかります。

  1. 図 4 (d): Dropout の位置が異なるとモデルのパフォーマンスも異なり、Dropout を 1 回だけ使用する場合、その位置が出力に近いほどパフォーマンスの低下は少なくなります。

  2. 図 4 (a): 複数の Dropout が使用される場合、Dropout の数が増加するとパフォーマンスが低下します。

  3. 図 4 (a)(b): 要素ごとのドロップアウトを使用するとパフォーマンスが低下しますが、通常はチャネルごとのドロップアウトの方がパフォーマンスが向上します。

  4. 図 4 (b): ドロップアウト確率 p が大きくなるほど、SR モデルのパフォーマンスは低下しますが、last-conv に 10% のドロップアウトを使用すると、パフォーマンスがわずかに向上します。これは、last-conv + チャネルの実際的な組み合わせが有効であることを示しています。 -wise ドロップアウトは、有意義で堅牢な結果につながる可能性があります。

 

多重劣化実験結果

複数の劣化効果により、現実世界の劣化プロセスをより適切にシミュレートできます。このセクションの実験では、著者は Real-ESRGAN で導入された高次劣化モデリングに従いました。

多重劣化トレーニング設定では、SR ネットワークは複数の異なる劣化を同時に回復する方法を学習する必要があります。SR ネットワークにすべての劣化効果を解決する方法を直接学習させると、単一の劣化効果に対する SR ネットワークのパフォーマンスが低下します。ただし、著者は、多重劣化の設定では、Dropout を導入することでパフォーマンスが大幅に向上する可能性があることを発見しました。以下の図 5 に示すように、著者らは、いくつかの一般的な劣化と複雑な劣化の組み合わせのパフォーマンスをテストしました。

図 5 の各行は、8 つの異なる劣化効果のドロップアウト結果と、ドロップアウトなしで改善がもたらされた結果です。著者は、バイキュービック、ブラー、ノイズ、JPEG を使用して劣化を生成しています。ガウスぼかし ('b'): カーネル サイズ = 21、標準偏差 2、ガウス ノイズ ('n'): 標準偏差 20、JPEG 圧縮 ('j'): 品質 = 50。

赤色のフォントは、Real-SRResNet (ドロップアウトあり) が Real-RRDB (ドロップアウトなし) よりも優れていることを示しており、フォントのほぼ半分が赤色です。ただし、Real-RRDB のパラメータ量は Real-SRResNet の 10 倍以上です。また、Dropout の追加はわずか 1 行のコードです。1行のコードは 、(元の)モデル パラメーターを 10 倍増やす価値があります。

以下の図6に示すように、Dropoutを使用する前後のモデルの視覚効果を比較したもので、Dropoutを使用したモデルの方がコンテンツ再構成、アーティファクト除去、ノイズ低減効果が優れていることがわかります。 

脱落確率pの比較実験

単一分解実験では、p の最適点は 10% です。ただし、多重縮退実験では、p の最適点はより大きくなります。以下の図 7 に示すように、さまざまなドロップアウト率での Real-SRResNet ×4 タスクの結果、Set1 は Manga109 (ノイズ)、Set2 は Urban100 (ノイズ) です。

Channel Saliency Mapによるドロップアウト実験現象の解説

次の 2 つのセクションの著者は、Dropout が SR ネットワークの汎化能力をどのように向上させるかを調査したいと考えています。著者は、Dropout の実験現象を、Channel Saliency Map によるアトリビューション マップの観点と、Deep Degradation Representation による汎化パフォーマンスの観点から説明しました。

アトリビューション マップによって表される意味は顕著性マップです。つまり、アトリビューション マップ内の明るいピクセルは、SR 結果に対する大きな影響を示します。以下の図 8 からわかるように、いくつかの特徴をマスクすると、異なる PSNR 値が得られます。PSNR 値が低いほど、顕著性マップが明るくなり、顕著性マップが明るいほど、超解像の結果がより大きな影響を与えることを意味します。明らかに、機能が異なれば、最終結果に与える影響も異なりますいくつかの機能のマスクが削除されると、PSNR が大幅に低下し、これらの機能のアトリビューション マップも明るくなります。 

図 10 は、より多くのチャネルが 0 に設定されると、ドロップアウトなしの Real-SRResNet モデルのパフォーマンスが急激に低下しますが、より多くのチャネルが 0 に設定されても、ドロップアウトありの Real-SRResNet モデルのパフォーマンスは変化しないことを示しています。これは、ドロップアウトを備えたモデルの場合、PSNR が複数の特定のチャネルに依存しないことを示しています。ネットワークのチャネルの 1/3 だけでも、モデルのパフォーマンスを維持するには十分です。これは、ドロップアウトがモデルの同時適応を防ぎ、より良いパフォーマンスをもたらすのに役立つことを示しています。 

ドロップアウト実験現象を深い劣化表現で説明する

Deep Degradation Representation は「超解像モデルの意味情報」を表します。解釈については以下を参照してください。

基礎となるタスクの超詳細な解釈 (7): 超解像モデルの「意味論的」情報が何を表しているのかを探る

図 11 の (a)(b)(c) は、128×128、5 つの異なる劣化によって形成された 500 点の入力サンプルを表します (各劣化は 100 点です)。Deep Degradation Representation は、超解像モデルが、異なる意味論情報に従って、異なる劣化タイプの入力画像を異なるカテゴリにクラスタリングできることを示していますたとえば、図 11(a) では、異なる色の点は、異なる劣化効果を持つ入力画像を表します。

つまり、同様の劣化効果を持つ入力画像がクラスター化されます。異なるクラスタリング結果間の境界が明確な場合、ネットワークは特定の縮退クラスタのみを処理し、その他のクラスタを無視する傾向があり、汎化パフォーマンスが低下します逆に、異なるクラスタリング結果が混在している場合は、ネットワークがすべての入力を適切に処理できることを意味します。

図 11(a) および (b) から、元の SRResNet のクラスタリング結果は Real-SRResNet のクラスタリング結果よりも優れていると結論付けることができます。これは、さまざまな劣化効果を持つネットワークの汎化パフォーマンスがトレーニングでより強力であることを示しています。データ。ワオソフト アイオット http://143ai.com

図 11(b) および (c) から、Dropout を追加した後、Real-SRResNet のクラスタリング結果は、Real-SRResNet を使用しない場合よりも優れていると結論付けることができます。これは、モデルの汎化パフォーマンスがより強力であることを示しています。

Calinski-Harabaz Index (CHI) 指標は、意味的識別の程度を測定するために使用されます。異なる特徴クラスター間の識別の程度が強いほど、同じクラス内の類似性が高く、CHI スコアも高くなります。つまり、クラスターが十分に分離されている場合、CHI スコアはより高く、より強力な意味識別を示します。

また、ドロップアウト率 p が徐々に増加すると、CHI が徐々に減少することもわかります。これは、クラスタリング効果が徐々に悪化していること、つまり、モデルの汎化パフォーマンスも強化されていることを証明しています。

もう 1 つの興味深い発見は、ノイズを含むサンプル クラスターの分布 (図 11 の緑色の点) が常に最も異なっていることです。これは、ノイズの多いデータで得られるパフォーマンスがクリーンなデータで得られるパフォーマンスよりもはるかに劣る理由でもあります。

要約する

ドロップアウト操作はもともと、低レベルのタスクである SR の性質と矛盾するように見える、高レベルのビジュアル タスクにおけるオーバーフィッティングの問題を軽減するために設計されました。この論文の著者は、従来の SR タスクから Dropout の役割を研究し始めました。その結論は、Dropout 操作を適切に使用することで SR モデルのパフォーマンスを大幅に向上できるということです。Dropout の導入により、一般化パフォーマンスが大幅に向上します。 SRResNet のパフォーマンスは RRDB の次数よりも向上し、後者のパラメータ量は前者の 10 倍以上です。重要なのは、Dropout の追加はたった 1 行のコードだけです。単一の劣化タスクの場合、ドロップアウトの最適な使用は最終コンバージョン + チャネルごとであり、最適なドロップアウト率は 10% です。複数の劣化タスクの場合、ドロップアウトは引き続き last-conv + チャネルごとの方法を採用し、最適なドロップアウト率はより大きくなります。最後に著者は、Dropout の実験現象を、Channel Saliency Map によるアトリビューション グラフの観点と、Deep Degradation Representation による汎化パフォーマンスの観点から説明しました。

おすすめ

転載: blog.csdn.net/qq_29788741/article/details/130673653