機能反転画像
github:https://github.com/Gary11111/02-Inversion
記事ディレクトリ
研究の背景
ONNX
多くの優れたビジュアルモデルはcaffeで記述され、多くの新しい研究論文はPytorchで記述されており、さらに多くのモデルがTFで記述されているため、それらをテストする場合、対応するフレームワーク環境が必要です。ONNX交換フォーマットの場合、同じ環境で異なるモデルをテストします。
VGGNET構造py実装
13の畳み込み層+ 3つの完全に接続された層
畳み込み層
- conv2d + bias
- バッチノルム正則化
- reluアクティベーション
def conv_layer(self, bottom, name, stride = 1):
with tf.variable_scope(name):
filt = self.get_conv_filter(name)
conv = tf.nn.conv2d(bottom, filt, [1, stride, stride, 1], padding='SAME')
conv_biases = self.get_bias(name)
bias = tf.nn.bias_add(conv, conv_biases)
mean = self.get_mean(name)
variance = self.get_variance(name)
offset = self.get_beta(name)
scale = self.get_gamma(name)
norm = tf.nn.batch_normalization(bias, mean, variance, offset, scale, 1e-20 )
relu = tf.nn.relu(norm)
return relu
HOG方向勾配ヒストグラム
HOG + SVMは歩行者検出の主な方法です
- 主なアイデア:画像では、ローカルターゲットの外観と形状は、勾配またはエッジ方向の密度分布でよく説明できます(勾配の統計情報は、主にエッジ部分に集中しています)。
- 具体的な実装方法:画像をセルユニットと呼ばれる小さな接続領域に分割し、セルユニット内の各ピクセルの勾配またはエッジ方向のヒストグラムを収集し、ヒストグラムを組み合わせて特徴記述子を形成します。
- 利点:
- HOGは画像のローカル単位で動作するため、画像の幾何学的変形と光学的変形に対して優れた不変性を維持でき、これら2つの変形はより大きな空間フィールドでのみ表示されます。
- 歩行者の問題が直立姿勢を維持できる限り、粗い空間の抽象化、細かい方向のサンプリング、および強力な局所光学正規化の条件下で、いくつかの微妙な動きの影響を無視できます。
SIFTスケール不変特徴変換
これは、画像内の局所的な特徴を検出および説明するために使用され、空間スケールで極値を探し、その位置、スケール、および回転不変量を抽出します。
アプリケーション:オブジェクト認識、ロボットマップの認識とナビゲーション、画像追跡、ジェスチャー認識など。
ローカル画像機能は、オブジェクトの識別に役立ちます。
- SIFT機能は、オブジェクトの一部の局所的な外観機能に基づいており、画像のサイズや回転とは何の関係もありません。光、ノイズ、わずかな視野角の変化に対する許容範囲ページは非常に高くなります。この特徴に基づいて、それは非常に目立ち、簡単にキャプチャできます巨大な特徴データベースでは、オブジェクトを識別し、めったにそれらを誤認することはほとんどありません。
- SIFTを使用して部分オブジェクトオクルージョンの特徴を説明する検出率は非常に高く、位置と方向を計算するために必要なSIFTオブジェクトの特徴は4つ以上です。認識速度はリアルタイム計算に近い場合があります。
宿題のアイデア
VGGNET16の準備ができています(パラメーターがトレーニングされています)。
- 元の画像を使用してVGG16計算グラフを作成します—下
- ノイズを使用してVGG16計算グラフを作成する
- 計算グラフの特定のレイヤー(conv3_1など)を指定します。目的は、ニューラルネットワークのこのレイヤーで学習した内容を確認することです。
- ボトムは構築中に一度だけ初期化され、ノイズ学習のターゲットとして更新されません。ユークリッド距離を使用してエラーを計算します[損失関数]
- ADAMをオプティマイザーとして使用して、損失関数を最適化します。
TFオプティマイザーの組み込みメソッドを記録する
val_listの各アイテムの損失の偏微分を計算するために使用されます
変数を、compute_gradientsによって入力パラメーターとして返された値で更新します。
これらの2つの関数は、最小化()メソッドと同等であり、分解のための勾配補正を備えています。
正則化方法:TV完全変分モデル
使用法はL1、L2正則化法と同様であり、目的関数の最後に正規項を追加します。
tf.image.total_variation
1つ以上の画像の変化の合計を計算して返します。変化の合計は、入力画像内の隣接するピクセルの絶対差の合成であり、画像内のノイズ量を測定するための重要な要素です。
残りのeラーニング
なぜ残留ネットワークを導入するのですか?
ディープラーニングのネットワークレイヤー数の増加には、一般的に次の問題が伴います。
- リソース消費の計算-GPUクラスターで解決できます
- 過剰適合-大量のデータを収集し、ドロップアウトに協力することで解決できます
- 勾配が消え、勾配が爆発する– BNで解決できる
モデルの深さを増やすことで利益を得ることができるようですが、ネットワークの深さが増加すると、モデルは低下しているように見えます。ネットワークレイヤーの数が増えると、トレーニングセットの損失が徐々に減少し、領域が飽和します。深さを増やすと、トレーニングセットの代わりに、損失が増加します。これは過剰適合ではありません。過剰適合によりトレーニングエラーが継続的に減少するためです。
ネットワークが劣化している場合、浅いネットワークは深いネットワークよりも良い結果を得ることができます。このとき、低レベルの機能を上位層に渡しても、その影響は浅いネットワークやvgg-100ネットワークよりも悪くなることはありません。第98層は第14層のvgg-16と同じ機能を使用するため、vgg100の効果はvgg16と同じになります。したがって、vgg100の98レイヤーとvgg16の14レイヤーの間に直接マッピングを追加して、この効果を実現できます。
情報理論:DPI(データ処理の不等式)が存在するため、順方向伝送のプロセスでは、レイヤーの数が増えると、フィーチャマップに含まれる画像情報がレイヤーごとに減少し、レイヤーl + 1を確保するためにresnetの直接マッピングが追加されますネットワークには、レイヤー1よりも多くの画像情報が含まれている必要があります。
残留ネットワーク
残留ブロック
残差ネットワークは一連の残差ブロックで構成され、曲線の右側の残差部分は通常2〜3回の畳み込み演算で構成されます。
畳み込みネットワークにおいて、x_l
およびx_l+1
特徴マップの異なる数は、必要1*1
寸法または次元削減畳み込みネットワークリットル。
残余ネットワークの原理
より深い層Lの場合、層Lとの関係は次のように表すことができます。
残余ネットワークの2つの属性が反映されます。
- レイヤーLは、それより浅い任意のレイヤーで表すことができます
- Lは各残差ブロックの単位累積和であり、MLPは特徴行列の累積です。
BP導出規則によれば、x_lに関する損失関数損失の勾配は次のように表すことができます。
- トレーニング全体を通じて、2番目の項が常に-1になるとは限らず、残りのネットワークが消えることはありません。
- 最初の項は、L層の勾配がそれより浅い任意の層に送信できることを示しています。
直接マッピングが最適なオプションです
(6)の最初の項に係数を追加できます 、導出後、 グラデーションは爆発します グラデーションが消えます
実験記録は以下の通り
学習効果がトレーニング効果に及ぼす影響
学習率が0.001から0.01に変化し、モデルの収束速度が速く、最終的な効果が異なることがわかります。学習率が高いほど、画像は実際の結果に近くなります。
異なる学習率での1000回の反復の実験的サンプリング画像効果:
Total-Variation正則化の影響
-
TVの正規化に参加する
tv_regular = tf.reduce_sum(tf.image.total_variation(noise_layer))
-
テレビの正則化の割合を増やす
-
fea/rep
比率の増加
ディープネットワークとシャローネットワークの比較
vgg16はconv3_1を使用して画像を取得します
conv1_1を使用してvgg16によって取得された画像
vgg16はconv3_1 + fc6を使用して画像を取得します
[外部チェーンイメージの転送に失敗しました。ソースサイトに盗難防止チェーンメカニズムがある可能性があります。イメージを保存して直接アップロードすることをお勧めします(img-CtwUye4B-1586339197527)(E:\ジュニアイヤー\ジュニアイヤー\ディープラーニング\割り当て\ MyWorkPlace \ 02-反転\プロジェクト\プロジェクトドキュメント\ img \ fc6conv3.PNG)]
異なるモデルでの特徴抽出
res2を使用してイメージを取得するresnet-18
middle1を使用して取得したresnet-18イメージ
コードの変更:モデルの読み込みとターゲットレイヤーの選択==>詳細を表示q4.diff
その他:自分の写真を使用して取得した画像
resNet-18 res2を使用した結果は次のとおりです。
紙の読書
ニューラルネットワークの解釈可能性の側面
外部画像転送...(img-NwO8OTyp-1586339197528)]
コードの変更:モデルの読み込みとターゲットレイヤーの選択==>詳細を表示q4.diff
その他:自分の写真を使用して取得した画像
resNet-18 res2を使用した結果は次のとおりです。
[外部リンク画像を転送しています...(img-8aBWMyGn-1586339197528)]
紙の読書
ニューラルネットワークの解釈可能性の側面