この記事を読んで分かること
- 畳み込み層(Convolutionレイヤ)とは何か
- 畳み込みは何のためにするのか
畳み込み層(Convolutionレイヤ)とは?
畳み込み層(Convolutionレイヤ)とは、
入力データに対して畳み込み演算を行う層
です。
畳み込みとは具体的にどんな処理をしているかというと、入力データの一部に対してフィルタとの内積を計算していきます。
8×8の入力データと3×3のフィルタの畳み込みを例として考えてみます。
入力データの左上から順にフィルタと同じ大きさのデータを切り出し、内積を計算していきます。
次に右に1ピクセルずらして、内積を計算していきます。
また右に1ピクセルずらして、内積を計算していきます。
これを繰り返していき、一番右下のセルまで内積を計算すれば畳み込み演算は完了です。
畳み込みは何のためにするの?
畳み込みの処理自体は分かっても、結局何のためにやっているの?という疑問が残ると思います。
フィルターの内積を計算するということは、つまり
フィルターの形と似ている部分を探している
ということになります。
この例では、右上から右下への斜め線をフィルターとしていました。
畳み込みの結果の数字が大きくなっている部分がフィルタの形と似ているということになります。
丸印の画像の場合、左上と右下に斜め線があることをちゃんと検出できていることが分かります。
実際に画像解析をするときには、様々なフィルタで畳み込みをすることで検出したい特徴を持っているか判別しています。
ロボくん
画像に猫がいるか判断するDeep Learningのモデルでは、たくさんのフィルタを組み合わせて特徴(耳や鼻、髭などのパーツ)を学習しているんだよ。
参考文献
まとめ
畳み込み層(Convolutionレイヤ)とは、入力データに対して畳み込み演算を行う層です。
入力データにフィルターと似ている部分があるか調べるために行っています。
画像認識を行うための基本的な処理で、効果も高いのでしっかり理解しておきましょう。
コメント