"0"からAI~ふらっとどうぞ~

自分は独学でゼロからAIについて学んでいる学生です。このブログは主にAIやネットワークの基本を理解できるようにブログという形で分かりやすくアウトプットしたものです。AIについて学びたいなと思っている方。ぜひこのブログで勉強して見てください!またある程度AIについて知識がある方も何かをを得るヒントにしてくてくれれば幸いです。Twitterアカウントもあるので是非フォローお願いします!

パディング??ストライド??CNNに使われるテクニックと用語

皆さんこんにちは!!

今日も張り切っていきましょう。

 

ここ最近のブログではCNNについて書いていて、

「畳み込み層」「プーリング層」とまとめてきました。

 

今日は畳み込み層、プーリング層で使われる代表的なテクニックと

さらにちょっとした用語について説明します。

これでもう1レベルCNNについて詳しくなりましょう!!

 

CNNについて全体を確認しておきたい方はまずはこちらからどうぞ!

 

zawapython.hatenablog.com

 

「畳み込み層」「プーリング層」を確認したい方へ

 

zawapython.hatenablog.com

zawapython.hatenablog.com

 

 

〜今日の内容と参考文献〜

 

パディング

畳み込み層やプーリング層で行われているテクニック。それは見出しの

「パディング」

という手法です。

これは一言で言うと

入力画像のピクセルの周りにピクセルを囲むテクニック

のことです。

 

下の図を見てみて下さい。

f:id:zawapython:20181002205417j:plain

 

この図では様々な値のピクセルを持つ入力画像を

0のピクセルが取り囲んでいますね。

この様なパディング方法をゼロパディングと言います。

0のピクセルで周りを囲んでますね。

 

これはパディングの中でも代表的な手法の1つです。

 

なぜこのパディングというテクニックが大事なのでしょうか?

 

メリットは2点あります。

1 画像のサイズが変わらないようにするため

 

畳み込み層やプーリング層を行うことで画像のサイズが徐々に小さくなりますよね。

畳み込み層やプーリング層は何度も行うので繰り返していると

次第に画像のサイズが1x1になっていまいます。

このパディングをしてピクセルを配置することで画像サイズを小さくせずに

済むのです。

 

2 端の特徴量もしっかり捉えることができる!

 

畳み込みやプーリングを行うとどうしても外側から画像は縮小されていきます。

そのため端にあるピクセルは内側にあるピクセルに比べて畳み込み回数や

プーリング回数は少なくなってしまいます。

 

しかし!!

このパディングをすれば画像サイズが変わらなくなるだけでなく

しっかり画像の端のピクセルも畳み込まれるのでより精度が高くなります!

 

 

ストライド 

ストライドというのは畳み込みにおいて使われる

フォルダが画像を移動する間隔のことです

 

 

ストライド」って言葉どこかで聞いたことあるなと思ってたら

陸上で「ストライド走法」ってありますよね笑

脱線しますが「ストライド走法」というのは簡単にいうと

歩幅をかなり大きくして走る?走法です。

しかしCNNにおいて「ストライド」とは

 

CNNの「ストライド」=フォルダが移動する幅

f:id:zawapython:20181002211026j:plain

めっちゃ覚えやすい!!

パディングのところの図のストライドですね。

基本的にストライドは1ですが、かなり大きな画像を縮小するときとかにストライドを1以上に設定するときがあります。

 

 

 

参考文献・サイト

ディープラーニング (やさしく知りたい先端科学シリーズ2)

ディープラーニング (やさしく知りたい先端科学シリーズ2)

 

 

 

次回もまた見てください!! 

 

さあ!AIに「眼」を与えよう。~プーリング層について~

皆さん。こんにちは!

今日も張り切っていきましょう!

 

ここ最近のブログでは主にCNNについて説明していて前回は「畳み込み層」について

お話ししました。一言で復習すると

畳み込み層は画像の局所性を利用し特徴量を抽出している

 

