9주차 학습정리_4

Simbean·2021년 9월 29일
0

1 stage Detectors

  • RCNN, FastRCNN, SPPNet, FasterRCNN
    • Localization(후보 영역 찾기)
    • classification(후보 영역 분류)
    • 한계: 속도가 매우 느리다
      1 stage Detectors는 Real world에서 응용 가능한 Object detector이다.

You Only Look Once(yolo)

  • YOLO v1 : 하나의 이미지의 Bbox와 classification 동시에 예측하는 1 stage detector 등장
  • YOLO v2 : 빠르고 강력하고 더 좋게
    • 3가지 측면에서 model 향상
  • YOLO v3 : multi-scale feature maps 사용
  • YOLO v4 : 최신 딥러닝 기술 사용
    • BOF : Bag of Freebies, BOS: Bag of Specials
  • YOLO v5: 크기별로 모델 구성
    • Small, Medium, Large, Xlarge

YOLO v1

  • yolo의 특징

    • Region proposal 단계 X
    • 전체 이미지에서 bounding box예측과 클래스를 예측하는 일을 동시에 진행
    • GoogLeNet 변형

      24개의 convolution layer : 특징 추출
      2개의 fully connected layer : box의 좌표값 및 확률 계산
  • pipeline

    output의 크기는 7X7X30이다 image의 grid를 (7,7)로 나누고 크기 30의 vector는 다음과 같이 정의된다.

    • 1~5 첫번째 bounding box의 정보
      • x - 그리드 셀 중심 x좌표
      • y - 그리드 셀 중심 y좌표
      • w - Bbox 너비
      • h - Bbox 높이
      • c – Bbox confidence score
    • 6 ~ 10 두번째 bounding box의 정보
      • x - 그리드 셀 중심 x좌표
      • y - 그리드 셀 중심 y좌표
      • w - Bbox 너비
      • h - Bbox 높이
      • c – Bbox confidence score
    • 나머지 20개 – class 개수
    • 첫번째 Bbox confidence score과 모든 class를 곱함으로써 Class score를 만들 수 있다. 이것을 각각의 bounding box, 모든 grid에 반영한다. 그러면, 2(한 grid의 bounding box) X 49(7X7, 모든 grid)= 98개의 boxes를 구할 수 있다.
    • 그 후 일정 score를 넘지 못하면 0으로 걸러주고, 내림차순으로 정렬 후, NMS를 적용함으로써 최종적으로 남은 box를 사용해 object를 그리면 최종적으로 inference를 할 수 있다.
  • Loss

    세가지의 loss를 더한 형태이다.


yolo를 통해 background를 솎아내고, Fast R-cnn을 수행하면, 즉 앙상블을 사용하면 mAP를 향상시킬 수 있다.

  • yolo의 장점

    • Faster R-CNN에 비해 6배 빠른 속도
    • 다른 real-time detector에 비해 2배 높은 정확도
    • 이미지 전체를 보기 때문에 클래스와 사진에 대한 맥락적 정보를 가지고 있음
    • 물체의 일반화된 표현을 학습
    • 사용된 dataset외 새로운 도메인에 대한 이미지에 대한 좋은 성능을 보임
  • yolo의 단점

    • 7x7 그리드 영역으로 나눠 Bounding box prediction 진행 → 그리드보다 작은 크기의 물체 검출 불가능
    • 신경망을 통과하며 마지막 feature만 사용 → 정확도 하락

YOLO v2

  • 3가지 파트에서 model 향상
    • 정확도 향상
    • 속도 향상
    • 더 많은 class 예측 (80 → 9000)
  • 개선점
    • batch normalization
      • mAP 2% ↑
    • High resolution classifier
      • YOLO v1: 224x224 이미지로 사전 학습된 VGG를 448x448 Detection 태스크에 적용
      • YOLO v2 : 448x448 이미지로 새롭게 finetuning
      • mAP 4% ↑
    • Convolution with anchor boxes
      • Fully connected layer 제거
        • YOLO v1 : grid cell의 bounding box의 좌표 값 랜덤으로 초기화 후 학습
        • YOLO v2 : anchor box 도입
      • K means clusters on COCO datasets → 5개의 anchor box를 사용
      • 좌표 값 대신 offset 예측하는 문제가 단순하고 학습하기 쉬움
      • mAP 5% ↑
    • Fine-grained features
      • 크기가 작은 feature map은 low level 정보가 부족
      • Early feature map은 작은 low level 정보 함축
      • Early feature map을 late feature map에 합쳐주는 passthrough layer 도입
      • 26x26 feature map을 분할 후 결합
    • Multi-scale training
      • 다양한 입력 이미지 사용 {320, 352, …, 608}
      • ≠ multi-scale feature map
    • Backbone model
      • GoogLeNet → Darknet-19
      • Darknet-19 for detection
      • 마지막 fully conected layer 제거하는 대신 3x3 convolution layer로 대체
      • 1x1 convolution layer 추가
      • channel 수 125 (=5 x (5+20))
    • Classification 데이터셋(ImageNet), detection 데이터셋(Coco) 함께 사용
      • Detection 데이터셋 : 일반적인 객체 class로 분류
      • Classification 데이터셋 : 세부적인 객체 class로 분류
    • WordTree 구성 (계층적인 트리)
      • Ex. “요크셔테리어” = 물리적객체(최상위 노드) – 동물 – 포유류 – 사냥개 – 테리어(최하위 노드)
      • ImageNet 데이터셋과 CoCo 데이터셋 합쳐서 구성 : 9418 범주
    • ImageNet 데이터셋 : Coco 데이터셋 = 4: 1
      • Detection 이미지 : classification loss는 특정범주에 대해서만 loss 계산
        • 개 이미지 : 물리적객체 – 동물 –포유류 – 개 에 대해서 loss 계산
      • Classification 이미지 : classification loss만 역전파 수행 (IoU)

