[네이버 부스트 캠프] AI-Tech - Lv2 week4(5)
학습기록 - 43
오늘 할 일
- Neck
1. 강의 복습 내용
1 Stage Detectors
-
Background
이전에 포스팅 해왔던 2Stage Detectors는
1) Localization (후보 영역 찾기) 2) Classification (후보 영역 분류) 로 분리되어 Object Detection을 하게 됩니다. 여기서의 한계점은 두 가지 영역을 따로 수행해야 하기 때문에 속도가 매우 느린 단점을 가지고 있습니다.그래서 제안된 점은 Real-World에서 속도에 영향을 받지 않고 응용 가능한 Object Detectors를 만들기 위해 위와 같은 1Stages Detectors처럼 한번에 바로 Detect 가능하게 만드는 것입니다.
여기서 다뤄볼 1Stage 모델은 다음과 같습니다. (파란색 글씨)
YOLO v1
-
Overview
YOLO의 특징은 Region Proposal 단계가 따로 존재하지 않습니다. 전체 이미지에서 바로 bounding box 예측과 클래스 예측을 동시에 진행하게 됩니다. 이미지, 물체를 전체적으로 관찰해서 추론하는 방식을 사용하게 됩니다.
아래의 그림은 R-CNN과 비교했을 때, RPN 없이 전체 이미지를 보고 추론하는 YOLO 모델에 대한 간략한 예시입니다.
-
Pipeline
-
구조는 다음과 같습니다.
- Network : GoogLeNet 변형 구조 - 24개의 convolution layer : 특징 추출 - 2개의 fully connected layer : box의 좌표값 및 확률 계산
-
모델 활용 방법 (Inference 방법)
- 입력 이미지를 SxS 그리드 영역으로 나눕니다. (논문에서는 S=7로 설정)
- 각 그리드 영역마다 B개의 Bounding box와 Confidence score를 계산합니다. (B=2)
- Confidence Score (신뢰도) = $\operatorname{Pr}($ Object $) \times I O U_{\text {pred }}^{\text {truth }}$
- 각 그리드 영역마다 C개의 class에 대한 해당 클래스일 확률을 계산합니다. (C=20)
- conditional class probablity = Pr(Class $_{i} \mid$ Object $)$
-
Prediction을 마친 후, Output에 대해서 보면 7x7x30 의 feature map이 나옵니다.
여기서 각 하나의 셀이 가지는 의미에 대해서 살펴보면 다음과 같습니다.
2개의 Bounding Box를 10개의 feature로 설명하는데, 하나의 Bounding Box안에 서로 다른 의미를 가진 5개의 feature가 있습니다.나머지 20개 feature는 class의 개수를 나타냅니다. (Pasco Dataset은 20개의 class, background 여부 x)
위의 class에 대해서 각 bb (bounding box)의 곱을 통해 Class Score (확률)을 생성하게 됩니다. 이렇게 하나의 grid cell에서 총 두 개의 Class Score가 나오게 되고 모든 grid cell에 대해 연산을 합니다. (7x7x2 = 98개의 cell)
Class Score들이 있는 map에서 score에 대한 Threshold를 정해줘서 특정 Threshold보다 낮은 값을 0으로 치환합니다. (그림에서는 thresh1 (0.2))
Class Score에 따라 내림차순으로 정렬을 합니다. 내림차순 정렬 후, NMS Algorithm을 통해 중간값들은 버리고 class에 따라 위치에 그려주게 됩니다.
-
Loss
논문에서 Loss는 다음과 같이 설명합니다.
각각 MSE를 이용하는 것을 볼 수 있습니다.공통적으로 나오는 아래의 수식에 대해 설명하자면,
B는 Bounding Box, $S^{2}$ 은 Grid Cell이고, $\mathbb{1}_{i j}^{\text {obj }}$ 는Grid Cell안에 Bounding Box가 있고 Object가 있을 때
를 설명합니다.$\sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}$
-
Results 좌측 figure의 결과는 Real-Time에서 어느 정도 성능(mAP)와 속도(FPS)가 효과적인 것을 보여주고 있습니다.
우측 figure의 결과는 Background에서 Fast R-CNN은 에러가 많은 것을 보여주고 있습니다. 그런데 여기에 YOLO를 사용해서 Background를 걸러주고 Fast R-CNN을 했을 때 ‘Combined’를 보면 mAP가 높게 나오는 것을 볼 수 있습니다. 즉, 앙상블의 효과가 잘 받는다는 것을 볼 수 있습니다.장점
- Faster R-CNN에 비해 6배 빠르다.
- 다른 real time detector 에 비해 2 배 높은 정확도
- 이미지 전체를 보기 때문에 클래스와 사진에 대한 맥락적 정보를 가지고 있음
- 물체의 일반화된 표현을 학습
- 사용된 dataset 외 새로운 도메인에 대한 이미지에 대한 좋은 성능을 보임
-
SSD
- Overview
YOLO는 다음과 같은 단점을 가지고 있습니다.
-
7x7 그리드 영역으로 나눠 Bounding box prediction 진행
–> 그리드보다 작은 크기의 물체 검출 불가능 -
신경망을 통과하며 마지막 feature만 사용
–> 정확도 하락
YOLO vs SSD
- YOLO와 SSD의 차이점은 다음과 같이 3가지가 있습니다.
- SSD에서 Image의 크기가 300으로 달라집니다.
- SSD에서 Fully Connected layer가 사라집니다.
- SSD에서 Extra Convolution layer를 추가해서 이용합니다.
- SSD 특징
-
-
Pipeline
- Network