記事はGoogle DeepMindが2015年に提唱したSpatial Transformer Networks (STN)です。このモデルにより、畳み込みネットワークはデータの形状変換を学習し、平行移動、回転、拡大縮小、トリミング後に変換前と同じ画像を得ることができます。 . テスト結果。独立したモジュールとして、STN はネットワーク内のどこにでも挿入できるため、ネットワークは空間不変性。
記事リンク: Spatial Transformer Networks
リファレンス カタログ:
Affine Transformation and Bilinear Interpolation: Spatial Transformer Networks
pytorch ソース コード: SPATIAL TRANSFORMER NETWORKS TUTORIAL
STN の完全かつ詳細な説明: STN Spatial Transformer Networks
of Paper Notes Understanding Spatial Transformer Networks Paper Notes: 空間変換ネットワーク
概要
畳み込みニューラル ネットワークには、入力データに対して空間的に不変であるという機能がないため、モデルのパフォーマンスが低下します。CNN でのプーリング層の導入はこの特性を満たすのに役立ちますが、この空間的不変性は、プーリング行列の範囲内または畳み込みの深いレベルでのみ変換不変になります。この論文では、著者は新しい学習可能なモジュールを提案します。STN. この可微
モジュールにより、插入现有的卷积结构中
ニューラル ネットワークは、追加のトレーニング監視や最適化プロセスなしで、特徴画像自体に従って積極的に特徴画像を空間的に変換できます。
1 はじめに
- 独立したモジュールとして、STN はさまざまなネットワーク構造に
任意节点
挿入できます任意个数
。 - STN は、
运算速度快
元のネットワークの計算負荷をほとんど増加させず、一部の注意深いモデルではある程度の高速化を実現するという特徴があります。 同一个网络层中也可以插入多个STN
複数のオブジェクトに対して異なる空間変換を実行するため。多くの場合、同じ STN モジュールは、単一のオブジェクトを検出し、他の情報を削除するためにのみ使用されます。同じネットワーク層の STN モジュールの数は、ネットワークが処理できるオブジェクトの最大数にある程度影響します。
2 方法
全体的なネットワーク構造は、次の 3 つのステップに分けることができます。変換行列を学習する - 位置マッピング関係を見つける - 出力ピクセル値を計算する
- 変換行列を学びます。特徴画像 U を入力し、FCN または CNN を介して変換行列 θ を出力します。
- 変換行列 θ から写像位置関係を求めます. ただしこれは位置の対応関係であり, 画素値とは関係ありません. つまり、出力画像のすべての位置をトラバースし、各位置の値が入力画像のどの位置からマッピングされているかを見つけ、入力画像内のこの位置を見つけます。すべての位置対応を見つけます。出力特徴位置 -> 入力特徴位置
- 補間アルゴリズムを使用して、位置マップからピクセル値を計算します。2 番目のステップでは、入力画像における出力画像の位置の対応を見つけますが、小数が存在する可能性があるため、補間アルゴリズムを使用してこの補間点のピクセル値を計算し、出力画像に割り当てます。順位→得点
要約すると、変換を学び、押し進めて入力画像内の位置を見つけ、ピクセル値を取得して出力画像に送り返します。
2.1 ローカリゼーション ネットワーク
- ローカリゼーション ネットワークは入力画像 (特徴マップ) U ∈ RH × W × CU ∈ R^{H×W×C}うεRH × W × Cいくつかの畳み込みまたは全結合操作の後、回帰層は変換行列θ θ私。
- θ のサイズは、パラメーターのタイプによって異なります。
变换矩阵θ可以表征任何现存的一种变换
、アフィン変換などθ ∈ R 2 × 3 θ∈R^{2×3}私εR2 × 3、射影変換θ ∈ R 3 × 3 θ ∈ R^{3×3}私εR3 × 3などでは、異なる変換によって異なるサイズの θ が生成されます。
PS: アフィン変換は、単純に線形変換と平行移動と見なすことができます。
2.2 パラメータ化されたサンプリング グリッド
得られた変換行列 θ に従って、入力から出力がどのように変換されているかを知ることができます。
出力画像の各位置をトラバースし、変換行列に従って変換前の入力画像の位置を見つけ、その位置を保存します。このすべてのレイヤーの出力は、位置座標です。
入力特徴マップ U の各ピクセル位置の座標を(xis, yis) (x^s_i,y^s_i)とする( ×私s、y私s)、ST 変換後の出力特徴マップ V の各ピクセル位置の座標は( xit , yit ) (x^t_i,y^t_i)( ×私t、y私t)。
下の写真は输入和输出feature map的仿射变换关系
.
得られた座標値は多くの場合非整数であるため、対応するピクセル値を取得するには補間アルゴリズムが必要です。
2.3 微分画像サンプリング
リサンプリングの 3 番目のステップは、差分サンプリングとも呼ばれます。U のピクセル値を V の対応する位置のピクセル値として取得します。取得した座標が U (xis, yis) (x^s_i,y^s_i)の場合( ×私s、y私s)が整数の場合、直接(xis, yis) (x^s_i,y^s_i) を( ×私s、y私s)出力 V としてのピクセル値( xit , yit ) (x^t_i,y^t_i)( ×私t、y私t)ピクセル値。しかし、しばしば( xis , yis ) (x^s_i,y^s_i)( ×私s、y私s)の小数
形式ですが、ピクセル値を直接取得することはできないため、補間法を使用してピクセル値を取得する必要があります。
理論的には、任意の補間方法を使用できます.著者は、2つの補間方法を紹介します.最近傍補間と双一次補間. 双一次補間は、要求された座標に最も近い 4 つの整数点を見つけ、距離の重みに従ってそれらを合計することです (距離が近いほど、重みが大きくなるため、1 距離になります)。双一次補間を適用する式を以下に示します: (双一次補間の簡単な紹介: Spatial Transformer Networks )
- これは、双一次補間を使用して導出でき、
反向传播
条件を満たします。最近点値を直接取ることができず、逆伝播に双一次補間法を使用するのはなぜですか?この分析を読むことができます。 - 非補間部分は常に 0 に設定され、黒のピクセル ブロックとして表示されます。
3 結論
STN byローカリゼーション ネットワーク、パラメータ化されたサンプリング グリッドとしても微分可能サンプリング任意位置中加入任意数量
3 つの部分で構成され、 STNの CNN アーキテクチャで使用できる独立したモジュールです。このモジュールを追加すると、ネットワークに空間的不変性を持たせることができ、STN モジュールの計算速度は非常に速く、時間の消費はほとんどありません。
STN ネットワークには次の特徴があります。
- このモジュールは、プラグインとして任意のネットワークにドロップでき、損失関数を変更することなく、フィーチャの明示的な空間変換を実行できます。
- STN は派生可能なネットワークであるため、CNN を挿入した後にエンド ツー エンドのトレーニングを実現できます。
- 入力画像の後に ST を接続するのが、最も一般的で最も理解しやすい操作、つまり自動画像補正です。
- 複数の STN を同じネットワーク層に挿入して、複数のオブジェクトに対して異なる空間変換を実行することもできます。多くの場合、同じ STN モジュールは、単一のオブジェクトを検出し、他の情報を削除するためにのみ使用されます。同じネットワーク層の STN モジュールの数は、ネットワークが処理できるオブジェクトの最大数にある程度影響します。
- STN モジュールはネットワーク内のどこにでも挿入でき、その入力は画像/機能マップであり、その出力は画像/機能マップでもあります。
- Pytorch ソース コード: SPATIAL TRANSFORMER NETWORKS TUTORIAL
最後に、皆さんの科学研究の成功、健康、そしてすべての成功をお祈りします~