YOLO v3

  • 개선점
    • DarkNet-53
      • Skip connection 적용
      • Max pooling x, convolution stride 2사용
      • ResNet-101, ResNet-152와 비슷한 성능, FPS 높음
    • 서로 다른 3개의 scale을 사용 (52x52, 26x26, 13x13)
      • Feature pyramid network 사용
      • High-level의 fine-grained 정보와 low-level의 semantic 정보를 얻음

SSD

  • SSD 특징

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

    채널 갯수 = box의 갯수 * (offsets + box의 class)
    offset = cx, cy, width, height
    class = num classes(20) + background(1)
    NBboxN_{Bbox} = 각기 다른 scale의 feature map(Smin=0.2S_{min} = 0.2, Smax=0.9S_{max} = 0.9,m=6m = 6,

    sk=smin+smaxsminm1(k1),k[1,m]s_k = s_{min} + \frac{s_{max} - s_{min}}{m - 1}(k- 1), k \in [1, m]

    각기 다른 비율로 나타난다. 이를 예시로 들어 나타내자면,

    ar={3,2,1,12,13},wk=skar,hk=sk/arar=1,wk,hk=s1s2,s1s2\begin{aligned} &a_{r}=\left\{3,2,1, \frac{1}{2}, \frac{1}{3}\right\}, w_{k}=s_{k} * \sqrt{a_{r}}, \quad h_{k}=s_{k} / \sqrt{a_{r}} \\ &a_{r}=1, w_{k}, h_{k}=\sqrt{s_{1} * s_{2}}, \sqrt{s_{1} * s_{2}} \end{aligned}

    과 같이 직사각형 5, 정사각형 1개, 총 6개의 서로 다른 비율의 box를 만든다.

  • Default Box

    • feature map의 각 cell마다 서로 다른 scale, 비율을 가진 미리 정해진 box를 생성한다.
    • Faster R-CNN의 anchor box와 유사하다.
  • ssd는 이와 같은 방법을 사용해 8732개의 bounding box를 만든다.

  • Loss

yolov1보다 속도도 빠르고, 성능도 개선된 모습을 보여준다.

RetinaNet

  • 1 Stage Detector Problems
    • Class imbalance
      이미지에는 배경이 대부분을 차지하기 때문에, 특히 2stage detector와 다르게 roi가 아닌 전체이미지를 사용하기 때문에 class imbalance 문제가 잘 발생한다.
      • Positive sample(객체 영역) < negative sample(배경영역)
    • Anchor Box 대부분 Negative Samples (background)
      • 2 Stage detector의 경우 region proposal에서 background sample 제거 (selective search, RPN)
      • Positive/ negative sample 수 적절하게 유지 (hard negative mining)
  • Focal loss : cross entropy loss + scaling factor
    • 쉬운 예제에 작은 가중치, 어려운 예제에 큰 가중치
    • 결과적으로 어려운 예제에 집중
    • Object Detection에서 background와의 class imbalance 조정
    • Object Detection 뿐만 아니라 Class imbalance가 심한 Dataset을 학습할 때 이를 활용
      성능에서 큰 향상을 이루었다

연구 동향

  • Anchor
    • [DAFS] Dynamic Anchor Feature Selection for Single-Shot Object Detection [ICCV' 19]
    • [FSAF] Feature Selective Anchor-Free Module for Single-Shot Object Detection [CVPR' 19]
  • Multi-scale feature map
    • M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network [AAAI' 19]
    • Learning Rich Features at High-Speed for Single-Shot Object Detection [ICCV' 19]
  • 경량화
    • YOLOv4: Optimal Speed and Accuracy of Object Detection [arXiv' 20]
    • Scaled-YOLOv4: Scaling Cross Stage Partial Network [CVPR’ 21]

0개의 댓글