MENU
シトヒ
普通の会社員でブログ歴は10年以上。

<趣味・得意分野>
⇨スポーツ観戦:F1、サッカー、野球
⇨テック分野が好物:AI、スマホ、通信

G検定 CNN(畳み込みニューラルネットワーク)の解説

今回は、G検定のシラバスで最も理解が難しいCNNについて解説していきたいと思います。CNNは実装経験のない受験者にとってすぐに理解するのが難しい項目です。

CNNはG検定では頻出問題とされるので繰り返し学習して理解してください。

タップできる目次

CNN(畳み込みニューラルネットワーク)とは?

CNN(Convolutional Neural Network)は、畳み込みニューラルネットワークといって、画像認識に使われるディープラーニングの代表的手法です。任意に設定したフィルター内の領域の情報を畳み込んで作成するConvolution Layerを利用したニューラルネットワークになります。

CNNでは、畳み込み層は画像の局所的な特徴を抽出し、プーリング層は局所的な特徴をまとめあげる処理をしています。つまり、入力画像の特徴を維持しながら画像を縮小処理しています。

今までの画像縮小処理と異なるところは、画像の特徴を維持しながら画像の持つ情報量を圧縮することが可能になります。学習した抽象化された画像イメージを用いて、入力される画像を認識することで画像の分類を行うことになります。

CNNの起源

CNNは1982年に福島邦彦によって提唱された生物の脳の視覚野をモデル化したネオコグニトロンが基となり、それに対して誤差逆伝播法の勾配計算を加え機械学習モデルの学習スタイルに適合する形でモデル化したLeNetが起源となります。

目次に戻る

重要な関連用語についての解説

畳み込みとは何か

畳み込みconvolution)とは、画像処理でよく利用される手法で、カーネル(またはフィルター)と呼ばれる格子状の数値データと、カーネルと同サイズの部分画像(ウィンドウ)の数値データについて、要素ごとの積の和(内積)を計算することで、1つの数値に変換し圧縮する処理のことである。

この変換処理を、カーネルを画像上指定したピクセル幅ずつずらして畳み込み処理を行うことで、小さい格子状の数値データすなわちテンソル(特徴マップ)に変換してきます。

カーネル(フィルター)

畳み込む際のフィルターのこと。一般的には3x3や5x5のサイズが用いられ、カーネルの数(種類)も選択することができる。

カーネスの数を増やせば、その分、畳み込み層の数も増えるため注意が必要です。

カーネル(フィルター)の設定

フィルターは以下の設定を行うことになる。基本的な考え方としては、CNNの精度を上げるには、「フィルタを小さくし、階層を深くする」ことです。

  • フィルターの数(K): 使用するフィルタの数。大体は2の累乗の値がとられる(32, 64, 128 …)
  • フィルターの大きさ(F): 使用するフィルタの大きさ
  • フィルターの移動幅(S): フィルタを移動させる幅(ストライド)
  • パディング(P): 画像の端の領域をどれくらい埋めるか

パディング

フィルターを画像に適用するとき,画像からフィルタがはみ出すような位置にフィルターを重ねることができないために、畳み込み処理による出力画像は入力画像よりも小さくなります。

そこで、フィルターを適用する前に,入力画像の外側に画素値0の画素を配置する方法(ゼロパディング)を用いて、出力画像が入力画像と同じサイズになるようにするアプローチがよく用いられます。

ストライド

カーネルをずらすピクセル幅のこと。一般的には、5×5は3ピクセル、3×3は1ピクセルとするのが通例となっています。

プーリング Pooling

プーリングとは、画像内の局所的な情報をまとめるて圧縮する操作です。具体的には、Max PoolingとAverage Poolingと呼ばれる2種類のプーリング操作がよく使用されています。

Max Pooling

各領域内の最大値をとって圧縮を行う方法

Average Pooling

局所領域の画素値の平均値を出力する方法

プーリング層では、フィルターのサイズや、ストライドの値によって出力画像のサイズを調整することができます。なお、プーリング層には誤差逆伝播法によって調整すべきパラメータは存在しません。

全結合層 Fully Connected Layer

すべてのレイヤー要素と接続するレイヤです。主に、最後の判定などを行う層で使用されます。

CNNの最終的な出力が画像以外の場合(例えば、物体の名称)に,CNNの最後に使用されるのが全結合層になります。

畳み込み層もしくはプーリング層の出力は(H,W,C)の3次元データになっているため、これらを1列にH×W×C個並べた1次元のベクトルにして全結合層に入力します。

全結合層は通常のニューラルネットワークと同様に、各ノードに割り当てられた重みとバイアスを用いて入力値を変換します。

画像分類を行う場合は最後にソフトマックス関数を適用することで確率の表現に変換します。

目次に戻る

CNNの応用例

顔認識システム

スマートフォンで写真を自動的に分類する機能がありますが、それもCNNで画像を識別して分類しています。

画像生成 (Image Generation)

画像認識(Image Recognition)

画像に対してキャプションを付与するといった応用例は、CNNから抽出した画像の特徴量とテキスト情報を組み合わせています。

目次に戻る

CNNの進化系

R-CNN(Regional CNN)

アレックスネットの出現を受けて、一般画像認識の検討が始まり、その検討の一つとして考えられたモデルです。画像上の物体の領域を低コストで認識するための手法です。

高速RCNN(fasteRCNN)

領域の切り出しと切り出した領域の物体認識を同時に可能としたモデルであり、これにより動画領域にもCNNを利用可能としたモデルです。

FasteRCNNの発展系として下記のモデルも考案される。

  • fasterRCNN
  • YOLO(You only look once)
  • SSD(Single Shot Detector)

セマンティックセグメンテーション

R-CNNで用いたようにバウンディングボックス(矩形)で画像を切り出すのではなく、より詳細な領域分割を得るモデルであり、各画素がどのカテゴリーに属すのかを求める手法

完全畳み込みネットワーク(FCN:Fully Convolutional Network) はセマンティックセグメンテーションを実現するモデルであり、FCN単体では画像認識は行えない。

アンサンプリング

CNNでは畳み込み演算によって、上位層では下位層に比べ画像サイズが小さく(粗く)、これを回避するために下位のプーリング層の情報を使って詳細な解像度を得る方法

インスタンスセグメンテーション

セマンティックセグメンテーションが同じカテゴリに属する複数の物体を同一ラベルとして認識していたのに対し、インスタンスセグメンテーションは物体毎に認識させる。

認識粒度の細かさ順で並べると
バウンディングボックス < セマンティックセグメンテーション < インスタンスセグメンテーション

目次に戻る

まとめ

CNNの基本原理は、畳み込みにより特徴量を圧縮し、圧縮した画像をニューラルネットワークと同様に活性化関数でつないでいったものになります。

畳み込みを行う上で、適切なフィルター設定方法やレイヤー構成の理解についての質問が頻出なので十分理解して試験に臨んでください。

よかったらシェアしてね!
  • URLをコピーしました!
タップできる目次