4. CNN ネットワーク アーキテクチャ - 深さ分離可能な畳み込み (MobileNet v1、MobileNet v2、MobileNet v3、Xception、ShuffleNet v1、ShuffleNet v2)

論文「畳み込みニューラル ネットワーク アーキテクチャとその最適化のレビュー」では、一部の高性能畳み込みニューラル ネットワーク手法では必然的に膨大なコンピューティング コストが発生し、多くの場合、高性能 GPU または高度に最適化された分散 CPU アーキテクチャのサポートが必要になることが指摘されています。CNN のアプリケーションはモバイル端末にも拡大していますが、ほとんどのモバイル デバイスには強力なコンピューティング能力や巨大なメモリ容量がありません。したがって、上記の問題を適切に処理するには、軽量ネットワーク アーキテクチャに関する研究が必要です。軽量畳み込みニューラル ネットワークとは、一般的に圧縮と加速を経て得られるより小さな畳み込みニューラル ネットワーク構造を指し、その特徴は次のとおりです。

1. サーバーとの小さな通信要件。

2. ネットワークパラメータが少なく、モデルデータの量が少ない。

3. メモリが限られているデバイスへの展開に適しています。

CNN がパフォーマンスを維持しながら要件を満たすことを可能にするために、深さ方向に分離可能な畳み込みのアーキテクチャが提案されています。この文書では主に、MobileNet v1、MobileNet v2、MobileNet v3、Xception、ShuffleNet v1、ShuffleNet v2 のネットワーク構造を紹介します。

以下では、このブログ投稿では、深さ方向の分離可能な畳み込みとは何かを紹介し、上記のネットワーク アーキテクチャを紹介します。

目次

1. 深さ方向の分離可能な畳み込み

1.1 チャンネルごとのコンボリューション (深さ方向のコンボリューション)

1.2 点ごとの畳み込み

1.3 パラメータと計算量の比較

2.MobileNet v1(2017)

2.1 ネットワーク構造

2.2 論文 

2.3 参考ブログ投稿

3.モバイルネットv2(2018)

3.1 ネットワーク構造 

3.2 線形ボトルネック(線形ボトルネック構造)

3.3 反転残差

3.4 論文 

4.モバイルネットv3(2019)

4.1 ネットワークアーキテクチャ 

4.2 ネットワークの改善 

4.3 論文 

5.エセプション(2017)

5.1 Inceptionv3 モデルに基づく改善 

5.2 ネットワーク構造

5.3 論文 

5.4 参考ブログ投稿

6.シャッフルネットV1(2017)

6.1 グループ畳み込み

6.2チャンネルシャッフル

6.3 ShuffleNet ユニット

6.4 ネットワーク構造

6.5 論文 

6.6 参考ブログ投稿 

7.シャッフルネットV2(2018)

7.1 軽量ネットワークを設計するための 4 つのヒント

7.2 シャッフルネットユニット

7.3 ネットワーク構造

7.4 論文 

7.5 参考ブログ投稿


1. 深さ方向の分離可能な畳み込み

深さ方向の分離可能な畳み込みは、主に 2 つの畳み込みバリアント、つまりDepthwise Convolution と Pointwise Convolution を組み合わせて使用​​されます

1.1 チャンネルごとのコンボリューション (深さ方向のコンボリューション)

Depthwise Convolution の畳み込みカーネルは 1 つのチャネルのみを持ち、1 つのチャネルの入力情報は 1 つの畳み込みカーネルによってのみ畳み込まれ、この処理によって生成される特徴マップのチャネル数は入力チャネルの数とまったく同じになります。例として、5x5x3 カラー画像 (高さと幅は 5、RGB3 チャネル) を考えます。各層のディープ コンボリューション コンボリューション カーネルの数は、前の層のチャネル数と同じです (チャネルとコンボリューション カーネルは 1 対 1 に対応します)。上の図の青い点線のボックスに示すように、padding=1、stride=1 と設定すると、3 チャネル イメージは操作後に 3 つの特徴マップを生成します。

