AI CODE DeepLearning アルゴリズム

画像AIを身につけよう② 畳込み(Convolution)編

titleconv

畳込み?

Convolution?

画像のフィルタ処理をすることで

線を強調したりする処理になります

え!?難しそう!

畳込みの処理は掛け算と足し算だけです。

画像AIはAI構造を選んで使うことが多いので、

この畳込みを調整することはあまりないです。

AI構造をいじらない人以外は、なんとなくの理解で良いです。

スポンサーリンク

AI構造と畳込み

画像のAIでは、DeepLearning(深層学習)という技術の中の、CNN(Convolution Neural Network)を使います。畳込み(Convolution)を使うNN(Neural Network)というそのまんまのネーミングになります。

前回、AI構造について説明しましたが

AI構造の、立方体の形を変換する際には、3つほど処理が入っています

  • 畳込み
  • 活性化関数
  • プーリング

今回のお題いである「畳込み」は立方体を3chから64chに増やしている所の処理です。

畳込みの計算 その①

さて、本題の畳込みの計算です。

計算の仕方とその結果で、どのように画像に変わっていくのか、わかっていただければと思います。

効果

畳込みで使う画像フィルタの効果は最初の方でも紹介しましたが、
下記みたいにエッジ検出(絵のふちどり?)をすることができます。

下記はキャニーフィルタというものを使った場合

計算

計算をわかりやすくするため、画素数を減らした27×27×1chの画像にします。

しっかり、車が見えますね。各画素が持つ数字も表示しています。

高さ3×幅3の縦方向検出用のフィルタを例に計算してみます。

計算は各画素ずつ、全部で729つ(=27×27)に行いますが、下記例では、ピンクの枠の画素に対して計算をしています。

3×3のフィルタの場合、計算対象画素の周り3×3を対象に計算していきます。

  • Step1 対応する座標同士で掛け算
  • Step2 全部の座標の足し算の絶対値

この計算で算出された結果が、ピンクの画素のフィルタ後の値になります。

0以下は0で、255以上は255に置き換えます。

という計算を全部の画素で行います。

実際に計算後の全画素の結果は下記になります。

わかりにくいですが、縦のエッジが検出できています。

端の計算はどうするの?と疑問に思う方もいらっしゃると思います。

画像の高さ、幅を変えない場合は、パディングといって、ざっくり説明すると、適当にダミーの値を入れて計算します。

畳込みの計算 その②

その①だけだと、なぜ、立方体のch数(奥行き)が増えているのか?
という疑問が残るので、その説明をします。

畳込みの部分では、フィルタを増やしたいch数分用意します。下記例だと64つのフィルタ。

64つのフィルタで、その①で計算したのと同様、30×30×3chを計算します。3chの場合は、1chずつかけ算して、3ch分足し算します。

64つのフィルタ計算するので、奥行きも64chに増えるというわけです。

畳込みの計算 その③ ストライド

畳込みでは、フィルタの高さ、幅以外に、どれくらいの間隔で計算していくかというストライドというものがあります。

例えば、今までは、1つずつずらして、計算していたので、stride=1ということになります。

では、2つずつずらす、stride=2の計算は下記になります。

stride=2の場合は、立方体の高さと幅は半分になります。

畳込みで使うフィルタ

その①、②の例では、縦方向のエッジ検出するフィルタを用いましたが、実際にどのフィルタを使うか疑問に出るかと思います。

わたしは最初に聞いたときは、結構衝撃でしたが、AIのアルゴリズムはこのフィルタを自動で決めます。

フィルタの種類についてあまり触れなかったのは、画像AIにおいては、知っていても選んだりすることもないので、使う場面がないからです。

AIが判別しやすいように、こういったフィルタにしようと、使うフィルタを調整します。

畳込みの役割

畳込みでは、主に下記の役割、意味があります

  • 特徴(エッジ、テクスチャ、パーツ)抽出
  • 調整するパラーメータが少なくてすむ

特徴は、なんとなくわかると思います。

調整するパラメータが少ないというのは、全結合層と比較してということです。

全結合層?っとなりますので、今は、ふーんと聞き流してもらえれば良いと思います。

パラメータというのは、AIが学習する際に、調整する値のことです。今回だと、フィルタの値がパラメータです。

最後に

今回は、畳込みについて説明しましたが、活性化関数、プーリングがあります。

それぞれ、同様にかけ算したり、足したりしているだけです。

計算も覚える必要はなく、そういった役割の層が入っているんだというくらいの認識で十分だと思います。

次回は、活性化関数のところを説明します。

-AI, CODE, DeepLearning, アルゴリズム
-, , ,

© 2020 ひつじ工房 Powered by AFFINGER5