ピクセル シャッファーは画像のアップサンプリング方法です。論文を参照してください。
Pytorch での実装は次のとおりです。
pixel_shuffle = torch.nn.PixelShuffle(r)
output = pixel_shuffle(input)
または
torch.nn.functional.pixel_shuffle(input, r)
ここで、r はアップサンプリング倍率です。入力と出力は次のとおりです。
たとえば、入力の形状が (1, 64, 20, 30)、r = 2 で、
この形状が (1, r 2 C, H, W) に対応する場合、つまり、r 2 C = 2x2xC = 64、つまり C=16 となり、
出力は (1, C, rH, rW)、つまり (1, 16, 40, 60) となるはずです。
原則は次のとおりです。
論文で述べたように、以前のアップサンプリングでは、補間によって低解像度 (LR) 画像を高解像度 (HR) に変換し、それを HR 特徴空間で処理して超解像度 (SR) 画像を取得します。
この論文では、補間変換 HR をスキップし、LR 特徴空間から SR 画像に直接変換するステップを提案しています。
これは、多くの SR 技術では高周波データが冗長であるため、低周波部分から直接取得できるという前提に基づいています。
ネットワークの最初の L-1 層は次のとおりです:
W は conv2D、ϕ \phiϕは非線形活性化関数を表す。
最後の層は、LR 空間を SR 空間に変換することです。
式は次のとおりです:
式は理解しにくいので、図で説明します。最初の L-1 層が処理された後、(N, r 2 C, H, W)
が得られたので、これを (N、C、rH、rW) の形状を持つ SR 画像に変換する必要があります。
出力の (0, 0) ピクセルを例にとります。これは r 2チャネルに対応し、これらのチャネルを rxr の大きなピクセルに拡散します。r
= 3 の場合、出力のピクセルには 9 チャネルがあり、これは次のようになります。右 SR 画像内の大きな 3x3 ピクセル (色の対応に注意してください)。
r に戻ります。各ピクセルには r 2チャネルがあり、それを平坦化して rxr SR ラージ ピクセルになります。
つまり、(r 2 C, H x W) は (C, rxrx H x W)、つまり (C, rH, rW) になります。
これは、式 (4) の mod(y, r)、mod(x, r) であり、
SR 画像内の大きいピクセルと出力内の小さいピクセルの対応関係は次のようになります。
トレーニング損失関数はピクセル単位の MSE です。