参加者にとって、畳み込みと数式の理論的知識は入門書ですが、本当の初心者のシャオバイにとって、畳み込みの理論と導出を習得することは学習成果と見なすことができます (私は正しいです) 。始めましたが、始める方法。
目次
コンピュータ生成画像の原則:
RGB 原色 (赤、緑、青)
RGB は最も一般的に使用されるカラー モードです.RGB は赤、緑、青の 3 原色を表します.RGB はこのモードを採用し、各ピクセルは 3 バイト (1 バイトは 8 ビット) を占有し、R、G を表すために使用されます。 、色の B 成分 (255、255、255) は、加色モード 0 ~ 255 (白黒) に属します。
小さなファイル、豊かでフルカラーが特徴です。RGB モードは発光色モードで、ディスプレイの物理的な構造が RGB に準拠しているため、画面に表示される画像は一般的に RGB モードです。
コンピュータはピクセルを表示します
RGB は、コンピューターで生成された色の原理でもあります. 例として青色のピクセルを見てみましょう:
R:[ 0 ] G:[ 0 ] B:[ 255 ]
これら 3 つのマトリックスの重ね合わせは、青色のピクセルです。
これらをもう一度見てください:
- R:[ 0 ] G:[ 0 ] B:[ 155 ]
明るい青色のピクセル
- R:[ 0 ] G:[ 0 ] B:[ 55 ]
明るい青色のピクセル
- R:[ 255 ] G:[ 0 ] B:[ 255 ]
ピンクのピクセル
コンピュータディスプレイの複数のピクセル
上のマトリックスは 1 ピクセルですが、複数のピクセルはどうでしょうか。次のマトリックスを見てください。
[
[[0],[0],[0]],
[[0],[0],[0]],
[[0],[0],[0]],
]
彼が何から出てきたと思いますか?
これをもう一度推測してください:
[
[[1],[1],[1]],
[[1],[0],[1]],
[[1],[1],[1]],
]
それぞれの画素がつながって、絵がですけど、その絵はほんの数画素で、何千万画素もあるカメラってどういうことですか?写真には数千万のピクセルがあります。
一緒に十字を描きましょう 条件は中心の色を濃くすることです どうしたらいいですか?
[
[[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[0.5],[0.5],[0.5],[0.5],[0],[0.5],[0.5],[0.5],[0.5],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]],
]
見てみましょう:
中心が0、その他の位置が1、薄いグレーが0.5、その他の色が追加されるので、マトリックスはコンピューター画像の土台であり、コンピューターに画像を学習させることは、実際にはこれらのマトリックスの法則を学習させることです。
最後に、画像と行列がどのように接続されているか知りたい人がいるはずです. コードはあなたのためのものです. ライブラリ関数を呼び出すだけです:
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
bb = np.array([
[[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[0.5],[0.5],[0.5],[0.5],[0],[0.5],[0.5],[0.5],[0.5],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[0.5],[1],[1],[1],[1],[1]],
[[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]],
])
plt.figure() #创建画布
plt.imshow(bb, cmap='gray') #将bb矩阵放上去
plt.show() #展示画布
畳み込みニューラル ネットワーク
さて、おなじみの行列を使用して、畳み込みが何をしているかを見てみましょう. 今回の畳み込みの旅は、次のステップに大まかに分けられます:
畳み込みとは
ボリュームとプロダクトという言葉は、現在はスライド→重ね合わせと考えることができます。
もう少し深く:
1. 「ローリング」(スライド) の目的は、実際には、「ローリング」の際の参照として使用されるものを指定する制約を課すことです。特定の位置の前後の「積」と、その位置を中心とした累積過程を指定します。
2. 「製品」のプロセスから、得られる重ね合わせ値はグローバルな概念であることがわかります。畳み込みの結果は、現時点で入力された値に関連するだけでなく、過去のすべての入力の影響の累積を考慮して、過去のすべての瞬間に入力された値にも関連しています。
画像処理では、畳み込み処理の結果は、実際には各ピクセルの周囲のピクセル、または画像全体のピクセルを考慮し、現在のピクセルに対して何らかの重み付け処理を実行することです。したがって、「製品」はグローバルな概念であり、一種の「ミックス」です。
では、どのようにスライドさせ、どのように重ね合わせるのですか?
畳み込みは何をしているのか
私たちがよく知っているマトリックスを見てください:
畳み込みが行っていることは、畳み込みカーネル(実際には、別の小さな行列です。この行列の各値を 1 にします) を使用して連続的にスライドさせ、クロス グラフィック行列のすべての位置にスライドさせ、それらの値を配置することです。追加しました。
この畳み込みカーネルを使用して畳み込みを行います。
畳み込みカーネルは、カバーされたペアの位置番号で乗算され、次にすべてが加算され、最後に毎回数値が得られます。
初め:
0 を取得、2 回目:
まだ0です。
はい、後ろに出てきます 3:
畳み込みカーネルがカバーする位置がこの場合、すべて 3 です。
ロジックはとても単純で、人間が計算できるようです. これはコンピューターの助けを必要としないようです. しかし、これは単純な白黒の絵であり、十字形であり、100ピクセル以上しかありません. 、実際の画像は3色で構成されていますが、数百万のピクセルから始まる複雑な織り交ぜられたパターン。. .
畳み込みネットワークとは
したがって、1回の畳み込みでは明らかに不十分であり、1回の畳み込み後に生成されたすべての数値が新しい行列に形成され、畳み込み操作が継続されます.これは、複数の畳み込み層とその他の補助的なニューラルネットワーク層で構成されています.ネットワークです.
畳み込みネットワークは何をしているのか
率直に言えば、畳み込みネットワークは、行列を処理するための複数のステップの繰り返し重ね合わせです. 最終的な分析では、畳み込みニューラルネットワークは一種のツールであり、独自の科学技術ではありません.
1.音声などのファイルを画像に変換できます。また、他の分野の一部のものも画像の形で表現して、視覚情報を伝えることができます。
2.テキスト処理、ビデオ処理など、さまざまなことを非常にうまく処理できます。
どうしても気になる方は個別にご連絡ください。また、議論して修正するメッセージを残すことも歓迎します。楽しみにしています〜