Boostcamper's TIL (7)


2021/08/12


学習の内容


DL Basic


CNN


Convolution
  • NxNサイズのフィルタ(kernel)は、入力データ(画像)の順序で出力の演算を生成する.
  • フィルタをどのように初期化するかによって、Blur、Emboss、Outlineなど多くの結果を生成することができる.
  • フィルタにより特徴図が生成され、出力されるチャネルは特徴図の個数である.
  • 画像の特性をより良く抽出するために、フィルタの重みを学習する.
  • CNN演算では,パラメータの個数を算出できることが重要である.
  • Convolution Neural Networks
    従来のCNNモードはConvolution層の後に全接続層を確立する.
    # 10개의 클래스로 라벨링된 이미지 데이터를 분류하는 모델
    import torch
    import torch.nn as nn
    import torch.nn.functional as F
    #...
    conv1 = nn.Conv2d(in_channels=3, out_channels=8, kernel_size=3, padding=1)
    conv2 = nn.Conv2d(in_channels=8, out_channels=16, kernel_size=3, padding=1)
    fc1 = nn.Linear(8*8*16, 64)
    fc2 = nn.Linear(64, 32)
    fc3 = nn.Linear(32, 10)
    #...
    conv 1の出力は、次のconv 2の入力チャネルと同じです.
    第1のconv 1を通過するときに使用されるデータが3つのチャネル(RGB)を有する28 x 28画像であると仮定すると、出力は8つの特徴マッピングを有する.計算パラメータの場合は、3 x 3 x 3 x 8=216(filter W)x(filter H)x(input channel)x(output channel)
    Stride, Padding
  • Strid:データ巡回時にフィルタが移動するセル(画素)ステップ=1で1マス
  • を移動する.
  • Padding:フィルタが1コマ移動するたびに、画像エッジ付近の画素は1回しかスキャンできません.それを防ぐために、クッションを敷いてあげます.(出力の大きさも異なる)
  • Modern CNN


    最近,ILSVVRCにおいて良好な結果が得られるモデルはますます深くなり,完全に接続された層は消えつつある.
    AlexNet
    最良のCNNモデルの基礎モデルとして、Relu関数の使用、データ増強、Dropoutなどは現在当然の適用アルゴリズムであるが、当時はそうではなかった.
    VGG
    3 x 3フィルタを使用しました.AlexNetには11 x 11フィルタが使用され、過大なフィルタサイズパラメータが大きくなり、VGGには3 x 3フィルタが使用されることがコアとなる.
    GoogLeNet
    Inceptionブロックを使用しました.Inputデータは複数のパスにわたって移動でき,Inceptionブロックを用いてパラメータ数を大幅に減らすことができる.
    ResNet
    Layerが一定値以上になると,最終的には学習がなくなる現象が現れ,skip connectionを用いてLayerを深める方法が提案されている.
    DenseNet
    各後ろのfeature mapを接続するアイデアを使用します.

    Computer Vision Application


    コンピュータの視覚応用分野には様々なタスクが存在している.

  • Semantic Segmentation:ピクセルを分類する問題.最後に全接続層に接続せずに畳み込みます.出力はホットマップのようです.これを畳み込む.

  • Detection : R-CNN, SPPNet, Fast R-CNN, Faster R-CNN, YOLO
  • の最後の部分