Very Deep Convolution Networks for Large-scale Image Recognition - VGG , 2014

5437 ワード

https://arxiv.org/abs/1409.1556v6

1. Introducion

  • CNNはコンピュータの視覚的に良い成果を収め、多くの研究がこれを改善しようとしている.
  • 本論文では,DepthというConvNetアーキテクチャを紹介する.
  • その他のパラメータ固定、3×3フィルタボリュームを重ね、深さを徐々に増加させる.
  • 2. ConvNet Configurations

  • は、純粋に深さの改善を測定するために、すべての積層層が同じ原理を採用している.
  • 2.1 Architecture

  • Inputイメージ224×224は、RBGの平均数を減算する.
  • Filterは3×3です.これはフィーチャーを抽出できる最小サイズです.
  • padding=1
  • 層以降のフォーマットに適応
  • Maxpoolingを5回、2回使用×2 size,street=2.
  • 進化層の後、3つの全接続層が現れる.
    ( 4,096 - 4,096 - 1,000 )
  • 最後はsoftmaxです.
  • すべての層にReluが使用されています.
  • AlexNetのローカルレスポンスの正常化は、メモリと計算時間を増やすことで解消されます.
  • 2.2 Configurations

  • 本論文のConvNetは以下のとおりである.
  • Boldは、横に行くほど上に行くことを示しています.
  • A−Eはいずれも2.1の内容に従っているが,深さは異なる.
  • -XXはフィルタの個数、すなわち出力チャネルの個数であり、Reluは省略する.
  • 深さですが、小さなフィルタなのでパラメータは多くありません.
  • 2.3 Discussion

  • 2 2012-2013のILSVVRCで活躍したCNN,11×street=4または7 11 filter用×7フィルター上straft=2,本論文のCNNは3×3番目のフィルタstraft=1.
  • は、1つのボリュームの代わりに、いくつかのボリューム(ペア)を連続的に加え、maxpoolingで重畳し、従来の方法とは異なる.
    大きなfilterを使用するよりも、これは何のメリットがありますか?
  • Convolutionの後にReluが加わったためNon-Linearが追加された.
    簡単に言えば、複数の線形関数だけを重ね合わせると、1つの関数と区別がなく、Deepの意味が消えてしまいます.
    すなわちCNNにおけるDeep学習のDeepは,各層を重ねて異なる特徴図を形成し,中間に非線形関数を加えて異なる層に分離する役割を果たすことを意味する.
  • もう1つの利点は、パラメータの数を減らす
  • です.
    Cはチャンネルの個数です
    7×7が1の場合72 C 27^2 C^272 C 2,3×3つの時は33×C23^3×C^233×C 2です.
  • モデルCは1×1フィルターを使用しました.これは非線形性を増加させながら感受野に影響を及ぼさない.
  • GoogLeNetのvery deep ConvNetsと小さなボリュームフィルタ部分は同じですが、異なるのは、より複雑な第1層の計算量を減らすために、より多くの特徴マッピングを減少させます.
  • 3. Classification Framework

  • 分類ConvNetについて説明します.
  • 3.1 Training


  • mini batch = 256 , momentum =0.3 , weight decay = 0.005 , dropout = 0.5 ,
    learning rate=0.01からvalidation setの精度が停止すると徐々に10倍に減少し,3回減少し,74 epochを学習した.

  • 初期ウェイトは重要です.うまくいかないと、勉強が止まる可能性がありますから.この問題を解決するために(帰る)、ランダム設定も問題にならない万金の浅いA学習をして、次のステップに進みます.Deeperのアーキテクチャを学習する際に,訓練の浅い重みとして,最初の4桁の畳み込みと最後の3個の稠密な初期を用いた.
    ランダム初期化はN(0,0.01)に従う.
    オフセットの初期値は0です.

  • Inputイメージサイズ224×224です.これは、リスケール画像からランダムに切り出され、SGDは一度に1つの切り出し画像を反復して使用する.つまり増加します.
    さらに増やすために、左右反転RGBshiftを使用します.

  • SSS(training scale)を等方性再走査訓練画像の最短部分と呼ぶ.
    SSSは224を下回ってはならない.( input 224×224)
    SSS=224なら作物も同じです.
    SSS>>224であれば、刈り取った後は一部しか抽出できません.

  • SSSを選択する方法は2つあります.1つ目はfixです.
    本研究では,訓練時は256に固定し,学習後384では256予備訓練重みを用いて速度を向上させた.

  • 第2の方法はSSS範囲のランダムサンプリングを設定することである.
    256から512まで、この時最後はFCではなくFCNかもしれません.
    これは様々なサイズの画像を訓練するのに有利である.Augmentの効果があり、Scale-jitteringと呼ばれます.
    上記と同様に,384を初期としてプレトレーニング重みを用いて速度を向上させた.

  • isotropically-rescaled
    E.g) 512×256枚の1024画像が1:2の小さなエッジ256を保持する×512に再販売されました.
  • それではこれは256で勉强して384でランダムに勉强し直したのですか???

    3.2 Testing


    (Validation setで検証するプロセスですよね?
    testという言葉を使いますが、validation setを使ってテストしていると思います)

  • 訓練と同様に,等方性−再スキャンを用いてQQと呼ぶ.QQ=SSSは不要です.

  • 考えてみろ.filterのサイズはinputによって変わりません.
    しかし、最後の平坦さで変えるなら、trianのinputとtestのinputの形式を同じにしなければならないのではないでしょうか.
    この問題を解決するには、次のタスクを追加します.


  • 3.3 Implementation Details


    4. Classification Experiments

  • dataset : ILSVRC-2012 ; image of 1,000 classes
  • import tensorflow as tf
    from tensorflow.keras.utils import plot_model
    
    model = tf.keras.applications.VGG16(
        include_top=True,
        weights="imagenet",
        input_tensor=None,
        input_shape=None,
        pooling=None,
        classes=1000,
        classifier_activation="softmax",
    )
    plot_model(model,show_shapes=True)
  • これは後続の整理ローカライズです