そんなところでしょうかね

畳み込み層の知識を使うので 畳み込み層を確認しておきたい人は

こちらを参照していただければなと思います。

 

今日のブログでは「プーリング層」について説明していきます

 

〜今日の内容と参考文献〜

 

プーリング層って?+大事なこと

 

プーリング層は畳み込み層の次に配置される層で畳み込み層から得られた画像を

各領域に区切って領域内の特徴量の最大値や平均値を求め、それらを並べて

新たな画像を作るところです。

 

区切った領域内の特徴量の最大値を求めることを

MAXプーリングといい

 

特徴量の平均値を求めることを

平均プーリングといいます。

 

プーリング層において大事なことは

MAXプーリングや平均プーリングを用いて領域内から特徴量を選出しています。

このため

 

多少画像がズレたり変化しても結果が同じになる

 

ところです。これは位置に対しての感度が低いということなので

視覚の役割を持つ眼の複雑型細胞と同じような性能がある

とも言えます。

 

視覚についてのブログが上がってますので、見ていない方はぜひそちらを参考にして見て下さい。

  

次にプーリング実例を見ていきましょう

 

プーリング層が新たな画像を生成するまで

 

f:id:zawapython:20180927112219j:plain

 

この例では畳み込み層から得られた6x6の画像を

2x2の領域に分けプーリングしているので3x3

の画像が生成されています。

 

ここではMAXプーリングで抽出していていますね。

皆さんお気づきかと思いますがプーリング層でも画像は縮小されていますね。

これにより計算量を減少させることが可能になります

 

さらに畳み込み層の様にチャンネルごとに分解させたり合流もありません。

なので

最初のチャンネル数=出力のチャンネル数

となります。

チャンネル数はあまり気にしなくても大丈夫そうです。

 

参考文献・サイト

 

ディープラーニング やさしく知りたい先端科学シリーズ

ディープラーニング やさしく知りたい先端科学シリーズ

 
機械学習入門 ボルツマン機械学習から深層学習まで

機械学習入門 ボルツマン機械学習から深層学習まで

 

 

次回もぜひ見て下さい。

それでは

さあ!AIに「眼」を与えよう。~畳み込み層について~

みなさん。こんにちは!

今日も張り切っていきましょう。

 

前回からCNNについてブログを書いていて

 お話しました。

前回のブログをまたみていない方は上から参照してみてください。

 

今日はCNNの中でも畳み込み層に焦点を当ててお話していきます!!

 

〜今日の内容と参考文献・サイト〜

 

画像のある性質を用いている!?

 前回のブログでも書いたように

畳み込み層はCNNの中でもかなり重要な役割を担っていて

入力された画像の特徴を強調したり、弱めたりしてより特徴がはっきりとするものに

変換するところでしたね。

 

もう少し突っ込んだ話をしましょう

 

ではどうやって特徴を強調したりするのでしょうか?

実は画像のある性質を利用しているのです。それは・・

 

局所性

 

画像というものは「ピクセル」と呼ばれる要素が多く並んでできています。

この「ピクセル」に色などの情報が入ることでそれらが合わさることで

1つの画像ができているのです。

 

局所性とは

画像を構成する1つ1つのピクセルは隣のピクセルと似たような性質を持っている

というものです。

隣のピクセルが赤色だったら自分も同じような赤色になるって感じでしょうか

 

畳み込み層はこのような画像の性質を利用して特徴を抽出しているのです! 

では局所性をどのように利用して畳み込んで行くのでしょうか?

 

〇〇〇〇を用いて畳み込んでいく!

畳み込み層が画像の局所性を利用してるということはわかりましたね。

局所性がどこで利用されているのか見て行きます。

 

畳み込み層では複数の「フィルタ」というものを用いて画像の検出を行います。

それぞれのフィルタは異なる特徴量を抽出するもので、これらを組み合わせて

画像を検出して行きます。

下の図を見てください。

f:id:zawapython:20180919215631j:plain

