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

ブログ    
ブログ    
ブログ    

推薦する

15分 = 1年!人工知能と材料科学が出会うとき...

最近、NPJ—Computational Materials誌に研究論文が掲載されました。この論文は...

ターゲット検出にはこの記事で十分です! 2019年版オブジェクト検出の総合ガイド

[[272485]]ビッグデータダイジェスト制作編纂者:張瑞怡、寧静コンピュータ ビジョンは、デジタ...

Julia言語を使用して「準同型暗号化+機械学習」を実装するには?

[[285696]]最近、「ブロックチェーン」や「フェデレーテッドラーニング」などの概念がかつてな...

機械学習に関する12の現実世界の真実

導入現実世界で働くときには、直面しなければならない事実がいくつかあります。この記事ではそれについて説...

...

...

NLP の学習を始める準備ができました。体系的に読むべき本やコースは何ですか?

私は、機械学習コミュニティで手動の特徴エンジニアリングが非常に人気があった 2013 年から自然言語...

ChatGPT がまたトラブルに巻き込まれました! OpenAI が初の AI 名誉毀損訴訟に直面!

51CTOウェブサイトコンテンツ調査に参加するにはクリックしてください著者: 徐潔成ChatGPT...

AI+不動産は10年後どうなるでしょうか?

[[274313]] [51CTO.com クイック翻訳] 周知のとおり、人工知能は継続的に発展し...

アリの採餌とインターネットアルゴリズム

[[93484]]人間とアリの違いは何でしょうか? Ant にはインターネットがありません。創造的な...

...

AI 計画ガイド: デジタル変革に不可欠なステップ

[[266832]]人工知能は今日のデジタル変革に欠かせない要素となり、デジタル変革の定義を完全に置...

AI愛好家が注目するべき8人のインスタグラマー

人工知能(AI)は現在、主要な技術進歩の一部となっています。そして、AI がますます強力かつ高度にな...

自動運転車のソフトウェアアップグレードに関する技術管理と規制戦略の分析

スマート車両ネットワーキング、インテリジェンス、アーキテクチャ技術の発展に伴い、自動車ではファームウ...