Depthwise Convolution が完了した後の特徴マップの数は入力層のチャネル数と同じであり、特徴マップの数をチャネル次元で拡張または圧縮することはできません。さらに、この演算は入力層の各チャネルに対して独立して畳み込み演算を実行し、同じ空間位置にある異なるチャネルの特徴の相関を効果的に利用しません。つまり、計算量は減りますが、チャネル次元での情報の相互作用が失われます。したがって、これらの特徴マップを組み合わせて新しい特徴マップを生成するには、Pointwise Convolution が必要です。

1.2 点ごとの畳み込み

Pointwise Convolution の操作は、実際には 1X1 の畳み込みである従来の畳み込み操作と非常に似ています。畳み込みカーネルのサイズは 1×1×M で、M は前層の出力情報のチャネル数です。したがって、ここで、Pointwise Convolution の各畳み込みカーネルは、前のステップの特徴マップをチャネル方向に重み付けして結合し、新しい特徴マップを生成します。図の赤い点線で示すように、いくつかのコンボリューション カーネルがあり、いくつかの新しい特徴マップが出力されます。

1.3 パラメータと計算量の比較

従来の畳み込みパラメータの数:

畳み込み層には合計 4 つのフィルターがあり、各フィルターにはチャネル番号 3 (入力情報チャネルと同じ)、サイズ 3×3 のカーネルが含まれています。したがって、畳み込み層のパラメータの数は、次の式で計算できます (つまり、畳み込みカーネル W x 畳み込みカーネル H x 入力チャネル数 x 出力チャネル数)。

N_std = 4 × 3 × 3 × 3 = 108

深さ方向に分離可能な畳み込みパラメータの数:

N_深さ方向 = 3 × 3 × 3 = 27

N_pointwise = 1 × 1 × 3 × 4 = 12

N_分離可能 = N_深さ方向 + N_点方向 = 39

従来の畳み込み計算量:

計算量は、コンボリューションカーネルW×コンボリューションカーネルH×(ピクチャW-コンボリューションカーネルW+1)×(ピクチャH-コンボリューションカーネルH+1)×入力チャンネル数×出力数で計算できます。チャンネル数):

C_std =3×3×(5-2)×(5-2)×3×4=972

深さ方向に分離可能な畳み込み計算:

デプスコンボリューションの計算量は、以下の式(コンボリューションカーネルW×コンボリューションカーネルH×(ピクチャW-コンボリューションカーネルW+1)×(ピクチャH-コンボリューションカーネルH+1)×入力チャンネル数)で計算できます。

C_深さ方向=3x3x(5-2)x(5-2)x3=243

ポイントバイポイントの畳み込みの計算量は、(1 x 1 特徴層 W x 特徴層 H x 入力チャネル数 x 出力チャネル数) となります。

C_pointwise = 1 × 1 × 3 × 3 × 3 × 4 = 108

C_分離可能 = C_深さ方向 + C_点方向 = 351

結論は:

同じ入力で4つのFeatureマップも得られ、Separable Convolutionのパラメータ数とデータ計算量は従来の畳み込みに比べて約1/3になります。したがって、同じパラメータ量を前提とすれば、Depthwise Separable Convolutionを用いたニューラルネットワークの層数をより深くすることができます。

2.MobileNet v1(2017)

MobileNetv1 は、従来の畳み込みプロセスを Depthwise 畳み込みと Pointwise 畳み込みの 2 つのステップに分解し、モデル サイズと計算負荷の点で大幅な圧縮を実現します。

2.1 ネットワーク構造

MobileNet のネットワーク構成を下表に示します。最初は 3x3 の標準畳み込みで、次にスタックされた深さ方向の分離可能な畳み込みが続き、深さ方向の畳み込みの一部が strides=2 を通じてダウンサンプリングされることがわかります。畳み込みを行って特徴を抽出した後、平均プーリングを使用して特徴を 1x1 に変更し、予測されたカテゴリのサイズに応じて全結合層が追加され、最後にソフトマックス層が追加されます。

