CNNの畳み込み層における出力サイズの計算方法と仕組みの解説

こんにちは。ゆうせいです。

画像認識の分野で広く活用されている畳み込みニューラルネットワーク(CNN)において、画像データを処理した後のサイズを正しく把握することは、モデル全体の構造を設計する上で重要な基礎となります。

本稿では、CNNの核となる畳み込み層で画像がどのように圧縮・変換され、最終的な出力サイズがどのような数式で決定されるのかを解説します。

CNNの基本と畳み込み層の役割

CNNとは、人間の視覚野の仕組みを模した人工知能のモデルであり、画像の特徴を抽出することに特化しています。その中心的な役割を担う部分が「畳み込み層」です。

畳み込み処理の動きは、机の上に広げた大きな写真の上を、小さな虫眼鏡を少しずつ滑らせながら全体を観察していく作業に似ています。この小さな虫眼鏡に相当する部品を専門用語で「フィルタ」または「カーネル」と呼びます。

画像の上でフィルタを少しずつ動かし、重なる部分同士の数値を掛け合わせて足し合わせる計算を繰り返すことで、縦の線や横の線、角といった画像の特徴を取り出します。この一連の作業を経て新しく作られるデータの集まりを「特徴マップ」と呼びます。

出力サイズを決定する4つの要素

入力された画像が畳み込み層を通った後、どのような大きさ(縦横のピクセル数)になって出てくるかを算出するには、4つの数値を確認する必要があります。

  • 入力サイズ(H, W):処理を行う前の元画像のサイズです。高さ(H)と幅(W)で表します。
  • フィルタサイズ(F):特徴を検出するために用いる枠の大きさです。一般的には 3×3 や 5×5 のような正方形のサイズが選ばれます。
  • パディング(P):画像の周囲に余白を追加する処理です。写真の外枠に枠紙を足すような操作であり、主に 0 の値を敷き詰めるゼロパディングが用いられます。画像の端にある情報が失われるのを防いだり、処理後のサイズを維持したりする目的があります。
  • ストライド(S):フィルタを1回に何ピクセルずつ移動させるかという歩幅です。1歩ずつ進む場合はストライドが 1 となり、2ピクセルずつ飛ばして進む場合は 2 となります。

畳み込み層の出力サイズを求める計算式

これらの要素を組み合わせることで、出力される特徴マップの高さ(H_out)と幅(W_out)を導き出すことができます。一般的に高さと幅は同じ計算式が適用されるため、サイズを代表して計算式を示します。

\frac{H + 2P - F}{S} + 1

計算結果が割り切れない端数となる場合、床関数(端数の切り捨て)を適用して整数値として確定させます。

具体的な数値を用いて確認してみます。

例えば、入力画像の高さ H が 32 ピクセル、フィルタサイズ F が 5 ピクセル、パディング P が 0、ストライド S が 1 の場合を想定します。

分子の計算:

32 + 2 × 0 - 5 = 27

ストライドで除算して 1 を加算:

27 ÷ 1 + 1 = 28

この設定の場合、処理後の画像サイズは 28 ピクセルへと変化します。

もし周囲に幅 2 ピクセルのパディング(P = 2)を追加していた場合は、分子が 32 + 4 - 5 = 31 となり、31 ÷ 1 + 1 = 32 となって、入力と同じサイズを維持できます。

計算問題:初級編(パディングなし・ストライド1)

まずは余白を追加せず、1マスずつ堅実にフィルタを動かす最も基本的な構造の問題を解いてみます。

問題1

入力サイズが 7×7 の正方形データがあります。このデータに対して、フィルタサイズが 3×3、パディングが 0、ストライドが 1 の条件で畳み込み処理を行った場合、出力されるデータのサイズを計算してください。

問題1の解説

高さと幅が同一の正方形であるため、片側の辺の長さを計算式に当てはめます。

分子の計算: 7 + 2 × 0 - 3 = 4

分母のストライドで除算し、1 を加算: 4 ÷ 1 + 1 = 5

端数は発生せず、計算結果は 5 となります。 したがって、正解は 5×5 です。 余白を付けずに 3×3 の枠を 1 歩ずつ動かした場合、両端から枠がはみ出せない分だけ、全体のサイズが縮小します。

計算問題:中級編(パディングあり・ストライド2)

続いて、余白を付与して端の情報を保護しつつ、歩幅を広げてデータ全体を一気に圧縮する設定の問題を扱います。

