CV I — CNN 基礎
畳み込みとプーリングの考え方、画像分類 CNN の基本構造を学びます。
画像をどう扱うか#
画像は高さ×幅×チャンネル(RGB なら 3)のテンソルです。全結合で扱うとパラメータが膨大になるため、 **畳み込みニューラルネット(CNN)**で局所パターンを効率よく学習します。
畳み込みとプーリング#
- 畳み込み(Conv):小さなフィルタを画像上で滑らせ、エッジ・模様などの局所特徴を抽出する
- プーリング(Pooling):領域を縮約して位置ずれに頑健にし、計算量を減らす
層を重ねるほど、低次(エッジ)→ 高次(形・物体)の特徴を段階的に捉えます。
import torch.nn as nn
cnn = nn.Sequential(
nn.Conv2d(3, 32, kernel_size=3, padding=1), nn.ReLU(),
nn.MaxPool2d(2),
nn.Conv2d(32, 64, kernel_size=3, padding=1), nn.ReLU(),
nn.AdaptiveAvgPool2d(1), # 各チャンネルを 1 値に集約
nn.Flatten(),
nn.Linear(64, n_classes),
)入力の正規化と拡張#
メモ
ゼロから CNN を学習することは少なく、実戦では次レッスンの転移学習(事前学習済みモデルの ファインチューニング)が主流です。本レッスンは仕組みの理解が目的です。
理解度チェック#
次のステップ#
次は実戦の主流、転移学習・ファインチューニングと TTA を学びます。