平均プーリング層とソフトマックス層を除くネットワーク アーキテクチャ全体の観点から見ると、合計 28 層があり、ステップ サイズ 2 の畳み込みはダウンサンプリング機能としても機能します。 ReLU 活性化関数の構造はシステム図に示されており、左側はバッチノルムと ReLU が続く標準畳み込み、右側は深さ分離可能な畳み込みとバッチノルムと ReLU による深さ方向の畳み込みです。 ReLU の後にポイントごとの畳み込みが続きます。

2.2 論文 

论文:《MobileNets: モバイル ビジョン アプリケーションのための効率的な畳み込みニューラル ネットワーク》

https://arxiv.org/pdf/1704.04861.pdf

貢献: 通常の畳み込みを深さ方向に分離可能な畳み込みに置き換えます。

欠陥: 深さの畳み込みに無効な畳み込みカーネルがあります。

2.3 参考ブログ投稿

1. 軽量ニューラルネットワーク MobileNet ファミリー Bucket の詳細解説_軽量ネットワークモデル_Rayne Layne のブログ - CSDN ブログ

2.

深層学習のための画像分類 (9): MobileNet シリーズ (V1、V1、V3) - 魔法学院の小学生

3.モバイルネットv2(2018)

MobileNetv1 に基づいて、Mark Sandler らは線形ボトルネックの反転残差 (線形ボトルネック) を提案し、それに基づいて MobileNetv1 よりも高速かつ正確な MobileNetv2 を構築しました。

3.1 ネットワーク構造 

MobileNetv2 ネットワーク構造は次の図に示されており、t は反転残差の最初の 1*1 畳み込みの倍数を表し、c はチャネル数を表し、n はスタックされたボトルネックの数を表し、s は DWconv (1または 2 )、異なるストライドは異なるモジュールに対応します (図 d に示すように)。実際、ImageNet 画像分類タスクでは、V1 と比べてパラメーターの数が減り、効果が向上しています。

MobileNetV2 ネットワーク モデルには、合計 17 のボトルネック層があり (各ボトルネックには 2 つの点ごとの畳み込み層と 1 つの深層畳み込み層が含まれます)、標準畳み込み層 (conv) と 2 つの点ごとの畳み込み層 (pw conv) の合計があります。トレーニング可能なパラメータ レイヤーは 54 個あります。MobileNetV2 では、線形ボトルネック (Linear Bottleneck) と逆残差 (Inverted Residuals) 構造を使用してネットワークを最適化し、ネットワーク層を深くしますが、モデル サイズは小さくなり、速度は高速になります。

3.2 線形ボトルネック(線形ボトルネック構造)

このモジュールは、Inverted Residuals ブロックのボトルネックにある Relu を削除します。下の図からわかるように、本質は 1*1 畳み込み後の Relu 活性化関数を削除し、線形活性化関数に変換することです。畳み込み次元削減演算は本来情報の一部を失いますが、ReLU ではチャネル数が少ないテンソルに対して大量の情報損失が発生し、出力は 0 になります。線形ボトルネック構造には 2 つのタイプがあり、1 つはステップ サイズが 1 の場合に残差構造を使用するもので、2 つ目はステップ サイズが 2 の場合に残差構造を使用しないものです。

3.3反転残差

以下の図の比較から、モバイルネットでチャネルごとに畳み込みを実行するために残差ブロックが使用される場合、元の特徴の次元は多くありませんが、圧縮されるとモデルが小さすぎるため、反転残差を使用して展開します。それを最初に (6 回) その後、モデルが圧縮されすぎないように圧縮します。MobileNetV2 の残留構造は、線形ボトルネック構造に基づいて残留伝播を実際に増加させます

ResNet の残差構造は、ポイントバイポイント畳み込みの最初の層を使用して次元を減らし、次に深さ畳み込みを使用し、次にポイントバイポイント畳み込みを使用して次元を増やします。

MobileNetV2 バージョンの残差構造は、ポイントバイポイント畳み込みの最初の層を使用して次元を増やし、Relu の代わりに Relu6 活性化関数を使用し、次に深さ畳み込みを使用し、Relu6 活性化関数も使用してから、ポイントを使用します。 -ポイントごとの畳み込みを使用して次元を削減し、線形活性化関数を使用します。

3.4 論文 