この図では画像のピクセルが4x4四方となっておりフィルタの枚数を1枚としています。

フィルタのサイズを2x2四方にしています。

また各ピクセルの値が色相に相当するとします。

 

 フィルタが画像を検出していく工程は

  1. 画像の各位置にフィルタをずらす
  2. 重なったピクセル同士を掛け合わす
  3. それらの和を取り新たなピクセルの誕生。

 

色がつけられた二箇所を見てください!

それぞれのピクセルがフィルタと掛け算され最終的に和が取られていますね。

例えば青色の範囲だと・・

(1x1)+(0x0)+(0x0)+(1x2)=3

黄色の範囲では・・

(1x1)+(0x1)+(0x2)+(1x0)=1

となっていますね。

 

図から分かるように畳み込みを行うことで画像のサイズは小さくなっています

理由は画像のピクセルがフィルタにより新ピクセルとしてまとめられているからです

 

これは先ほど説明した画像の「局所性」を利用して行っているということが

わかるかと思います。というのも・・

 

近くのピクセル同士で似たような性質、つまり「局所性」があるので

フィルタでまとめて合算することができて、

より特徴が強調され、かつ画像も小さくなっているのですね!

 

さらにもう気づいている方もいらっしゃるかもしれませんが・・

フィルタがスライドするので隈なく処理するので

画像のどこに対象がいても対処できるのです!!

これで終わりかと思いきや・・

 

 もう少し突っ込んだ話をさせてください笑

 

一般的な画像データはカラーですよね?

基本的にはR(赤)、G (緑)、B(青)の組み合わせでいろんな色ができています。

 

カラーである画像は各ピクセルがR,G,Bの色を持っています。

つまりR、G、Bの3枚からなる画像から構成されて一枚の画像ができているのです。

 

この枚数をチャンネル数といいます。

モノクロ画像の場合はいいのですがカラー画像であると

このチャンネル数が増えるので畳み込みの処理がちょっと複雑です。

しかしカラー画像を処理できなければ「眼」と呼ぶには程遠いですよね・・。

 

次はより実用的なCNNを見ていきましょう。

 

 

より実用的なCNN

f:id:zawapython:20180920015813j:plain

上の例ではチャンネル数が3でフィルタの数は2になっています。

見た感じ先ほどのものと比べかなり複雑になっていますね・・。

少しずつ見ていきましょう。

 

まず最初のところ。ここはかなり大事です。

チャンネル数=フィルタの枚数

 

フィルタの種類は1,2,3とかたくさんあってもいいのです。

ただしそれぞれの枚数はチャンネル数に合わせてください!ということです。

 

この例ならばチャンネル数は3なのでフィルタ1も3枚必要。

ということになります。

 

次にフィルタごとに画像の畳み込みを行います。

Rの画像でもフィルタの検出をして・・次に

Gの画像でも同様にそれぞれ畳み込んで行きます!

畳み込み方は先ほど説明したのと変わりありません!!

 

畳み込まれたそれぞれの画像を最後足し合わせて1つの画像にして行きます。

R,G,Bの画像を合算して一枚の画像が生成されます。

生成された画像の枚数=フィルタの枚数

となります。

 

こうしてフィルタごとに一枚の特徴が強調された画像ができていますね。

最後に「処理」という工程が図には示されていますね。

 

具体的な内容としては

1.出力画像に重みをかけバイアスを足す

2.活性化関数で非線形変換

3.新たな画像が完成!!

 

新たな画像はプーリング層など他の層に渡されてとりあえず終了です。

これで畳み込み層が役目を終えます。

 

重みとバイアスの違いについてなのですがこれはまた別の記事で

詳しく紹介します。 

 

参考文献・サイト

 

ディープラーニング やさしく知りたい先端科学シリーズ

ディープラーニング やさしく知りたい先端科学シリーズ

 

 

次回もまた見てください!ありがとうございました!

当ブログはAmazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。