
この回でつかむこと
カーネルをずらす計算と出力画像の意味を説明できる。
画像を小さな窓で見るって何だろう?
画像は画素値の表です。カーネルは小さな重みの表で、窓の範囲の値と掛けて足します。平滑化なら周囲の平均、エッジ検出なら明暗の変化に反応します。

写真の輪郭って、どうやって見つけているの?

小さな窓を少しずつずらし、近くの画素をまとめて計算するんだよ。

窓の中の値とフィルタの値を掛けて足すのですね。

AI先生 中央の9を周りの0と一緒に平均すると1になるんだよ。
同じカーネルを画像全体へずらして適用する。 画像は画素値の表です。カーネルは小さな重みの表で、窓の範囲の値と掛けて足します。平滑化なら周囲の平均、エッジ検出なら明暗の変化に反応します。
import torch
import torch.nn.functional as F
x = torch.zeros(1,1,5,5)
x[0,0,2,2] = 9
kernel = torch.ones(1,1,3,3)/9
print(F.conv2d(x,kernel).squeeze())なぜそうなる? 1か所の9が、周囲の3×3窓で平均されて広がります。
端の画素はどうなる?
パディングなしの3×3カーネルを5×5画像に使うと、出力は3×3に小さくなります。端に値を足してサイズを保つ方法もあります。
print(F.conv2d(x,kernel,padding=1).shape)ここに注目 周囲へ1画素分の0を補うことで、縦横のサイズが保たれます。
予想して、理由を話そう
答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。
答えを選ぶと理由が表示されます。
Colabで試してみよう
コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。
保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。
身近な技術とつなげてみよう

AI先生:スマホの写真アプリの『ぼかし』も近くの画素を見る処理の仲間だよ。
この回の重要な用語
本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。
- 画素
- 画像を構成する一つひとつの点の値です。
- カーネル
- 画像の近くの値へ掛ける小さな重みの表です。
- 畳み込み
- 窓をずらしながら重み付きの和を計算する操作です。
- パディング
- 画像の端の外側へ値を補い、出力サイズなどを調整する方法です。