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

知っておくべき 3 つの事柄

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

畳み込みニューラルネットワーク (CNN または ConvNet) は、ディープランニングで最も一般的なアルゴリズムです。ディープランニングは機械学習モデルの一種で、このモデルでは画像、動画、テキスト、音声から直接分類方法を学習します。

CNN が特に優れているのは、画像内のパターンを発見してオブジェクト、顔、場面を認識する機能です。パターンによる画像分類を使用して画像データから直接学習することで、手作業での特徴の抽出が不要になります。

自動運転車顔認識アプリケーションなどのオブジェクト認識およびコンピューター ビジョンを必要とする用途は、CNN に大きく依存しています。アプリケーションに応じて、CNN をゼロから構築したり、用意したデータセットに合わせて事前学習済みモデルを使用したりすることも可能です。

CNN の利用価値を高めている要因

3 つの重要な要因により、ディープランニングにおける CNN の利用はますます一般化しています。

  • CNN は、特徴を画像から直接学習するため、手作業により特徴を抽出する必要がない
  • CNN は最先端の認識結果を提供する
  • CNN は新しい認識タスクのために再学習できるため、既存ネットワークで構築が可能

ディープラーニングのワークフロー: 画像が CNN に渡されると、CNN は特徴を自動的に学習してオブジェクトを分類します。

CNN による最先端のオブジェクト検出とオブジェクト認識

CNN アーキテクチャは、画像認識とパターン検出用に最適化されています。GPU および並列計算の進歩とともに、CNN は自動運転および顔認識の分野における新しい発展のための基幹テクノロジーとなりました。

たとえば、ディープラーニング アプリケーションは、CNN を使用して数千件もの病理報告を確認し、視覚的にがん細胞を検出しています。また、CNN は自動運転車にも採用されており、オブジェクト検出や、道路標識と歩行者の違いを識別するための学習に活用されています。

関連情報

CNN の仕組み

畳み込みニューラル ネットワークは、数十または数百のレイヤーから構成され、各レイヤーが 1 つの画像の異なる特徴の検出を学習します。学習画像ごとに、解像度が異なる複数のフィルターが適用され、各畳み込み画像の出力が次のレイヤーへの入力として使用されます。フィルターは明るさやエッジなどのごく単純な特徴の検出から開始し、オブジェクトを一意に定義する特徴へと複雑さのレベルを上げていきます。

CNN は画像、文字、音声、動画の特徴を識別して分類します。

特徴学習、層、分類

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

各層はデータに固有な特徴を学習する目的で、データを改変する処理を実行します。最も一般的な層は、畳み込み層、活性化 (ReLU) 層、プーリング層の 3 つです。

  • 畳み込み層は、入力画像を複数の畳み込みフィルターに通します。それぞれのフィルターが画像の持っている特定の特徴に対して活性化します。
  • 正規化線形ユニット (ReLU) 層は、負の値をゼロにマッピングして正の値を保持することで、より高速かつ効率的な学習を実現します。この処理は、活性化された特徴のみが次の層へ送られるため、活性化とも呼ばれます。
  • プーリング層は、非線形のダウンサンプリングを実行して出力を単純化し、同時にネットワークの学習に必要なパラメーター数も削減します。

これらの処理は数十層または数百層にわたって繰り返され、それぞれの層が異なる特徴を識別するように学習が行われます。

数多くの畳み込み層を含むネットワークの例。解像度が異なる学習画像ごとにフィルターが適用され、各畳み込み画像の出力が次のレイヤーへの入力として使用されます。

分類のための層

多くの層で特徴を学習した後、CNN アーキテクチャは分類タスクにシフトします。

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

CNN アーキテクチャの最終層では、ソフトマックスなどの分類層を使用して分類結果を出力します。

GPU を使用したハードウェア高速化

畳み込みニューラル ネットワークでは、数百、数千、あるいは数百万もの画像データを使用して学習を施します。大量のデータを複雑なネットワーク アーキテクチャで処理する場合、GPU はモデルの学習処理時間を大幅に短縮します。学習済みの CNN は、先進運転支援システム (ADAS) での歩行者検出などのリアルタイム アプリケーションで使用できます。

MATLAB を CNN で使用する

