CNNのパディングについて

AI実装検定のご案内

CNN(畳み込みニューラルネットワーク)におけるパディング(padding)とは、入力データの周囲に追加の領域を設けたうえで畳み込み演算を行う処理を指します。

多くのケースでは、画像や特徴マップの上下左右に「0」を追加するため、一般に ゼロパディング(zero padding) と呼ばれます。

目次

なぜパディングが必要なのか

特徴マップが急激に小さくなるのを防ぐため

パディングを行わずに畳み込みを繰り返すと、層を重ねるごとに 特徴マップの縦横サイズは確実に小さくなります

浅いネットワークであれば問題になりにくいですが、深いCNNでは以下のような問題が起こります。

  • 空間的な情報が早い段階で失われる
  • 後段の層で扱える情報量が極端に減る
  • ネットワーク設計が難しくなる

パディングは、こうした サイズ縮小のスピードを制御するための仕組みです

画像の端の情報を過小評価しないため

パディングがない場合、畳み込みカーネルは画像の端まで十分に適用できません。

その結果、

  • 画像の中央付近の画素 → 多くの畳み込みで参照される
  • 画像の端・角の画素 → 参照回数が少なくなる

という偏りが生じます。

これは エッジ情報や境界情報が重要なタスク(物体検出、セグメンテーションなど)では特に不利になります。

パディングを行うことで、端の画素も中央と同程度に畳み込みの対象として扱われるようになります。

ネットワーク設計を単純化するため

実務では、

  • 入力と出力のサイズを揃えたい
  • 複数の層の出力を足し合わせたい
  • Encoder–Decoder構造を作りたい

といった要求が頻繁に出てきます。

これらは 特徴マップのサイズが一致していることが前提になるため、パディングはネットワーク設計を成立させるための「前提条件」として使われます。

パディング方式の代表的な分類

Valid Padding(パディングなし)

  • 入力の周囲に何も追加しない方式
  • 畳み込みを行うたびに出力サイズは小さくなる

特徴

  • 計算が直感的で分かりやすい
  • 人工的な値が入らない
  • 端の情報は弱くなりやすい

研究用途や理論整理では使われますが、深いCNNの実務設計ではあまり主流ではありません。

Same Padding(一般的に最も使われる)

  • 入力の周囲にパディングを追加する方式
  • 多くのフレームワークで標準的に採用されている

重要な注意点

  • ストライドが1の場合
    → 出力の縦横サイズは入力と同じになります。
  • ストライドが1より大きい場合
    → 出力サイズは入力と同じにはなりません。
    ただし「極端に小さくならない」ように調整されます。

つまり、「Same Padding=必ず同サイズ」という理解はストライド1の場合に限って正しい、という点が非常に重要です。

Full Padding(一般のCNNではほぼ使われない)

  • 入力よりも大きな出力を得るための考え方
  • 信号処理の文脈では知られていますが、
    通常のConvレイヤーではほとんど使われません

※ ただし、転置畳み込み(ConvTranspose)やアップサンプリングの話題では、間接的に関係してくることがあります。

パディングに使われる値の違い

Zero Padding(最も一般的)

  • 周囲を 0 で埋める
  • 実装が簡単で高速
  • 多くのCNNモデルで標準

注意点

  • 画像の外側に「人工的な黒領域」ができる
  • タスクによっては境界付近に不自然さが出ることがある

Reflect Padding(反射)

  • 画像の端を鏡のように反射して埋める方式
  • 境界の不自然さが軽減されやすい

画像生成やセグメンテーションなど、境界の滑らかさが重要なタスクで使われることがあります。

Replication Padding(複製)

  • 端の画素値をそのまま外側にコピーする方式
  • Reflectより単純だが、ゼロパディングより自然な場合もある

実務での使い分けの考え方

画像分類・一般的な認識タスク

  • Same Padding + Zero Padding がほぼ標準
  • ResNetやVGG系でもこの設計が基本

セグメンテーション・生成系

  • Same Padding を基本に、
    Reflect Padding や Replication Padding を検討する価値あり
  • 境界精度が結果に直結するため

理論検証・軽量モデル

  • Valid Padding を使うことで挙動が分かりやすい場合もある

よくある誤解(修正版)

  • パディングは常に入れるべき
    → タスクと設計次第
  • Same Paddingは必ず同じサイズになる
    → ストライド1のときのみ
  • パディングは情報を増やしている
    → 情報は増えていない(補助領域を足しているだけ)

まとめ

  • パディングは サイズ制御・端の情報保持・設計簡略化 のための仕組み
  • 実務では Same Padding が主流だが、条件を正しく理解する必要がある
  • ストライドやタスクによって挙動は変わる
  • 「なんとなくSameを使う」ではなく、意図を持って選ぶことが重要

以上、CNNのパディングについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次