CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
ディープラーニングの仕組みが確立したことにより、画像認識分野も大きく発展しました。画像認識で使用されるニューラルネットワークを、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)と呼びます。
私たちが撮影した写真が、顔認識されてグルーピングされたり、写っている内容に応じて自動タグ付けされたり、写りこんだ文字をテキストとして認識したり...こういった経験、ありますよね。これらはCNNと、その応用の技術により成り立っているのです。
CNNでは画像処理のために、畳み込み層とプーリング層を採用しています。
畳み込み層は、画像の特徴を抽出する役割があります。
例えば手書きの「2」という文字を数字の「2」として認識させる場合、何が課題になるでしょうか。同じ「2」でも書き文字であれば完全に一致する事はまずありませんし、似た様な「7」とも分けて識別しなければいけません。
そこで、「2」を検出できるようなフィルタを使い、畳み込みを行います。
例えば「右上から左下へ向かう線」を検出するためのフィルタAを使いました。このフィルタAと画像を重ねながら、同じような配列がある箇所を検出します。詳しい計算方法は割愛しますが、「2」の特徴ともいえる「右上から左下へ向かう線」が画像中央株にあることを検出しました。しかし「7」にも似た様な特徴があるため、こちらも同じく検出されてしまっています。
そこで次は、「横一直線」を検出するためのフィルタBを使います。このフィルタBにより、画像1,2,3では下部に強い直線があることが検出され、「7」の画像ではそれが認められませんでした。
このように、1つの画像にいくつものフィルタを通しながら描かれている情報を識別していくのです。このフィルタはCNNのモデル構築時の学習で、自動で生成されます。「どんなフィルタを適用すれば、正しく識別できるのか」を学習で自動的に求められるのです。スゴイですよね!
プーリング層では画像の領域ごとに最大値や平均値を取り、画像の位置ずれを気にしなくていいようにしています。
例えばとあるフィルタを通して畳み込んだ後の画像Xと画像Yがあったとします。オレンジで塗られている場所が、異なる数値を持っています。詳しい計算方法は割愛しますが、ここで最大値プーリングを適用すると結果がほぼ等しくなります。
このようにして、異なる画像であっても「同じものを表すときは、ほとんど同じ結果となる」ようにしているのです。
先ほどの「2」の画像も同様に、最大値や平均値のプーリングを行うことで、結果として同じような特徴を持った出力を出すことができるため、すべて「2」と判定することができます。
全3回の本コラム、いかがでしたでしょうか。
コラム内では紹介しきれなかった細かな技術紹介、まだまだあります。
興味を持たれた方は、是非CTCTオリジナルコース「ゼロから始めるAI/機械学習/ディープラーニング」をご受講ください!
楽しくて奥深い、ディープラーニングの世界を一緒に学習していきましょう!!
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes