10주차 학습정리_2

Simbean·2021년 10월 11일

YOLO v4

  • yolo v4의 등장 배경
    • Object Detection에서 사용하는 최신 방법들을 소개 및 실험
      • Object Detection model을 디자인하거나 향상 할 수 있는 아이디어 다양
      • 최신 Detection에서 정확도는 크게 향상시켰지만, 많은 양의 GPU를 필요
      • 실시간 요구하는 task에 부적합하다
        • Ex) 자율주행
      • 다른 detector들 보다 빠르면서 정확도가 높음
  • BOF (Bag of Freebies) : inference 비용을 늘리지 않고 정확도 향상시키는 방법
  • BOS (Bag of Specials) : inference 비용을 조금 높이지만 정확도가 크게 향상하는 방법

yolov4가 조사한 bag of freebies

bag of freebies = cost가 들지 않는 것, 즉 이를 적용해도 속도가 변하지 않음

Data Augmentation = 입력 이미지를 변화시켜 과적합을 막고, 다양한 환경에서도 강력해지는 방법.

  • CutMix

    • 여러 이미지를 함께 사용하여 data augmentation 수행
    • 학습 이미지의 패치영역만큼 잘라내서 다른 학습 이미지에 붙여넣고 ground truth 라벨도 패치 영역만큼 비율로 섞는 방법
  • emantic Distribution Bias

    • 데이터셋에 특정 라벨(배경)이 많은 경우 불균형을 해결하기 위한 방법
  • Label smoothing

    • 라벨에 0 또는 1로 설정하는 것이 아니라 smooth하게 부여
    • Ex) 원래 0이었던 라벨을 0.1로 부여, 1이었던 라벨을 0.9로 부여
  • 모델의 overfitting 막아주고 regularization의 효과

  • Bounding Box Regression

    • bounding box 좌표값들을 예측하는 방법은 거리가 일정하더라도, IoU가 다를 수 있다.
    • IoU 기반 loss를 제안한다.
  • GIoU

    • IoU 기반 loss
    • IoU가 0인 경우에 두 박스의 거리를 계산한다.

yolov4가 조사한 bag of Specials

  • Enhance receptive field

    • Feature map의 receptive field를 키워서 검출 성능을 높이는 방법

    • SPP (Spatial Pyramid Pooling)

      • conv layer의 마지막 feature map을 고정된 크기의 grid로 분할해 pooling하여 고정된 크기의 벡터 출력
    • Activation Function : 좋은 activation 함수는 gradient가 더 효율적으로 전파

      • ReLU
        • Gradient vanishing 문제 해결하기 위한 활성 함수로 등장
        • 음수 값이 나오면 훈련이 되지 않는 현상 발생
      • Swish / Mish
        • 약간의 음수 허용하기 때문에 ReLU의 zero bound보다 gradient 흐름에 좋은 영향을 준다.
        • 모든 구간에서 미분 가능
    • Post-processing Method

      • 불필요한 Bbox 제거하는 방법

Detector의 디자인 고려사항

  • 작은 물체 검출하기 위해서 큰 네트워크 입력 사이즈 필요
  • 네트워크 입력 사이즈가 증가함으로써 큰 receptive field 필요 → 많은 layer를 필요
  • 하나의 이미지로 다양한 사이즈의 물체 검출하기 위해 모델의 용량이 더 커야 함 → 많은 파라미터 필요
  • CSPNet
    • CSP를 적절히 사용하면...
      • 정확도를 유지하면서 메모리 cost를 감소시킬 수 있다.
      • 다양한 backbone에서 사용가능
      • 연산 bottleneck 제거
  • 새로운 data augmentation 방법
    • Mosaic
    • Self-Adversarial Training (SAT)
  • 기존 방법 변형
    • modified SAM
    • modified PAN
    • Cross mini-Batch Normalization (CmBN):

BoF and BoS for YOLOv4 backbone

bold체 사용

  • Activations : ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish

  • Bounding box regression loss : MSE, IoU, GIoU, CIoU, DIoU

  • Data augmentation : CutOut, MixUp, CutMix

  • Regularization method : DropOut, DropPath, Spatial DropOut, DropBlock

  • Normalization : Batch Normalization (BN), Cross-GPU Batch Normalization (CGBN or SyncBN), Filter Response Normalization (FRN), Cross-Iteration Batch Normalization (CBN)

  • Skip-connections : Residual connections, Weighted residual connections, Multi-input weighted
    residual connections, Cross stage partial connections (CSP)

  • Others : label smoothing
    Additional improvements for backbone = +Mosaic

    BoF and BoS for YOLOv4 detector

  • Activations : ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish

  • Bounding box regression loss : MSE, IoU, GIoU, CIoU, DIoU

  • Data augmentation : CutOut, MixUp, CutMix

  • Regularization method : DropOut, DropPath, Spatial DropOut, DropBlock

  • Normalization : Batch Normalization (BN), Cross-GPU Batch Normalization (CGBN or SyncBN), Filter Response Normalization (FRN), Cross-Iteration Batch Normalization (CBN)

  • Skip-connections : Residual connections, Weighted residual connections, Multi-input weighted
    residual connections, Cross stage partial connections (CSP)

  • Others : Cosine annealing scheduler, DIoU-NMS
    Additional Improvements for detector = + Mosaic, + Self-Adversarial Training (SAT), +modified : SAM, + modified PAN, + Cross mini-Batch No

