【図解】CNN(畳み込みニューラルネットワーク)とは?仕組みと各層を初心者向けにわかりやすく解説

AI

CNN(畳み込みニューラルネットワーク)は、画像認識などで使われる深層学習モデルです。
本記事では、CNNの仕組みを「畳み込み層」「ReLU」「プーリング層」「全結合層」「Softmax」などの各層ごとに図解でわかりやすく解説します。

CNN(畳み込みニューラルネットワーク)でできること

CNN(Convolutional Neural Network)は、画像や動画の形・模様・特徴を自動で学習して識別することができます。

  • 画像分類
    画像に写っているものが何かを分類することができます。(犬 / 猫の判別など)
  • 物体検出
    画像の中のどこに何があるかを検出できます。
  • 画像の領域分割
    自動運転の道路・歩道認識など。
  • 顔認識
    人物の顔を識別することができます。

CNNの仕組み

CNNは畳み込み層、活性化関数、プーリング層、全結合層、Softmax関数で構成されています。

CNNの流れ

詳細について説明します。

畳み込み層(Convolution Layer)

畳み込み層では画像の特徴量を抽出します。
特徴量は、フィルタ(カーネル)という行列を使い、特徴マップ(これも行列)を作成します。

簡単に、入力(画像)が3×3、フィルタ(カーネル)が2×2の例で説明をします。

畳み込み層の計算

① まずはフィルター(カーネル)を画像データの左上に重ね、各々の数値を掛けた合計を特徴マップの行列にセットします。
② 次にフィルター(カーネル)を右隣に移動して同じように計算をして特徴マップにセットします。
③ 同じようにフィルターを左下→その右隣と移動して計算結果を特徴マップにセットします。

畳み込み層の計算

■ストライド(stride)
今回の例ではフィルターを1つずつ移動しましたが、画像サイズに応じて移動数を増やす場合もあります。
いくつ移動するか(移動幅)はストライド(stride)といいます。
ストライドが大きくなると特徴量は小さくなります。

■パディング(padding)
フィルターを画像と重ねるとき、端のはみ出てしまう場合には計算ができません。
そこで、画像の周りに値を追加してやります。
これをパディングと言います。


計算に使用した畳み込み層のフィルターは複数あり、ぞれぞれのフィルターを使って複数の特徴マップを作成します。
また、画像は複数の畳み込み層を通過します。例えば最初のフィルターはエッジを認識、次は模様認識、次はパーツ認識などのように徐々に特徴を抽出していきます。

畳み込み層

活性化関数 ReLU

特徴マップがマイナスの情報を0にします。

プーリング層(Pooling)

プーリング層とは特徴マップの空間サイズを縮小する処理です。

プーリング層

特徴マップを縮小する目的は次の通りです。

  • 計算量の削減
  • 過学習の抑制
  • 位置のズレに強くする(平行移動不変性)

プーリング層の計算は、特徴マップの領域を区切って、最大値(最大値プーリング)や平均値(平均値プーリング)を抽出してデータを圧縮します。
次の絵は最大値プーリングでの例です。

最大値プーリング

また、画像に若干のズレがあっても、特徴を保持できるのもポイントです。

最大値プーリング

全結合層(Fully Connected)

全結合層は、畳み込み層やプーリング層によって抽出された特徴マップをもとに分類を行う層です。
特徴がどのクラスに最も近いかを判断する処理は全結合層で行われます。

softmax関数

softmax関数により確立として結果を希釈できるようになります。

CNNが画像認識できる理由

改めて、CNN(畳み込みニューラルネットワーク)が画像認識できるのは、主に次の3つの仕組みのおかげです。

  • 局所的な特徴を検出できる(畳み込み層)
  • 重要な特徴だけを残す(プーリング層)
  • 特徴を組み合わせて物体を判断する(全結合層)

この仕組みによって、CNNは画像の中にある物体を高い精度で識別できます。

CNN(畳み込みニューラルネットワーク)のまとめ

  • CNN(畳み込みニューラルネットワーク) は、画像や動画の形・模様・特徴を自動で学習して識別できる技術。
  • 主な用途には 画像分類、物体検出、画像領域分割、顔認識 などがある。
  • CNNは主に 畳み込み層 → 活性化関数 → プーリング層 → 全結合層 → Softmax層 の流れで処理される。
  • 畳み込み層(Convolution Layer) では、フィルタ(カーネル)を使って画像の特徴(エッジ・模様など)を抽出する。
  • フィルタを画像上でスライドさせながら計算することで 特徴マップ(feature map) が作られる。
  • ストライド(stride) はフィルタを動かす間隔で、値が大きいほど出力サイズは小さくなる。
  • パディング(padding) は画像の周囲に値を追加し、特徴マップのサイズ減少を抑えるために使う。
  • 活性化関数(ReLU) は非線形性を与え、不要な負の値を0にすることで学習を効率化する。
  • プーリング(Pooling) は特徴マップを縮小し、計算量削減や位置ズレへの強さを向上させる(最大プーリングなど)。
  • 最後に 全結合層とSoftmax関数によって、画像がどのクラスに属するかの確率を計算して分類する。

腕試し(理解テスト)

腕試し(理解テスト)に挑戦する場合はこちらをクリック。

コメント

タイトルとURLをコピーしました