论文:《MobileNetV2: 逆残差と線形ボトルネック》

https://openaccess.thecvf.com/content_cvpr_2018/papers/Sandler_MobileNetV2_Inverted_Residuals_CVPR_2018_paper.pdf

貢献: 逆残差および線形ボトルネック構造の導入。

欠点: 特徴抽出効率の最適化。

4.モバイルネットv3(2019)

Andrew G. Howard は 2019 年に MobileNet V3 を提案しました。このペーパーでは 2 つのネットワーク モデルが提案されています。MobileNetV3-Small と MobileNetV3-Large は、それぞれコンピューティングとストレージの要件が低いバージョンと高い要件のバージョンに対応します。

  • Large バージョンには、合計 15 のボトルネック レイヤー、1 つの標準畳み込みレイヤー、および 3 つのポイントバイポイント畳み込みレイヤーがあります。

  • Small バージョンには、合計 12 のボトルネック層、1 つの標準畳み込み層、および 2 つの点ごとの畳み込み層があります。

4.1 ネットワークアーキテクチャ 

MobileNet V3-Large の構造図:

MobileNetV3 では、3×3 深さの畳み込みの一部を置き換えるために 5×5 深さの畳み込みが導入されています。モデルの精度を向上させるために、スクイーズアンド励起 (SE) モジュールと h-swish (HS) アクティベーション関数が導入されています。ポイントバイポイント畳み込みの最後の 2 つの層はバッチ正規化 (Batch Norm) を使用せず、MobileNetV3 構造図の NBN ロゴを使用します。

MobileNet V3-Small 構造図:

4.2 ネットワークの改善 

1. MobileNetV2 に基づく改善点:

著者は、v2 ネットワークの構造の最後の部分を最適化できることを発見しました。上図に示すように、3x3 Dconv や 1x1Conv などの畳み込み層が削除され、元の構造は 1×1 畳み込みを使用して機能を調整します。次元を増やすことでモデル予測の精度が向上しますが、この部分の作業にはある程度の時間がかかりますので、作者は平均プーリングを進めて、あらかじめ特徴のサイズを小さくすることができます(後の特徴のサイズ)プーリングは 7×7 から 1×1 に減少しますが、精度はほとんど低下しません。

2.h-スウィッシュ:

記事では、swish 活性化関数を使用する方が ReLU 活性化関数よりも正確であると指摘していますが、swish 活性化関数はモバイル デバイスのリソースを消費するため、著者は swish の代わりに h-swish 活性化関数を提案しています。となりますが、計算量は大幅に削減されます 以下の図は h-swish 活性化関数の式です。

Sigmoid 非線形関数と Swish 非線形関数の「ハード」比較:

3.スクイーズアンドエキサイト(SE):

SEモジュールは、自動運転企業Momentaが2017年に発表した画像認識構造。特徴チャネル間の相関関係をモデル化し、重要な機能を強化することで精度の向上を目指す。SE モジュールを使用すると、有効な重みが大きくなり、無効または有効性の低い重みが小さくなるため、より良いモデルをトレーニングできます。従来の SE モジュールに基づいて、改良された SE モジュールは精度を保証し、パフォーマンスを向上させ、パラメータと計算の量を削減します。

MobileNetV3 では、MobileNetV2 と比較して SE 構造が追加され、SE 構造部分を含むエキスパンド層のチャネル数が削減されているため、精度が向上し、パラメータ数も適度に増加し、明らかな遅延も発生しないことがわかります。料金。

 参考リンク:

SE:スクイーズアンド励起ネットワーク (SENet) の解釈 - プログラマー募集

4.3 論文 

論文: 「MobileNetV3 を探す」

https://openaccess.thecvf.com/content_ICCV_2019/papers/Howard_Searching_for_MobileNetV3_ICCV_2019_paper.pdf

貢献: Squeeze-and-excitation (SE) モジュールと h-swish (HS) アクティベーション関数を紹介し、Neural Architecture Search (NAS) テクノロジーによって生成されたネットワーク構造を紹介します。

欠点: ネットワークの解釈が不十分、モデルの構造が混沌としており、モデルの展開に役立たない、計算コストが高い。

