はじめに:
畳み込みニューラルネットワーク(CNNまたはConvNet)は、画像認識、画像分類、物体検出などを行うために主に使用される深いニューラルネットワークのクラスです。
ディープラーニングによるコンピュータビジョンの進歩は、主に一つの特定のアルゴリズム—畳み込みニューラルネットワークを介して、時間とともに構築され、完成されてきました。
Googleは写真検索に、Facebookは自動タグ付けアルゴリズムに、Amazonは製品の推奨に使用しており、リストは続いています…
CNNの助けを借りて、あなたは多くのクールなも82%の正確さ。ボーナス:
コード:
コード:
コード:
-> https://github.com/UPPERCASEGUY/CNN-implementation
また、CNNに関する概念にはほとんど助けを借りて、あなたのクールなモデルを作ることができます。 このブログはCNNsについてのあなたの概念の構築を開始し、あなたは行ってもいいです!
畳み込みニューラルネットワーク:
画像分類は、入力画像を取得し、画像を最もよく記述するクラスまたはクラスの確率を出力するタスクです。 CNNでは、画像を入力として取得し、画像内のさまざまな側面/特徴に重要性を割り当て、1つを別のものと区別できるようにします。 CNNで必要とされる前処理は、他の分類アルゴリズムと比較してはるかに少ない。
アーキテクチャ:
コンピュータは私たちがそうであるように物事を見ることができません。
CNNには、通常、畳み込み層、プーリング層、および完全接続層の三つの層があります。
畳み込み層の異なる層:
以前にあなたの人生で「畳み込み」という言葉に遭遇したことがあると確信していますが、ここでは意味は変わ はい! あなたは正しいです、この層はすべてお互いにオブジェクトを畳み込むことです。 畳み込み層は、CNNの中核となる構成要素です。 これは、ネットワークの計算負荷の主要部分を運びます。
畳み込みの主な目的は、入力からエッジ、色、コーナーなどのフィーチャを抽出することです。 私たちは、ネットワークの中に深く行くように、ネットワークは、同様に、形状、数字、顔の部分などのより複雑な機能を識別し始めます。
この層は、二つの行列間の内積を実行します。
画像がRGBの場合、フィルタの高さと幅は画像と比較して小さくなりますが、画像と同じ深さ(高さx幅x3)になります。
RGB画像の場合、畳み込み部分は次のように視覚化できます:
を持つMxnx3画像行列に対する畳み込み操作畳み込みプロセスの最後に、実際の画像よりもパラメータ(次元)が小さく、実際の画像よりも明確な特徴を持つ特徴行列があります。 だから、今、私たちは今から私たちの注目の行列で動作します。
プーリング層:
この層は、データを処理するために必要な計算能力を低下させるためだけのものです。 これは、注目された行列の次元をさらに小さくすることによって行われます。 この層では、制限された量の近傍から支配的な特徴を抽出しようとします。 例を取ってそれを明確にしましょう。
オレンジ色の行列は私たちの注目の行列であり、茶色の行列はプーリングカーネルであり、プーリングが完了した後に出力として青い行列を だから、ここで私たちがやっていることは、プーリング領域にあるすべての数の中で最大値を取り、行列の別の近傍を処理するために毎回プーリング領域をシフトすることです。
プーリング技術には、AVERAGE-poolingとMAX-poolingの二つのタイプがあります。
これら二つの違いは、AVERAGE-poolingでは、pooling regionのすべての値の平均を取り、MAX-poolingでは、pooling region内にあるすべての値の中で最大値を取るだけです。
だから、層をプールした後、我々は画像の主な特徴を含む行列を持っており、この行列は次のステップで多くのことを助けるより小さい次元を持ってい
Fully connected layer:
これまで、異なる画像の分類については何もしていませんでしたが、画像内のいくつかの特徴を強調表示し、画像の寸法を大幅に縮小しました。
の内部に完全に接続されたレイヤーここから、実際に分類プロセスを実行します。
入力画像をマルチレベル完全接続アーキテクチャに適した形式に変換したので、画像を一つの列ベクトルに平坦化します。 平坦化された出力はフィードフォワードニューラルネットワークに供給され、逆伝播は訓練のすべての反復に適用されます。 一連のエポックにわたって、モデルは画像内の支配的な特徴と特定の低レベルの特徴を区別し、それらを分類することができます。
まとめ:
- 入力イメージを畳み込みレイヤーに入力します。
- 注目のカーネル/フィルタで畳み込みを取る。
- 寸法を小さくするためにプーリング層を適用します。
- これらのレイヤーを複数回追加します。
- 出力を平坦化し、完全に接続された層に送ります。
- ここで、ロジスティック回帰を使用して逆伝播を使用してモデルを訓練します。
そして、あなたは畳み込みニューラルネットワークを作りました。