부스트캠프 10주차 1 stage Detectors 정리

kimkihoon·2022년 4월 10일
0

부스트캠프 AI

목록 보기
37/49

1 Stage Detectors


2 stage detector는 localization과 classification을 하기 때문에 realtime으로 활용이 불가능하다. 그래서 RPN 과정을 빼서 속도를 올렸다.

특징

  • Localization, Classification이 동시에 진행한다.
  • 전체 이미지에 대해 특징 추출, 객체 검출이 이루어진다. → 간단하고 쉬운 디자인
  • 속도가 매우 빠르다 (Real-time detection)
  • 영역을 추출하지 않고 전체 이미지를 보기 때문에 객체에 대한 맥락적 이해가 높다
  • Background error가 낮다
  • YOLO, SSD, RetinaNet 등이 있다

YOLOv1

YOLO Version

  • 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

특징

  • Region Proposal 단계가 없다
  • 전체 이미지에서 bounding box예측과 class 예측을 동시에 진행한다.
  • 이미지, 물체를 전체적으로 관찰하여 추론한다.

Pipeline

1단계 : 입력이미지를 SxS 그리드 영역으로 나눈다.(S=7)

2단계 : 각 그리드 영역마다 B개의 서로 다른 Bbox와 confidence score를 계산한다.(B=2)

3단계 : 각 그리드 영역마다 C개의 class에 대해 해당 클래스일 확률을 계산한다.(C=20)

  • Output 사이즈가 7x7x30으로 나오게 되는데 채널이 30인 이유는 각 그리드에 대해서 2개의 Bounding Box가 있는데 그것을 표현하기위해 5x2 개의 Channel이 사용되고 PASCAL VOC dataset을 사용했기 때문에 20개의 channel은 클래스의 개수이다.
  • Yolo는 background의 여부를 포함하지 않는다.

Inference

첫 번째 bounding box의 confidence score와 20개의 class 수를 곱해서 나온 결과는 첫번째 bounding box가 해당 클래스일 확률이다.

각 그리드마다 2개의 cell을 만들어내어 총 7x7x2개가 만들어진다.

98개의 cell들을 Threshold로 걸러내고 descending한다. 그렇게 나온 box를 대상으로 NMS연산을 수행한다. 마지막으로 Object에 box들을 그려준다.

Loss


Localization Loss, Confidence Loss, Classification Loss 총 3가지 Loss를 합쳐서 최종 Loss를 구한다.

  • Localization : 각 object bbox의 x,y에 대한 loss와 w,h에 대한 loss를 더한다.
  • Confidence : Object가 있는 bbox대상으로 loss + Object없는 bbox대상으로 loss 더한다.
  • Classification : Object 별로 class 정답과오차 loss이다.

장점

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

YOLOv2

  • 정확도, 속도, 더 많은 클래스를 예측하는 방향으로 모델의 성능을 높혔다.
  • Batch Normalization
    - mAP 2% 성능 향상
  • High Resolution Classifier
    - YOLOv1: 224x224 이미지로 사전 학습된 VGG를 448x448 Detection Task에 적용했다.
    • YOLOV2: 448x448 이미지로 새롭게 finetuning했다.
    • mAP 4% 정도 성능 향상
  • Convolution with anchor boxes
    - FCN layer 제거했다.
    • 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에 합쳐주는 layer 도입했다.
    - 26x26 feature map을 분할후에 결합을 했다.
  • Multi-scale training
    - 다양한 입력 이미지를 사용하여 학습을 진행했다.

YOLOv3

Backbone을 Darknet53으로 변경했다.
- Skip connection을 적용했다.
- Max pooling을 사용하지 않고 대신 Convolution stride 2를 사용했다.
- ResNet-101, ResNet-142와 비슷한 성능을 지니고 FPS가 높다는게 장점이다.

RetinaNet

1-Stage Detector는 RPN이 없고 그리드별로 bounding box를 무조건 예측하기 때문에 background를 잡는 경우가 더 많이 생긴다. 그래서 클래스 불균형문제가 발생한다.

  • Class 불균형
    - Positive sample(객체) < negative sample(배경)
  • Anchor box 대부분 배경이다.
    - 2 Stage Detector의 경우 region proposal에서 background sample을 제거한다.
    • Positive/Negative sample 수를 적절하게 유지한다.
  • Cross Entropy에 Scaling Facor를 추가하였다.
  • 새로운 Loss function을 제시했다 : CSE + scaling factor
  • 쉬운 예제에 적은 가중치를 주고 어려운 예제에 큰 가중치를 부여한다.

SSD

Yolo는 7x7 그리드 영역으로 나눠서 bounding box prediction을 진행하기 때문에 그리드보다 작은 크기의 물체를 검증할 수 없었다. 그리고 신경망을 통과하며 마지막 feature만 사용하기 때문에 정확도하락이라는 단점이있다. SSD에서는 1x1 Conv를 사용하여 좀 더 나은 성능을 보이고 extra conv를 수행함으로써 각 conv에 대해서 detection을 수행한다.

특징

  • 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 사용한다.

Pipeline

Network

  • VGG-16(backbone) + Extra Conv Layers
  • Input size : 300x300

    5x5 feature의 경우 256 channel을 3x3 conv channel로 변경해준다.
    이때 SSD는 background도 포함하게 되므로 x,y,w,h와 class의 수(20) + background 까지 합쳐서 총 25개를 예측을 한다.

NBbox : 0.2~0.9까지 선형적으로 scale을 늘려간다.

총 6개의 default box를 활용하게 된다.

Default Box

  • feature map의 각 cell마다 서로 다른 scale, 비율을 가진 box를 생성한다.
  • Faster R-CNN의 anchor box와 유사하다.

    총 8732개의 default box를 사용한다.

Training

  • Hard Negative Mining을 수행한다.
  • NMS를 수행한다.

0개의 댓글