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チップはラストマイルを切り開く

ブログ    

推薦する

Tech Neo 11月号: コンテナプラットフォーム管理の実践

51CTO.com+プラットフォームは、オリジナルの技術コンテンツの選択と絶妙なレイアウトを通じて、...

...

Googleが検索エンジンアルゴリズムを調整:HTTPSサイトのランキングが上昇

[[117728]] Googleは公式ブログで、検索エンジンのアルゴリズムを調整し、HTTPS暗号...

世界的EDA大手のシノプシスは米国から情報漏洩の疑いで捜査を受けており、ファーウェイとSMICもその渦中に巻き込まれている。

再度調査中! 世界最大の半導体設計ソフトウェア(EDA)サプライヤーであるシノプシスは、中国に重要な...

住宅建設はよりスマートになる

スマートホーム革命はここしばらく本格的に始まっています。住宅所有者はデータと IoT テクノロジーを...

...

Alibaba の軽量オープンソース Web サーバー Tengine 負荷分散アルゴリズム

序文Alibaba レイヤー 7 トラフィック エントリ アクセス レイヤー (アプリケーション ゲ...

AIの技術的負債の解消は急務

この流行は世界市場に衝撃をもたらしたが、人工知能(AI)企業への資本投資は増加し続けている。 CB ...

デジタルヒューマンとは何か、そしてその将来性はどのようなものでしょうか?

今日の技術的に進歩した世界では、生きているようなデジタルヒューマンが大きな関心を集める新たな分野とな...

初のAI絵画がオークションで予想を大きく上回る43万2000ドルで落札

英国放送協会が10月25日に報じたところによると、人工知能によって制作された芸術作品がオークションで...

快手AIハッカソンは「AIの名の下に」みんなの幸福を向上させるために終了しました

最近、快手の内部インキュベーターである快手幸福実験室が主催した第2回ハッカソン「AIの名において」の...

...

Keras 対 PyTorch: どちらが「ナンバーワン」のディープラーニング フレームワークでしょうか?

「最初のディープラーニングフレームワークをどのように選択するか」は、初心者にとって常に頭痛の種でし...

...