5.エセプション(2017)

Xception は、AlexNet で導入された深さ分離可能な畳み込みのアイデアを利用しており、これは極端な Inception アーキテクチャと考えることができます。次の図は、元の Inception を拡張し、3 × 3 コンボリューション カーネルの層に続いて 1 × 1 を使用して、さまざまな空間次元 (1 × 1、3 × 3、3 × 3) を置き換える Xception モジュールを示しています。計算の複雑さ。まず、入力特徴マップが 1 × 1 コンボリューション カーネルを通じて処理されます。次に、出力特徴マップの各チャネルが 3 × 3 コンボリューション カーネルで畳み込まれます。最後に、すべての出力が結合されて新しい特徴マップが得られます。Xception ネットワークのトレーニング パラメーターは Inceptionv3 よりも少ないですが、Xception ネットワークの認識精度とトレーニング速度は Inceptionv3 と同じであり、より大きなデータ セットでもパフォーマンスが向上します。

深さ方向の分離可能な畳み込みと比較すると、1X1 畳み込みの実行順序が深さ方向の畳み込みの前であるか後であるかだけが異なります。彼らは深さ分離可能な畳み込みの強力な役割をさまざまな角度から明らかにしており、MobileNet のアイデアは通常の畳み込みを分割することでパラメータの数を削減することであり、Xception は Inception を完全に分離することで実現されています。

5.1 Inceptionv3 モデルに基づく改善 

Inceptv3 の改善手順:

(1) Inceptionv3 のオリジナルモジュールは以下の図に示されています

(2) インセプション モジュールを簡素化します。

(3) インセプションの改善

入力特徴マップの場合、まず 3 セットの 1X1 畳み込みを通じて 3 セットの特徴マップを取得します。これは、最初に 1X1 畳み込みのセットを使用して特徴マップを取得し、次にこの特徴マップのセットを 3 つのグループに分割することと完全に同等です。

(4) Xceptionモジュール

Inception モジュールの「エクストリーム」バージョン。1x1 コンボリューションの出力チャンネルごとに 1 つの空間コンボリューションを備えます。このときパラメータ数は通常の畳み込みの1/kであり、kは3×3の畳み込みの数となる。

5.2 ネットワーク構造

データは最初に Entry フローを通過し、次に Middle フローを 8 回通過し、最後に Exit フローを通過します。すべての畳み込み層と分離可能な畳み込み層の後にバッチ正規化が行われることに注意してください (図には含まれていません)。すべての Separable Convolution レイヤーは、深さ乗数 1 を使用します (深さ拡張なし)。

5.3 論文 

论文:《Xception: 深さ方向に分離可能な畳み込みを使用した深層学習》

https://arxiv.org/pdf/1610.02357v3.pdf

貢献: 畳み込み分離と深さ方向の分離可能な畳み込みを組み合わせます。

欠点: 高い計算オーバーヘッドと複雑なモデル構造。

5.4 参考ブログ投稿

1.深層学習のための画像分類 (5): GoogLeNet - 魔法学校の小学生

6.シャッフルネットV1(2017)

ShuffleNet v1 は、2017 年末に Megvii Technology によって提案された、モバイル デバイスで使用できる軽量の畳み込みニューラル ネットワークです。

このネットワークの革新的な点は、グループ畳み込みチャネル シャッフルを使用して、必要なコンピューティング リソースを大幅に削減しながらネットワークの精度を確保していることです。著者は、記事中で点ごとの畳み込みの計算量を削減するために点ごとのグループ畳み込みを提案していますが、グループ畳み込み演算ではグループとグループの間につながりがなく、ネットワークの精度にある程度の影響を与えるため、著者は次のように提案しています。シャッフル操作 , チャネル内のシャッフル操作により、グループ間の接続を強化できます。一定の計算複雑さの下では、ネットワークはより多くのチャネルがより多くの情報を保持できるようになります。

6.1  グループ畳み込み

グループコンボリューション:

通常の畳み込みと比較して、パラメータの量と演算は同じですが、グループ畳み込みは g 倍の数の特徴マップを生成できるため、グループ conv は少ないパラメータと計算マップで多数の特徴を生成し、より多くの特徴を得ることができます。機能情報。下図に示すように、g はグループ数の制御パラメータとして使用され、最小値は 1、最大値は特徴マップに入力されるチャネル数です。g=1の場合は通常の畳み込み、g=入力特徴マップチャネル番号の場合は深さ方向分離可能な畳み込みとなります。

 

6.2チャンネルシャッフル

グループ畳み込みでは、このグループ内の特徴マップのみが融合されますが、異なるグループ間では計算が不足しており、異なるグループの特徴マップは他のグループの特徴についての知識がますます少なくなります。そこで著者は、グループ畳み込みにより各グループの特徴マップを計算した後、その結果をある程度順不同で組み合わせて次のグループ畳み込みの層に送ることを提案する。特徴マップの融合が増加するプロセスは、次の図に示すようになります。

上図では、(a) は通常のグループ畳み込み、(b) と (c) はチャネル シャッフル法です。

6.3 ShuffleNet ユニット

以下の図に示すように、(a) 深さ畳み込みのボトルネック ユニット ( DWConv )]、(B) 点群畳み込み ( GConv ) とチャネル シャッフルの ShuffleNet ユニット、(c) ストライド = 2 の ShuffleNet ユニット。

(b) は、3X3 畳み込みストライドが 1 に等しい場合です。DWconv と非常によく似ていることがわかりますが、パラメータの量をさらに減らすために、1X1 カーネル サイズの畳み込みが最適化されています。 1X1 グループ コンボリューションとチャネル シャッフルが追加され、異なるグループ間の情報交換が保証されます。注: チャネル シャッフル操作は、1×1 畳み込み操作の後に行われます。つまり、最初にチャネルが縮小され、次にチャネルが調整され、最後に畳み込みが元のチャネル数に調整されます。(c) の場合です。ここで、ストライドは
2 に等しく、つまり、出力特徴マップのサイズが半分になり、チャネル次元が 2 倍になります。最終的な連結接続を確実にするには、2 つの出力特徴マップが確実に一致するようにする必要があります。ブランチのサイズは同じなので、ストライド 2 の 3X3 がショートカット ブランチに追加されます。

6.4 ネットワーク構造

次の図は、ShuffleNet-v1 ネットワーク構造を示しています。ストライドはストライドを表し、異なるストライドは異なる ShuffleNet ユニットに対応します。repeat は繰り返しの回数を表します。たとえば、ステージ 3 では、ストライド 2 の ShuffleNet ユニットが起動されます。 1 回、ストライド 1 の ShuffleNet ユニットが 1 回目覚めます。ユニットは 7 回繰り返します。

上図のネットワーク アーキテクチャに基づいて、著者は、MobileNetV1 の考え方に従って、チャネル数を示すネットワークのハイパーパラメータ s も設定しました。たとえば、標準的なネットワーク構造である s=1 です。 ; s=0.5 は、各ステージの出力および入力チャンネルの数が上の図のチャンネル数の半分であり、その他は同様であることを示します。チャネルを s 倍にスケーリングすることにより、全体の計算の複雑さとパラメータが s2 倍削減されます。

6.5 論文 

论文:《ShuffleNet: モバイル デバイス向けの非常に効率的な畳み込みニューラル ネットワーク》

https://arxiv.org/pdf/1707.01083.pdf

貢献: 点ごとのグループ畳み込みとチャネル シャッフルを導入します。

欠陥: 境界効果を生み出します。

6.6 参考ブログ投稿 

1.ShuffleNet: チャンネルの中断とシャッフル

 2.ディープラーニング用画像分類(10):ShuffleNetシリーズ(V1、V2) - 魔法学院の小学生

7.シャッフルネットV2(2018)

2018 年に、Ma らは ShuffleNetv2 と呼ばれる新しいアーキテクチャを提案しました。そして論文の中で、計算の複雑さの尺度としての FLOP は実際には速度と同等ではないことを指摘しました。同じような FLOP を持つネットワークでは速度に大きな差があるため、メモリ消費量と GPU 並列コンピューティングも考慮する必要があります。