M2Net

  • 물체에 대한 스케일 변화는 object detection 과제

    • Image pyramid
    • Feature pyramid
  • Feature pyramid 한계점

    • Backbone으로부터 feature pyramid 구성
    • Classification task를 위해 설계된 backbone은 object detection task를 수행하기에 충분하지 않음
    • Backbone network는 single-level layer로, single-level 정보만 나타냄
    • 일반적으로, low-level feature는 간단한 외형을, high-level feature는 복잡한 외형을 나타내는데 적합하다.

  • Multi-level, multi-scale feature pyramid 제안(MLFPN)
  • SSD에 합쳐서 M2Det라는 one stage detector 제안

  • FFMv1(Feature Fusion Module)
    • FFMv1 : base feature 생성
    • Base feature : 서로 다른 scale의 2 feature map을 합쳐 semantic 정보가 풍부함 합치는 것은 concat의 형태로 합쳐지며, upsampling을 한 후에 합쳐진다.
  • TUM : Thinned U-shape Module
    • Encode-decoder 구조
    • Decoder의 출력 : 현재 level에서의 multi-scale features

      다음과 같이 convolutional 연산을 통해 여러가지의 scale의 feature를 만든다.
  • FFM : Feature Fusion Module
    • FFMv2 : base feature와 이전 TUM 출력 중에서 가장 큰 feature에 concat 을 수행한 후 다음 TUM의 입력으로 들어간다.
  • SFAM : Scale-wise Feature Aggregation Module
    • 동일한 크기를 가진 feature들끼리 연결 (scale-wise concatenation)
    • 각각의 scale의 feature들은 multi-level 정보를 포함
      SFAM을 채널 별로 중요도를 계산하고, 이를 원래 feature map에 반영하게 되는데, 이렇게 구성된 feature map은 SSD의 head 연산(detector)을 수행하여 detection task를 수행한다.이 때, ssd와 달리 M2Net은 multi-level이기 때문에 객체의 외형 semantic을 포함하고 있어 detection을 더 잘 수행할 수 있다.
  • 8개의 TUM 사용
    • 출력 : 6개의 scale features
    • Detection Stage
    • 6개의 feature마다 2개의 convolution layer 추가해서 regression, classification 수행
    • 6개의 anchor box 사용
    • Soft-NMS사용

CornerNet

  • Anchor box의 단점
    • Anchor Box의 수가 엄청나게 많음
    • Positive sample(객체)가 적고, 대부분이 negative sample(배경) → class imbalance
    • Anchor Box 사용할 때 하이퍼파라미터를 고려해야함
    • Anchor box 개수, 사이즈, 비율
  • chor Box가 없는 1 stage detector
    • 좌측 상단(top-left), 우측 하단(bottom-right)점을 이용하여 객체 검출
  • Center(중심점)이 아니라 Corner(모서리) 사용하는 이유
  • 중심점을 잡게 되면 4개의 면을 모두 고려해야하는 반면, corner을 사용하면 2개만 고려

Encoding Part

  • Feature 추출 : convolution layer + maxpooling layer
  • 별도의 branch로 convolution 진행해서 스케일마다 feature 추출 (upsampling 과정에서 조합)
  • CornerNet에서는 maxpooling 대신 stride 2 사용, 스케일 5번 감소

Decoding Part

  • Encoder 과정에서 스케일별로 추출한 feature 조합
  • Upsampling 과정에서는 Nearest Neighborhood Sampling, feature조합에서는 element-wise addition
    사용

Prediction module

  • 좌측 상단(top-left), 우측 하단(bottom-right)을 예측하는 구간
  • corner pooling을 사용한다.
  • corner pooling

Detecting corner

  • 2개의 heatmap을 통해서 예측 (top-left, bottom-right)
  • H x W x C로 구성 (C = #of category)
  • 각 채널은 클래스에 해당하는 corner의 위치를 나타내는 binary mask
  • 모든 negative 위치(location)를 동일하게 패널티 주는 것은 아님
  • Positive location 반지름 안에 들어오는 negative location들은 패널티를 감소시킴
  • 반지름은 물체의 크기에 따라 결정
  • 거리에 따라 패널티 감소

loss

  • Focal loss 변형, 정답에 근접한 예측값은 낮은 loss부여

  • Convolution를 통과하면서 많은 upsampling과 downsampling을 진행하게 되고, 이로 인해 heatmap에 floating point loss 발생한다. 이는 곧 Heatmap에서 이미지로 위치를 다시 mapping 시킬 때 차이 발생을 뜻한다.
  • 따라서, Offset을 사용하여 예측한 위치를 약간 조정을 Smooth L1 loss 를 사용해 수행한다.

Grouping corner

  • Top-left코너와 bottom-right코너의 짝을 맞춰주는 과정
  • Top-left코너와 bottom-right코너의 임베딩값의 차이에 따라서 그룹지어줌
  • embedding값 사이의 거리가 작으면 같은 물체의 bounding box에 속함

0개의 댓글