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

ブログ    

推薦する

マイクロソフトの動画編集ツールClipchampには、AI自動作成やAIテキスト読み上げなどの新機能が搭載されている。

IT Homeは12月12日、マイクロソフトが2021年にウェブベースの使いやすいビデオ編集ツール...

...

現代ロボットの父:スーパーAIは単なる空想

編集者注: この記事は、MIT Technology Review の副編集長兼編集長であり、AP ...

APIセキュリティへのAIの適用

最近では、セキュリティ業界のほぼあらゆるところで人工知能 (AI) の話題が取り上げられています。確...

...

高度な数学に希望があります!ニューラルネットワークは1秒未満で偏微分方程式を解く

タスクの数が増えるにつれて、現在の計算方法を使用して汎用の日常的なロボットを構築するコストは法外なも...

人工知能専攻では主に何を学ぶのですか?キャリアの方向性と展望は何ですか?

人工知能専攻は、工学専攻の下にある電子情報専攻に属します。ここでは、人工知能専攻を提供している大学と...

人工知能が普及すると、家事労働者はロボットに置き換えられるのでしょうか?

リチャード・マーティンの家族は執事としてロボットを購入しました。そのロボットはアンドリューと名付けら...

複数の機械学習モデルインスタンスを素早く比較する

導入機械学習プロジェクトに取り組むとき、すべてのデータ サイエンティストが直面しなければならない質問...

会話型AIが発展途上国の経済をどう変えるか

テクノロジーは商品の売買方法を変えました。電子商取引の発展により、トレーダーは世界中のほぼどこでも、...

エンタープライズ チャットボットは超パーソナライズされたエクスペリエンスを提供できますか?

エンタープライズ チャットボットは脳死状態です。彼らには認知力も深みもなく、リアルタイムの概念や状況...

「MLOps」の考え方を取り入れるためのベストプラクティス

AI プロジェクトを構想から実装に移行することは悪循環ですが、解決策は 1 つしかありません。悪循環...

ネイチャー、サイエンス、セルが参加し、80の学術機関がCOVID-19研究を無料で提供する

[[314283]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

伝染病警報!人工知能は何をするのでしょうか?

中国で新型コロナウイルスの感染が初めて確認されたのは2019年12月19日。感染源については、これま...