VGG畳み込みニューラルネットワークモデル分析

VGG畳み込みニューラルネットワークモデル分析

1: VGGの紹介とモデル構造

VGGはVisual Geometry Groupの略で、オックスフォード大学理工学部に所属しています。VGGを皮切りに、顔認識や画像分類などに応用できる畳み込みネットワークモデルをVGG16からVGG19までシリーズ化してリリースしています。 VGG が畳み込みネットワークの深さを研究した当初の目的は、畳み込みネットワークの深さが大規模な画像分類と認識の精度と正確性にどのように影響するかを解明することでした。当初、VGG-16 は非常に深い畳み込みネットワーク (GG-Very-Deep-16 CNN) として知られていました。ネットワーク層の数を深くする一方で、パラメータが多すぎることを避けるために、VGG はすべての層で小さな 3x3 畳み込みカーネルを使用し、畳み込み層のステップ サイズを 1 に設定しました。 VGG の入力は、サイズが 224x244 の RGB 画像に設定されます。トレーニング セット内のすべての画像の RGB 平均が計算され、その後、画像は 3x3 または 1x1 フィルターを使用して VGG 畳み込みネットワークへの入力として渡され、畳み込みステップ サイズは 1 に固定されます。 VGG には 3 つの完全接続層があります。畳み込み層 + 完全接続層の総数に応じて、VGG11 から VGG19 まであります。最小の VGG11 には 8 つの畳み込み層と 3 つの完全接続層があり、最大の VGG19 には 16 の畳み込み層 + 3 つの完全接続層があります。また、VGG ネットワークは各畳み込み層の後にプーリング層を追従せず、合計 5 つのプーリング層が、異なる畳み込み層の下に分散されています。次の図は、VGG11 ~ VGG19 の構造図です。

ネットワーク全体の簡略化された構造を考慮すると、上記の構造では ReLU 活性化関数は示されていません。上記の構造についての説明:

  • Convは畳み込み層を表す
  • FCは完全接続層を表す
  • conv3は畳み込み層が3x3のフィルタを使用することを意味する
  • conv3-64は深さ64を意味します
  • maxpool は *** プーリングを意味します

上記VGG11〜VGG19のパラメータの総数は、以下の通りです。

実際の処理では、最初の完全接続層を 7x7 畳み込みネットワークに変更し、次の 2 つの完全接続層を 1x1 畳み込みネットワークに変更することができます。VGG 全体が完全畳み込みネットワーク FCN になります。 VGG ネットワーク以前は、畳み込みニューラル ネットワーク (CNN) が 10 層を超えることはほとんどありませんでした。VGG は CNN ネットワークの深度を深めることに最初に貢献しましたが、VGG にも独自の制限があります。ネットワークを継続的に深化させることはできません。ネットワークを一定の層数まで深化させると、トレーニング効果のフェードアウト、勾配消失、勾配爆発などの問題が発生します。一般に、VGG は最初に提案されたときも非常に人気があり、ImageNet コンペティション データセットで良好な結果を達成しました。

その他の同様のデータも良好なパフォーマンスを示します。

2: 事前学習済みモデルの使用(Caffe)

VGG 自体は、誰でも自由に使用できる事前トレーニング済みモデルを提供しています。事前トレーニング済みの VGG-16 および VGG-19 モデルのダウンロード アドレスは、次の場所にあります。

http://www.robots.ox.ac.uk/~vgg/research/very_deep/

VGG-16 モデルをダウンロードしたら、OpenCV DNN モジュール API を使用して、1,000 の画像分類をサポートし、ImageNet 2014-ILSVRC データセットでトレーニングされた画像分類器を実装できます。元の画像:

VGG-16予測分類結果:

少し恥ずかしいことに、OpenCL の初期化に十分なメモリがありません。私のマシンの性能が十分でないとしか言​​えません。

