E資格向けの自習アウトプット
自分用メモ
CNN(Convolutional Neural Network)は、畳み込みニューラルネットワークと呼ばれる、畳み込みという圧縮に似た(圧縮ではない)処理で入力次元を削減しつつ、特徴量をあぶり出していく手法です
主に画像のクラス分類や物体検出、領域分割(セグメンテーション)などに使われることが多い模様
CNNの概念
画像データは、ちょっとした解像度のデータでも入力データとしては非常に大きい次元になる。チャネル数 x H x W (カラーだとRGB 3チャネル)
ちょっとしたスマホのカメラでも何万画素になるので、各層のパラメータもすごくでかくなりがち
また画像は人間の目からすると、見た目は変わらない1ピクセルずらしたただけでも入力データとしては、全く別物と扱われてしまう
これを改善する処理が 畳み込み(Convolution)とプーリング(Pooling)
近い位置の情報も統合して圧縮したりするので、少しの移動にも強い
処理の流れは以下な感じ
畳み込み
画像データは3次元(チャネル数 x H x W )の形状であり、空間的に近いピクセルは似たような値であったり、逆にとおいピクセルは同士は関わりが薄かったり、RGBそれぞれは関連性があったりとその形状に特徴がある
畳み込み層は、この3次元の形状は維持しながら、カーネル(フィルタ)を使って特徴量をあぶり出してゆく
やってることは、画像のフィルター処理のようなもの
カーネル(フィルタ)をずらしながら積和演算を繰り返していく
重みとバイアスは学習パラメータ
学習パラメータであるカーネル(フィルタ)が共有され使いまわしできるので、メモリの使用量が減る
プーリング
局所的な領域から重要は特徴のみを抽出する
学習パラメータを持たず、実装はシンプルだが強力
小さな移動があっても同じ結果を返してくれる
最大値プーリング、カーネル内の最大値を一つ返す
平均値プーリング、カーネル内での平均値を返す
まとめ
画像処理は IoT でも需要なので、熱心にお勉強中
試験でもここはパーフェクトしたい
この後は、Python実装のためのお作法をおさえていきます