[부스트캠프 AI tech Det] week10 (2022.03.24) One-Stage Detectors

redgreen·2022년 3월 24일
0
post-thumbnail

1. Background

  • Two-stage Detectors
    : image - Region Proposal - Classification - pred
    1) Localization (후보영역찾기)
    2) Classification (후보영역 분류)
    : 속도가 느림

  • One-stage Detectors
    : image - Conv layer - feature map - pred
    : LocalizationClassification이 동시에 진행
    : 속도가 빠름
    : 영역을 추출하지 않고 전체 이미지를 보기 때문에 맥락적 이해가 높음

2. You Only Look Once(YOLO) v1

  • Region proposal단계가 없음
  • 전체이미지에서 bboxclass를 동시에 예측
  • Grid

    • 입력 이미지를 SSxSS grid로 나눔(S=7S=7)
    • grid마다 BB개의 bboxconfidence score 계산(B=2B=2)
    • (S×S×BS\times S\times B)개의 bbox
    • 신뢰도(confidence score)= P(object)×IOUpredtruthP(object) \times IOU_{pred}^{truth}
    • grid마다 CC개의 class에 대한 해당 클래스일 확률 계산(C=20C=20)
    • conditional class probability = P(Classi    Object)P(Class_i \; | \; Object)
  • Network(참고슬라이드)

    • GoogLeNet을 변형하여 사용
    • input image - GoogLeNet - output feature
    • (grid×grid×?)(grid\times grid\times ?) = (7×7×30)(7\times 7\times 30)output을 만듦

  • output
    • 출력이 가지는 30개의 channel5/5/20으로 나눌 수 있음
    • 처음 5개는 bbox1(x,y,w,h)(x, y, w, h) + confidence  scoreconfidence\; score
    • 두 번째 5개는 bbox2(x,y,w,h)(x, y, w, h) + confidence  scoreconfidence\; score
    • 나머지 20개는 classscore값을 나타냄
    • bboxscoreclass score를 곱해줌으로써 20차원의 bbox class score를 얻어냄
    • 최종적으로 하나의 이미지당 (7×7×2)(7\times 7\times 2)개의 bbox에 대한 20차원의 class score가 만들어짐
      1) threshold 이하의 class score를 갖는 bbox의 값은 지움
      2) class score 기준으로 bbox를 내림차순 정렬함
      3) NMS를 통해 겹치는 bbox는 제거함

  • Loss

    : object가 있을 때를 의미

  • 장점
    1) Faster R-CNN에 비해 6배 빠른 속도
    2) 다른 real-time detector에 비해 2배 높은 정확도
    3) 물체의 일반화된 표현을 학습, 새로운 dataset에도 좋은성능

3. SSD

  • YOLO의 단점
    • 7x7 grid로 나눠 grid보다 작은 크기의 물체 검출 불가능
    • 신경망을 통과하여 마지막 feature만 사용

  • SSD의 특징
    • Extra convolution layers에서 나온 feature map들 모두 detection 수행
      • 6개의 서로 다른 scale의 feature map 사용
      • feature map에서는 작은 물체 탐지
      • 작은 feature map에서는 큰 물체 탐지
    • fc layer 대신 conv layer 사용하여 속도 향상
    • Default box(= anchor box?)사용
      - 서로 다른 scale과 비율을 가진 미리 계산된 box사용

  • Network
    • VGG-16backbone으로 사용
    • 다양한 크기의 feature map을 얻음

  • Multi-scale feature maps

    • OffsetsOffsets: 위치 정보 (cx,cy,w,h)(cx, cy, w, h)
    • NCN_C: 클래스의 수(20) + 배경(1)
    • 다양한 크기의 feature map을 만들기 위해 파라미터 ss를 사용
    • aspect ratioara_rss를 곱해 다양한 크기의 wk,hkw_k, h_k를 만들어 냄
    • ara_r이 1인경우에는 wk,hkw_k, h_k를 각각 s1s2\sqrt{s_1*s_2}로 두는 케이스를 추가함
    • 그 결과로 각 cell(ara_r의 원소개수 + 1개)default box를 만듦
    • bbox(x,y,w,h)(x, y, w, h)가 먼저 나옴
    • (x1,y1,w1,h1)...(x6,y6,w6,h6)(x_1, y_1, w_1, h_1)...(x_6, y_6, w_6, h_6) 가 나오고,
    • (C11,...C211)...(C16,...C216)(C1_1,...C21_1)...(C1_6,...C21_6)가 이어서 나옴
    • 다양한 크기의 feature map을 얻은 후 default box를 구해 매우 많은 bbox를 얻음
    • 큰 feature map일수록 작은 object를 잘 탐지하고 작은 feature map일수록 큰 object를 잘 탐지함

Training

  • Hard negative mining 수행
  • NMS 수행

4. YOLO Follow-up

4.1 YOLO v2

  • 3가지파트에서 model 향상
    • Better(정확도)
    • Faster(속도)
    • Stronger(더 많은 클래스)

Better

  • Batch Normalization 추가 -> mAP 2% 향상
  • (224×224)(224\times224)였던 이미지의 resolution을 (448×448)(448\times448)로 키워줌 -> mAP 4% 향상
  • conv with anchor box -> mAP 5% 향상
    • fc layer 제거
    • anchor box 도입
    • 좌표값 대신 offset 예측하는 문제가 단순하고 학습하기 쉬움
  • Fine-grained features
    • low-level의 정보를 high-level에 주고자 early feature map을 분할 후, channel-wise로 결합하여 late feature map에 합쳐주는 passthrough layer 도입

  • multi scale training
    • 다양한 입력 이미지 사용
    • multi-scale feature map 아님

Faster

  • GoogLeNet대신 DarkNet-19backbone으로 사용

Stronger

  • ImageNet, coco 데이터셋을 동시에 사용
  • ImageNet: classification만 수행
  • coco: detection만 수행

4.2 YOLO v3

Darknet-53

  • skip connection 적용
  • Max pooling 미사용, stride 2 사용
  • ResNet-101, ResNet-152와 비슷한 성능으로 더 높은 FPS를 가짐

Multi-scale Feature map

  • 서로 다른 3개의 scale 사용
  • Feature Pyramid Network(FPN) 사용

4.3 RetinaNet

one-stage가 가지고 있는 고질적인 문제를 해결

Class imbalance

  • Anchor box 대부분이 negative sample
  • Positive sample(객체) < negative sample(배경)
  • two-stage detector의 경우 Region proposal에서 negative sample을 제거해주고 hard negative mining을 통해 posneg를 적절하게 유지함

Focal Loss

  • cross entropy + scaling factor
  • 쉬운 예제에 작은 가중치, 어려운 예제에 큰 가중치를 주어 어려운 예제에 집중하도록 함
  • Object Detection 뿐만 아니라 class imbalance가 심한 classification task에도 사용할 수 잇음
profile
인공지능 꿈나무

0개의 댓글