【ディープラーニング】CNNとは何か – 畳み込みニューラルネットワークを徹底解説

AI/データサイエンス

CNN(Convolutional Neural Network)、日本語で畳み込みニューラルネットワークは、ディープラーニングの技術の一種で、特に画像処理分野での応用が広く知られています。

我々の生活環境において、知らず知らずのうちにCNNの画像処理技術は広く実装されています。スマホの顔認識、手書き文字の認識、医療画像診断での病変検出、自動運転の物体検知など、枚挙に暇がありません。

今回は過去の記事で解説してきたCNNの一部分に関する詳細記事を使い、CNNの全体像を解説します。

スポンサーリンク

画像処理タスクとは何か

そもそも画像処理タスクとは、コンピュータを使って写真やビデオなどのデジタル画像に様々な操作を行い、それらをより使いやすく、理解しやすくする技術です。具体的には、デジタル画像の中から重要な情報を取り出したり、画像を鮮明にしたり、色を調整するなど、画像を改善・変換する一連のプロセスを指します。例えば、暗い写真を明るくしたり、ぼやけた画像をはっきりさせたりすることがこれに含まれます。これにより、画像は視覚的に理解しやすくなり、さまざまな用途で有効に活用できるようになります。

これでは想像が付きにくいと思うので、以下に画像処理タスクの例を挙げてみます。

画像の強化

コントラストの調整、ノイズの除去、画像のシャープ化などが含まれます。これにより、画像の視覚的品質が向上します。

画像の復元

線画に色を付ける、などのタスクが考えられます。

画像分類

画像内のパターンを認識し、特定のカテゴリに分類します。

物体検出

画像内の特定の物体や顔を識別し、その位置を特定します。

セグメンテーション

画像を複数のセグメントに分割し、異なる物体や領域を個別に識別します。

スポンサーリンク

CNNが登場した背景

では上述の画像処理タスクにおいて、なぜCNNが使用されるようになったのでしょうか。以下ではCNNが登場した歴史的背景を紹介します。

CNNが一躍有名になったのは、国際的な画像処理コンペティションILSVRC2012です。ILSVRCについては以下を参照ください。

1990年代から2000年代初頭にかけて、画像認識の分野ではSVMのような伝統的な機械学習アルゴリズムが主流でした。SVMは特に分類問題において強力であり、限られたデータセットで高いパフォーマンスを発揮することができました。SVMについては以下の記事を参照ください。

しかし、SVMは画像の中から重要な情報(例えば、形や色、質感など)をピックアップするプロセス、つまり「特徴抽出」と呼ばれる部分で、多くの作業を人の手で行う必要がありました。これは事前に何を「重要な特徴」とするかを決め、その基準に基づいてコンピュータに教えるということであり、事前に教えていない特徴を認識することはできない、というイメージを持ってもらえると良いと思います。

実際、SVMをはじめとする従来の機械学習による精度改善には限界が見られるようになり、”行き詰まり”を感じる状況となっていました。

変化があったのは2012年、ILSVRCにおいて、SVMなどの従来の機械学習ではなくディープラーニングの一種であるCNNモデル”AlexNet”が登場しました。2012年にAlexNetが圧倒的に精度を改善して優勝して以降は、毎年CNNのモデルが優勝し、最終的には人間の認識能力を超えて、2017年に大会は終了しました。

画像処理にCNNが適している理由

ではなぜ、CNNは画像処理タスクに適しているのでしょうか。上述の通りディープラーニングの一種であるCNNを導入したことで画像処理の精度は大幅に改善しましたが、ディープラーニングであれば何でも画像処理に適しているわけではありません。そもそもディープラーニングとは何かについては以下の記事を参照ください。

なぜCNN(Convolutional Neural Network)が画像処理タスクに適してるのかというと、その名に含まれる畳み込み(Convolutution)が最も重要です。ではその畳み込みというのがどのような処理なのかは下記で説明しますが、畳み込みとの対比で、そもそも従来のディープラーニングで採用されている全結合というのがどのような処理なのかを理解する必要があります。全結合については以下を参照ください。

CNNとは何か

CNN(畳み込みニューラルネットワーク)とは何か、簡単に言うと、画像から特徴を抽出するために畳み込み層(Convolution layer)とプーリング層(Pooling layer)を交互に使用する深層学習アルゴリズムです。畳み込み層は画像の特徴を捉え、プーリング層は画像を縮小して処理を効率化します。

まず畳み込み(Convlution)という言葉は数学の分野において、ある関数を並行移動しながら別の関数に重ねて足し合わせることを言います。ディープラーニングにおいては以下のように、フィルターというものを用意して、元画像を平行移動しながらフィルターと掛け合わせて演算することを言います。詳細は以下の記事を参照ください。

続いてプーリングは、畳み込み処理で作成された特徴量マップの次元削減(Down sampling)を行う操作の一つです。特徴マップのうち、一定サイズのウィンドウ(2×2や3×3という単位の範囲)を見て、その中での最大値を抜き出したり(Max Pooling)、その中の値の平均値を取得したり(Average Pooling)します。詳細は以下を参照ください。

【畳み込み/CNN】プーリングとは何か
今回は畳み込みと並んでCNNの代表的な操作であるプーリングについて解説します。

なお、畳み込みについては特殊な種類の畳み込みも存在します。詳細は以下を参照ください。

コメント

タイトルとURLをコピーしました