第14章.CNNを使ったコンピュータビジョン


1、CNNコンポーネント


1-1. Convolution Layer


にゅうりょくそうマスク層
  • 最初の隠蔽層は低レベル特性に集中する、次の隠蔽層はより大きな高レベル特性に集中する
  • .
  • フィルタ=合成二重コア(ウェイトセット)
  • 垂直特性を有するフィルタを
  • 入力に適用する、垂直フィルタをストリップピッチに応じて適用し、垂直フィルタを適用する特徴マッピング(特性マッピング)
  • を生成する.
  • 合成乗層が深いほど性能が高くなり、
  • 1-2. バッファ層

  • 入力画像サムネイルの第

  • 入力値(ウェイトX)を計算し、計算関数(
  • 最大プールおよびavgプールなど)を使用します.
    🖥 プール層実装
    # Max Pooling Layer using keras
    # kernel_size=2, valid padding(패딩 사용X)
    max_pool = keras.layers.MaxPool2D(pool_size=2)
    
    # Avg Pooling Layer using keras
    avg_pool = keras.layers.AvgPool2D(pool_size=2)
    
    # Max Pooling Layer using tf
    depth_pool = keras.layers.Lambda(
        lambda X: tf.nn.max_pool(X, ksize=(1,1,1,3),
                                 strides=(1,1,1,3),
                                 padding='valid'))
  • のデフォルトでは、最大プールのパフォーマンスが向上します.
  • (最大値でより明確な信号を送信でき、計算コストがより低い)
  • ksize,steps tuple要素:(배치 크기, 높이, 너비, 채널rgb)順序
  • 通常入力画像:[높이, 너비, 채널]シーケンス
  • 2、CNN構造


    入力アアアアアア
    🖥 簡単なCNN実現
    model = kears.layers.Sequential([
    	keras.layers.Conv2D(64, 7, activation='relu', padding='same',
        			    input_shape=[28,28,1]),
            keras.layers.MaxPooling2D(2),
            keras.layers.Conv2D(128, 3, activation='relu', padding='same'),
            keras.layers.Conv2D(128, 3, activation='relu', padding='same'),
            keras.layers.MaxPooling2D(2),
            keras.layers.Conv2D(256, 3, activation='relu', padding='same'),
            keras.layers.Conv2D(256, 3, activation='relu', padding='same'),
            keras.layers.MaxPooling2D(2),
            keras.layers.Flatten(),
            keras.layers.Dense(128, activation='relu'),
            keras.layers.Dropout(0.5),
            keras.layers.Dense(64, activation='relu'),
            keras.layers.Dropout(0.5),
            keras.layers.Dense(10, activation='softmax')
    ])

    2-1. LeNet-5

  • 入力画素数が増加するとパラメータが指数関数的に増加するという問題に対して,
  • を解決できるボリュームニューラルネットワーク構造を初めて提案した.
  • パラメータ共有により、入力された画素数が増加してもパラメータ数は変わらない.
  • 2-2. AlexNet

  • プール・レイヤを無効にします.
  • LeNet-5はSigmoidを使用し、AlexNetはReLUを使用して学習速度を向上させる
  • LR Nを用いた標準化により、機能を汎用化する.
  • データの拡張により、
  • のオーバーフィットを防止

    2-3. GoogLeNet

  • 概念モジュールを用いて多様な特徴
  • を抽出する.
  • 概念構造:ニューラルネットワーク内の別のニューラルネットワーク
  • (a)-前のレイヤの出力を入力として受け入れ、合成乗算器とfullingレイヤを接続し、複数のフィルタを一度に並列に使用します.しかし、3種類のフィルタの大きさが異なるため、
  • の計算量はコストを増加させる.
  • (b)−(1,1)サイズフィルタは、特徴マッピングの深さ(次元降下効果)を低減することができ、すなわち、演算量を調整することで、深さ網を構築することができる
  • 2-4. VGGNet

  • のボリュームコアを(3,3)1サイズ
  • に設定.
  • の積層層を添加することによって、深さの影響を研究する方法
  • 2-5. ResNet

  • メッシュが深すぎると、勾配が消失する(傾斜0、傾斜降下法Xを用いる)問題
  • が発生する.
  • 図に示すように、skip connectを使用して入力信号を出力に直接接続します.
  • Resiual Block
  • を使用
  • F(x)=H(x)-x,学習F(x)残り
  • 2-6. Xception

  • ResNetの概念モジュールは、
  • の代わりに深さ分離合成乗算層によって置き換えられる.
  • 空間上のモードとチャネル間のモード分離モデリングを行い、
  • フィルタを使用して両方を同時にキャプチャします.