ネットワークの読み込みと画像分類を示す OpenCV プログラム コードは次のとおりです。

  1. ネット net = readNetFromCaffe(model_txt_file, model_bin_file);
  2. ネットが空の場合(){
  3. printf( "Caffe モデル データの読み取りに失敗しました...\n" );
  4. -1 を返します
  5. }
  6. Mat inputBlob = blobFromImage(src, 1.0,サイズ(w, h), スカラー (104, 117, 123));
  7. マット問題;
  8. ( int i = 0; i < 10; i++) {
  9. net.setInput(inputBlob, "データ" );
  10. prob = net.forward ( "prob" );
  11. }
  12. マットprobMat = prob.reshape(1, 1);
  13. ポイントクラス番号;
  14. ダブルクラスProb;
  15. minMaxLoc(probMat, NULL , &classProb, NULL , &classNumber);
  16. int classidx = クラス番号.x;
  17. printf( "\n 現在の画像分類: %s、可能性: %.2f" 、ラベル。at ( classidx).c_str()、classProb);
  18.  
  19. putText(src, labels.at (classidx), ポイント(20, 20), FONT_HERSHEY_SIMPLEX, 1.0, スカラー(0, 0, 255), 2, 8);
  20. imshow( "画像分類" , src);

OpenCV ディープラーニングのビデオ チュートリアルを学ぶには、以下をクリックしてください。

OpenCV ディープラーニング モジュール - 「OpenCV ディープ ニューラル ネットワーク チュートリアル」

<<:  誰も教えてくれないAI大規模導入の効率的なプロセス!

>>:  AISpeechは多角的な視点からAIエコロジカルバリアを構築し、AIチップはラストマイルを切り開く

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

機械学習エンジニアが知っておくべきアルゴリズムトップ10

機械学習/人工知能のサブフィールドがここ数年で人気が高まってきたことは間違いありません。ビッグデータ...

...

左に狂気、右に合理性、真ん中にアルゴリズム

著者: Qianshan校正:ウー・ムーテクノロジーの進歩により、AIは大きな発展の可能性を示してい...

...

Uberの自動運転車による死亡事故の捜査に新たな進展:横断歩道の外を歩く歩行者を識別できない

最近、国家運輸安全委員会(NTSB)は、Uberの自動運転車による死亡事故に関する調査の新たな進展を...

ディープラーニングを専門家以外の人に説明するにはどうすればよいでしょうか?

昨年から、AIの普及に関わる仕事がたくさん必要になりました。私は長い間、ディープラーニングがなぜ特に...

待望のWeb顔認識ログインのフルバージョンが登場しました。気に入っています

[[436944]]この記事はWeChatの公開アカウント「Programmer Insider T...

ネットワークセキュリティにおける人工知能の4つの主要な応用シナリオ

セキュリティにおける人工知能の応用は、人々に 4 つの独自のセキュリティ上の利点をもたらします。この...

深層畳み込みネットワークに基づく自動運転のためのマルチモーダル軌道予測の簡単な分析

道路上で安全かつ効率的に運行するためには、自動運転車は人間の運転手と同じように周囲の交通参加者の行動...

...

マイクロソフト、AI モデルのリスクを発見するツール「PyRIT」を発表

ハッキング技術を使ってサイバーセキュリティの問題を明らかにする任務を負ったマイクロソフトのチームは、...

WOT2018 孫林:連佳は人工知能技術の応用の原理と技術を探る

[51CTO.com からのオリジナル記事] 7 年間の努力と見事な変貌。 2012年以降、6年連続...

滴滴出行とスタンフォード人工知能研究所が協力

滴滴出行は5月5日、スタンフォード人工知能研究所との提携を発表した。両者は人工知能のホットな話題につ...

マイクロソフト、Windows 10を開発者向けAIプラットフォームに

人工知能の人気が高まるにつれ、あらゆるテクノロジーメーカーが自社の製品やサービスに人工知能というラベ...