MATLAB®Neural Network Toolbox™ で使用すると、独自の CNN をゼロから学習したり、事前学習済みのモデルを使用して転移学習を実行したりすることができます。

選択する方法は、使用可能なリソースと構築するアプリケーションの種類に応じて異なります。

ネットワークをゼロから学習させる場合、レイヤーとフィルター、その他の調整可能なパラメーターの数を定義する必要があります。正確なモデルをゼロから学習させる場合も、膨大な量のデータ (数百万件ものサンプル) が必要で、その準備には莫大な時間がかかります。

CNN をゼロから学習させる代わりに、事前学習済みモデルで新しいデータセットから特徴を自動抽出する方法もよく使用されます。この方法は転移学習と呼ばれ、ディープラーニングを簡単に適用でき、膨大なデータセットや長時間の計算と学習も必要ありません。

ゼロからの学習

ゼロからネットワークを構築する場合、ネットワーク構成を自分で決定する必要があります。この方法では、ネットワークのほとんどを自分で制御し、優れた結果を出すことができる一方、ニューラル ネットワークの構造や、レイヤーの種類と構成に関する数々のオプションについて把握する必要があります。

転移学習を上回る結果を得られることもありますが (下記参照)、新しいネットワークは、特徴のバリエーションを理解するためにオブジェクト サンプルが多く必要であるため、この方法では学習に必要な画像の数が多くなる傾向にあります。学習期間も長くなりやすく、ネットワーク層の組み合わせが多いため、ネットワークをゼロから構成するのは困難な場合もあります。通常、ネットワークを構築してレイヤーを整理するとき、他のネットワーク構成を参考にすると、実際に成功した事例を活用できます。

関連情報

転移学習における事前学習済みモデルの使用

通常、転移学習を使用して事前学習済みネットワークを微調整する方法は、ゼロから学習させる方法よりも迅速で簡単に使用できます。必要なデータとコンピューター リソースの量は最小限に抑えられます。転移学習は、ある種類の問題からの知識を利用して類似の問題を解決します。事前学習済みネットワークから開始して、新しいタスクを学習します。転移学習の利点の 1 つは、事前学習済みネットワークは数多くの特徴を学習済みであることです。学習済みの特徴は、他の類似問題に幅広く応用できます。たとえば、数百万の画像を使用して学習済みのネットワークを利用すると、わずか数百の画像を使用して新しいオブジェクト分類用に保持できます。

Neural Network Toolbox を使用すると、事前学習済み CNN モデル (GoogLeNet、AlexNetvgg16vgg19 など) および Caffe と TensorFlow-Keras のモデルを使用して転移学習を実行できます。

関連情報

CNN を使用するアプリケーション

オブジェクト検出

オブジェクト検出は画像や動画内のオブジェクトを特定して分類するプロセスです。Computer Vision System Toolbox™ には、R-CNN (regions with CNN)、Fast R-CNN、および Faster R-CNN を使用してディープラーニング ベースのオブジェクト検出器を作成するための学習フレームワークが用意されています。

Statistics and Machine Learning Toolbox™ の機械学習手法と Computer Vision System Toolbox を併用して、オブジェクト認識システムを構築できます。

Neural Network Toolbox には、学習済みの CNN モデルを使用して予測を行うだけでなく、CNN の作成および学習を行うための機能が含まれています。

この例では、ディープラーニングと R-CNN (Regions with Convolutional Neural Networks) を使用して、物体検出器を学習させる方法を説明します。
この例では、Faster R-CNN (Regions with Convolutional Neural Networks) と呼ばれるディープラーニングの手法を使用して、物体検出器を学習させる方法を説明します。

CNN の詳細を知る方法

画像解析に CNN を使用する製品には、MATLAB®Computer Vision System Toolbox™Statistics and Machine Learning Toolbox™Neural Network Toolbox™ などがあります。

畳み込みニューラル ネットワークの利用には Neural Network Toolbox が必要です。学習と予測は Compute Capability 3.0 以上の CUDA® 対応 GPU でサポートされます。GPU の使用が推奨されるほか、Parallel Computing Toolbox™ が必要となります。

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

無料評価版を入手する

30 日間の無料評価版はこちら

質問はありますか。

ディープラーニングのエキスパートにご質問ください。