パディング

Padding

パディングとは

パディング(Padding)は、畳み込み演算の前に入力データの周囲に追加の値(通常は0)を挿入する操作です。パディングを行うことで、畳み込み後の出力サイズを制御し、入力と同じ空間サイズを維持したり、境界付近の情報の損失を防いだりすることができます。

表:パディングの要点まとめ
ひとことで言うと畳み込みの前に画像の周囲を0などで埋めて、外周の情報が欠けないようにする操作。
何がうれしいか出力サイズを入力と同じに保てるので、層を深く重ねても画像が小さくなりすぎない。
注意点埋めた0も計算に入るため、端の部分はわずかに不自然な反応になることがある。

パディングの種類

最も一般的なのはゼロパディング(Zero Padding)で、入力の周囲に0を挿入します。Same Padding(出力サイズを入力サイズと同じにする)とValid Padding(パディングなし)が基本的な設定です。その他に、反射パディング(Reflection Padding、境界値を鏡像的に繰り返す)や循環パディング(Circular Padding、入力の反対側の値を使用する)などの変種があります。

図:パディングの効果
1そのまま畳み込み画像が一回り小さくなる
▶
2周囲を0で囲む外側に枠を足す
▶
3端まで計算可能外周の情報も拾える
▶
4サイズを維持入力と同じ大きさで出力

パディングの効果

パディングなしで畳み込みを行うと、出力サイズが入力サイズより小さくなり、層を重ねるごとに空間サイズが急速に縮小します。適切なパディングを使用することで、多くの畳み込み層を積み重ねても空間解像度を維持できます。また、パディングにより境界のピクセルも中央のピクセルと同じ回数だけフィルタに含まれるため、境界効果を軽減できます。

パディングの設計上の考慮点

ゼロパディングは画像の境界に人工的な不連続性を導入する可能性があります。これが問題となる場合は、反射パディングやレプリケーションパディングが代替として使用されます。特にスタイル変換やテクスチャ生成のタスクでは、パディングの種類が生成品質に影響することがあります。モダンなアーキテクチャでは、カーネルサイズに応じた適切なパディングが自動的に設定されることが一般的です。