畳み込みニューラルネットワーク (Convolutional Neural Network)

畳み込みニューラルネットワーク (Convolutional Neural Network: CNNまたはConvNet) とは、データから直接学習することができるディープラーニングのためのネットワークアーキテクチャです。手動での特徴抽出は不要です。

畳み込みニューラルネットワークは、物体や顔、シーンを認識するために画像の中からパターンを見つけるのに特に有効です。また、音声、時系列、信号データなど、画像以外のデータを分類する際にも非常に有効な手法です。

自動運転車や顔認識アプリケーションなど、物体認識コンピュータビジョンを必要とするアプリケーションで、畳み込みニューラルネットワークは特によく使われています。

なぜ畳み込みニューラルネットワークが重要か

ディープラーニングに畳み込みニューラルネットワークを使うことが人気を集めるのには、3つの理由があります。

  • 畳み込みニューラルネットワークは、人手による特徴抽出を必要とせず、畳み込みニューラルネットワークが直接特徴を学習できる
  • 畳み込みニューラルネットワークは認識精度が高い。
  • 畳み込みニューラルネットワークは、新しい認識タスクのために再学習することができるため、既存のネットワークを利用することができる。
    畳み込みニューラルネットワークは、画像や時系列データの重要な特徴を明らかにし、学習するために最適なネットワークアーキテクチャを提供します。畳み込みニューラルネットワークは、以下のようなアプリケーションで重要な技術となっています。
  • 医用画像: 畳み込みニューラルネットワークは、何千もの病理報告書を調べて、画像中のがん細胞の有無を視覚的に検出することができます。
  • 音声処理: キーワード検出は、マイクを備えたあらゆる機器で使用でき、特定の単語やフレーズが話されたときに検出することができます (例えば「Hey Siri!」)。畳み込みニューラルネットワークは、環境に関わらず他のフレーズを無視して、キーワードを正確に学習・検出することができます。
  • 一時停止標識検出: 自動運転では、畳み込みニューラルネットワークを用いて標識などの存在を正確に検出し、その結果に基づいて判断を行います。
  • 合成データの生成: 敵対的生成ネットワーク (GAN) を用いて、顔認識や自動運転などのディープラーニングアプリケーションに使用する新しい画像を生成することができます。

さらに詳しく

畳み込みニューラルネットワークの仕組みとは

畳み込みニューラルネットワークは、数十から数百の層を持ち、それぞれが画像の様々な特徴を検出することを学習します。各学習画像には、異なる解像度のフィルターが適用され、各畳み込み画像の出力が次の層の入力として使用されます。フィルターは、明るさやエッジなどの非常に単純な特徴から始まり、物体を定義するユニークな特徴へと複雑化していきます。

特徴学習、層、分類

他のニューラルネットワークと同様に、畳み込みニューラルネットワークは入力層、出力層、そしてその間にある多くの隠れ層で構成されています。

wsm-reboot-cnn-super-disc-neural-network

これらの層は、データに特有の特徴を学習する目的で、データを変更する動きを行います。代表的な層の例としては、畳み込み層、活性化またはReLU、プーリング層の3つがあります。

  • 畳み込み層では、入力画像を一連の畳み込みフィルターに通すことで、それぞれのフィルターが画像の特定の特徴を活性化します。
  • 正規化線形ユニット (ReLU) は、負の値をゼロにマッピングし、正の値を維持することで、より速く、より効果的な学習を可能にします。活性化された特徴だけが、次の層に引き継がれることから、これは活性化と呼ばれることもあります。プーリング層は、非線形ダウンサンプリングを行うことで出力を単純化し、ネットワークが学習する必要のあるパラメータの数を減らします。

これらの作業が数十から数百の層で繰り返し行われ、層ごとに異なる特徴を識別するように学習していきます。

多数の畳み込み層を持つネットワークの例。それぞれの学習画像に異なる解像度でフィルターを適用し、各畳み込み画像の出力を次の層の入力としています。

多数の畳み込み層を持つネットワークの例。それぞれの学習画像に異なる解像度でフィルターを適用し、各畳み込み画像の出力を次の層の入力としています。

重みとバイアスの共有

従来のニューラルネットワークと同様に、畳み込みニューラルネットワークには重みとバイアスを持つニューロンがあります。モデルは学習プロセス中にこれらの値を学習し、新しい学習例ごとに継続的に更新します。ただし、畳み込みニューラルネットワークの場合、重みとバイアスの値は、ある層のすべての隠れニューロンで同じです。

これは、すべての隠れニューロンが、エッジやブロブなどの同じ特徴を、画像の異なる領域で検出していることを意味します。これにより、ネットワークは画像内の物体の移動に耐性ができます。例えば、車を認識するように学習されたネットワークは、画像内のどこに車があっても認識することができます。

分類層

多くの層で特徴を学習した後、畳み込みニューラルネットワークのアーキテクチャは分類に移行します。

最後から2番目の層は、全結合層であり、K次元のベクトルを出力します (Kはネットワークが予測できるクラスの数)。このベクトルには、分類される画像の各クラスの確立が含まれています。