問題2

入力サイズが 32×32 の画像データがあります。フィルタサイズが 5×5、パディングが 2、ストライドが 2 に設定されている場合、出力される特徴マップのサイズを計算してください。

問題2の解説

設定された各数値を計算式に代入します。入力値は 32、フィルタは 5、パディングは 2、ストライドは 2 です。

分子の計算: パディングは上下左右の両端に加わるため、2 倍して計算します。 32 + 2 × 2 - 5 = 32 + 4 - 5 = 31

ストライドで除算し、1 を加算: 31 ÷ 2 + 1 = 15.5 + 1 = 16.5

この設定では計算の途中で割り切れず、15.5 という端数が出現します。CNNの処理系では、枠が入力データの端をはみ出して余ってしまう最後のステップは切り捨てられるため、15.5 の小数点以下を切り捨てて 15 とし、そこに 1 を加えます。

15 + 1 = 16

したがって、正解は 16×16 です。 ストライドを 2 に設定したことで、元のサイズから約半分にデータが圧縮された状態が確認できます。

計算問題:上級編(非正方形データと縦横で異なるパラメータ)

画像データの縦横比が異なる場合や、フィルタの形状、移動の歩幅が縦と横で個別に設定されている場合の計算を行います。

問題3

縦 28 ピクセル、横 40 ピクセルの長方形のデータがあります。このデータに対して、以下の畳み込み処理を適用します。

  • フィルタサイズ:縦 3 ピクセル、横 5 ピクセル
  • パディング:上下方向に 1 ピクセル、左右方向に 2 ピクセル
  • ストライド:縦方向に 1 ピクセル、横方向に 2 ピクセル

この畳み込み層を通過した後の出力データの縦サイズと横サイズをそれぞれ計算してください。

問題3の解説

縦方向と横方向で数値が異なるため、それぞれの方向ごとに独立して計算式を適用します。

縦サイズの計算: 入力の高さは 28、フィルタの高さは 3、上下パディングは 1、縦ストライドは 1 です。

分子の計算: 28 + 2 × 1 - 3 = 27

ストライドで除算し、1 を加算: 27 ÷ 1 + 1 = 28

横サイズの計算: 入力の幅は 40、フィルタの幅は 5、左右パディングは 2、横ストライドは 2 です。

分子の計算: 40 + 2 × 2 - 5 = 39

ストライドで除算し、1 を加算: 39 ÷ 2 + 1 = 19.5 + 1

端数の 0.5 を切り捨てて 19 とし、1 を加算します。 19 + 1 = 20

したがって、正解は縦 28、横 20(28×20)です。 縦方向はパディングの効果によって入力時の高さ 28 がそのまま維持され、横方向はストライドが 2 であるため半分の幅 20 に縮小されました。

畳み込み処理の調整におけるメリットとデメリット

パディングやストライドを調整して出力サイズを制御することには、明確なメリットとデメリットが存在します。

メリット

  • 次層へのデータ整合性の確保:あらかじめ出力サイズを正確に計算しておくことで、後続の全結合層や別の層と接続する際に、データの次元の不一致によるエラーを防ぐことができます。
  • 計算負荷と解像度の両立:ストライドの値を大きく設定して出力サイズを小さくすれば、全体の計算量を削減できます。逆にパディングを適用すれば、画像の端の情報が消失することを防ぎ、詳細な特徴を維持できます。

デメリット

  • ネットワーク設計の制約:計算式の分子がストライドの値で割り切れない設定を行うと、端のデータが計算から除外されるため、意図しない情報の欠落につながる可能性があります。
  • メモリ使用量の増加:パディングを過剰に付与して大きな出力サイズを維持し続けると、モデル全体が保持するパラメータや計算途中のデータが増加し、ハードウェアのメモリを圧迫します。

学習のまとめ

CNNの出力サイズを正確に算出できるようになるための学習手順は以下の通りです。

  1. 入力サイズ、フィルタサイズ、パディング、ストライドの4要素の数値を手元の設計データから確認します。
  2. 出力サイズの基本公式に数値を当てはめ、割り切れるかどうかの確認と端数の処理方法を確認します。
  3. 畳み込み層に続いて配置されるプーリング層(画像サイズを間引いて縮小する層)の計算規則も併せて学習し、入力画像から最終的な判定層に至るまでのデータ形状の遷移を追跡できるように練習を進めてみてください。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。