7.1 軽量ネットワークを設計するための 4 つのヒント

この論文の中で、著者は軽量ネットワークを設計するための 4 つの重要事項を指摘しました。

G1) チャネル幅が等しいため、メモリ アクセス コスト (MAC) が最小限に抑えられます。

コンボリューションの入力と出力が同次元のチャネルである場合、メモリアクセスコストが最小となり、下表に示すように、入出力=1:1のときが1秒あたりのペイント処理数が最も多くなります。

G2) 過剰なグループ畳み込みにより MAC が増加します。

以下の表に示すように、グループ畳み込みが多すぎるとメモリ アクセスのコストが増加します。グループの数が増えると、特に GPU で速度が急激に低下します。同時に、パラメータの数が少ないほど計算量が少なくなり、計算速度が速くなることもわかります。したがって、著者は、ターゲットのプラットフォームとタスクに応じてグループの数を慎重に選択することをお勧めします。単純に多数のグループを使用することは賢明ではありません。これにより、より多くのチャネルが使用される可能性があります。これは、精度の向上による利点が、急速に増加する計算コストによって容易に上回るためです。

G3) ネットワークの断片化により並列度が低下します。

断片化操作 (大きな畳み込みを複数の小さな畳み込みに分解する) によりネットワークの並列性が低下しますが、実験では、固定 FLOP の場合、文字列と並列分岐の構造をそれぞれ比較すると、並列性が向上することがわかりました。並列処理 高度な並列構造により実際には速度が低下します。その結果を次の表に示します。

G4) 要素ごとの操作は無視できません。

要素レベルの操作を無視しないでください。つまり、ReLU、AddTensor、AddBias などは、FLOP は小さいものの、MAC が比較的重い行列要素に対して操作されます。このアイデアを検証するために、著者はボトルネック レベルに対応する変更を加え、ReLU とショートカット操作の 2 つのケースがあるかどうかをテストしました。その比較を次の表に示します。ショートカットすると、GPU と ARM の両方が約 20% 高速化されます。

結論と考察:

1) 「バランスの取れた」畳み込み (チャネル幅が等しい) を使用します。

2) グループ化された畳み込みを使用するコストに注意してください。

3) 断片化の程度を減らす。

4) 要素の操作を減らします。

7.2  シャッフルネットユニット

下図に示すように、(a)(b)は shufflenetV1 のユニットに対応し、(c)、(d)は改良版 V2 のユニットに対応します。フル畳み込みまたはグループ畳み込みにおけるほとんどの畳み込みで入力チャネルと出力チャネルの数を同じに維持するという問題を解決するために、著者はチャネル分割操作を提案します。

スプリット チャネルは、特徴マップ全体を 2 つのグループに分割します (グループ化畳み込みのグループ化操作をシミュレートし、次の 1X1 畳み込みは通常の畳み込みに戻ります)。このグループ化により、グループ化畳み込みのような過度の増加が回避されます。畳み込み中のグループの数は指定されます。 G2に準拠しています。スプリットチャネルの後、一方のグループのデータはショートカットチャネルを通過し、もう一方のグループのデータはボトルネック層を通過しますが、このときスプリットチャネルによって次元が削減されているため、ボトルネックを再度減らす必要がなく、G1 と同様に入出力チャネル数を一定に保つことができます。同時に、最後に使用される concat 操作により、G4 に準拠する TensorAdd 操作は使用されません。

7.3 ネットワーク構造

7.4 論文 

论文:《ShuffleNet V2: 効率的な CNN アーキテクチャ設計のための実践的なガイドライン》

https://arxiv.org/pdf/1807.11164.pdf

貢献: 軽量かつ高速なモデルのための 4 つの基準を提案し、シャッフルネット ネットワーク構造を最適化しました。

欠陥: 機能の重大な損失。

7.5 参考ブログ投稿

1. 軽量ニューラル ネットワーク - shuffleNet2_Bald Xiaosu のブログ - CSDN ブログ

おすすめ

転載: blog.csdn.net/damadashen/article/details/130871245