畳み込みニューラルネットワークアーキテクチャの最終層では、ソフトマックスなどの分類層を使って分類出力を行います。

MATLABを利用した畳み込みニューラルネットワークの設計および学習

MATLAB® と Deep Learning Toolbox™ を使用することで、畳み込みニューラルネットワークの設計、学習、展開が可能になります。

MATLABは、新しいデータセットから特徴を学習して識別する際に使用できる、ディープラーニングの事前学習済みモデルの多くのセットを提供しています。転移学習と呼ばれるこの方法は、学習をゼロから始めることなくディープラーニングを適用する便利な方法です。専門家によって構築された実証済みのアーキテクチャであるGoogLeNet、AlexNet、Inceptionなどのモデルを利用して、ディープラーニングを始めるためのよい出発点となります。

ネットワークの設計および学習

ディープネットワークデザイナーを使うことで、事前学習済みモデルのインポートしたり、ゼロから新しいモデルを作成したりすることができます。

ディープネットワークデザイナーは、ディープラーニングネットワークをインタラクティブに構築、視覚化、編集するためのアプリです。

ディープネットワークデザイナーは、ディープラーニングネットワークをインタラクティブに構築、視覚化、編集するためのアプリです。

また、アプリ内で直接ネットワークを学習させることができ、精度、損失、検証の指標をプロットして学習状況をモニタリングすることができます。

転移学習への事前学習済みモデルの利用

事前に学習したネットワークを転移学習で微調整することは、一般的にゼロから学習するようにもはるかに高速で簡単です。また、データや演算リソースの使用量も最小限で済みます。転移学習は、ある種の問題から得られた知識を、類似した問題の解決に利用します。事前に学習されたネットワークを用いて、新しい課題を学習します。転移学習のメリットは、事前学習済みのネットワークが豊富な特徴をすでに学習していることにあります。これらの特徴は、他の様々な類似したタスクに適用することができます。例えば、何百万枚もの画像を使って学習したネットワークを、数百枚の画像だけを使って新しい物体分類のために再学習することが可能です。Hardware Acceleration with GPUs

GPUによるハードウェアアクセラレーション

畳み込みニューラルネットワークは、数百、数千、あるいは数百万枚の画像を使って学習されます。大漁のデータや複雑なネットワークアーキテクチャを扱う場合、GPUはモデルの学習にかかる処理時間を大幅に短縮することができます。

ディープラーニングなどの計算量の多いタスクを高速化するNVIDIA GPU。

ディープラーニングなどの計算量の多いタスクを高速化するNVIDIA® GPU

さらに詳しく


畳み込みニューラルネットワークを使用したアプリケーション

物体検出

物体検出は、画像やビデオの中で物体の位置を特定し、分類するプロセスです。Computer Vision Toolbox™ は、YOLOやFaster R-CNNを用いたディープラーニングベースの物体検出器を作成するための学習フレームワークを提供します。

ディープラーニングを使用した物体検出

ディープラーニングを使用した物体検出

この例では、ディープラーニングとR-CNN (Regions with Convolutional Neural Networks) を使って物体検出器を学習する方法を示しています。

キーワード検出

音声からテキストへの変換の例としては、特定のキーワードやフレーズを認識して、それを指示として利用できるキーワード検出があります。一般的な例としては、デバイスの起動や照明の点灯などが挙げられます。

ディープラーニングを使用したキーワード検出

ディープラーニングを使用したキーワード検出

この例では、MATLABを使用して音声中の音声コマンドの存在を識別および検出する方法を説明しており、音声アシスト技術に使用することができます。

セマンティックセグメンテーション

畳み込みニューラルネットワークは、セマンティックセグメンテーションに使用され、画像の各ピクセルを対応するクラスラベルで識別します。セマンティックセグメンテーションは、自律走行、工業検査、地形の分類、医療画像などのアプリケーションに利用できます。畳み込みニューラルネットワークは、セマンティックセグメンテーションのネットワークを構築するための基礎となります。

Semantic Segmentation Using Deep Learning

ディープラーニングを使用したセマンティックセグメンテーション

この例では、MATLABを使ってセマンティックセグメンテーションのネットワークを構築し、画像の各ピクセルを対応するラベルで識別する方法を紹介します。

MATLABは、あらゆるディープラーニングのためのツールと機能を提供します。信号処理、コンピュータビジョン、通信・レーダーなどのワークフローを強化するために畳み込みニューラルネットワークをお使いいただけます。


畳み込みニューラルネットワークについてさらに詳しく

畳み込みニューラルネットワークを用いた画像解析をサポートする製品には、MATLABComputer Vision Toolbox™Statistics and Machine Learning Toolbox™Deep Learning Toolbox があります。

畳み込みニューラルネットワークを使用するには、Deep Learning Toolboxが必要となります。学習と予測は、計算能力3.0以上のCUDA® 対応GPUでサポートされます。GPUの使用が強く推奨されており、Parallel Computing Toolbox™が必要となります。

ビデオ

使用例および使い方

ソフトウェアリファレンス