기존 RCNN Family 등 2 stage detectors 들은 localization과 classification의 두 단계를 거치기 때문에 속도가 매우 느림
1 stage detector는 localization과 classification을 한번에 수행하여 Real world에서 응용 가능할 정도로 빠름
또한, 영역을 추출하지 않고 전체 이미지를 보기 때문에 객체에 대한 맥락적 이해가 높음(Background error가 낮음)
1 stage detector의 등장
Region proposal 단계 없이 전체 이미지에서 bounding box + 클래스 예측(맥락적 이해)
GoogLeNet 변형
24개의 conv layer로 특징 추출하고 2개의 fc layer로 bbox 좌표 및 확률 계산

입력 이미지를 SxS 그리드 영역으로 나눔 (S=7)
각 그리드 영역마다 B개의 Bounding box와 Confidence score 계산 (B=2)
신뢰도(confidence) = Pr(𝑂𝑏𝑗𝑒𝑐𝑡) × 𝐼𝑂𝑈(𝑝𝑟𝑒𝑑,𝑡𝑟𝑢𝑡ℎ)
각 그리드 영역마다 C개의 class에 대한 해당 클래스일 확률 계산 (C=20)
conditional class probability = Pr(𝐶𝑙𝑎𝑠𝑠 𝑖|𝑂𝑏𝑗𝑒𝑐𝑡)


하나의 그리드 cell에 해당하는 값으로 그림과 같이 5개의 정보를 담으며, 나머지는 class의 개수(20)만큼 class score 정보를 담음


각 바운딩 박스의 confidence score와 class score를 곱해 최종
score vectore 계산

위 과정을 각각의 grid cell마다 반복하여 score vector들을 총 98개(2x7x7) 생성
정해진 threshold(0.2)보다 작은 값을 가진 score는 0으로 set한 뒤 내림차순 정렬하고 NMS 적용

Loss는 Localization loss와 Confidence Loss, 그리고 Classification loss를 더해 구하며 각는 가중치임
Localization loss는 각 그리드 셀의 각 바운딩 박스 별로 오브젝트가 존재할 경우, 중심점의 위치에 대한 regression loss + width/height에 대한 regression loss의 합임
Confidence loss는 각 그리드 셀의 각 바운딩 박스 별로 오브젝트가 존재할 경우/존재하지 않을 경우에 대한 Confidence loss을 더한 값의 합임
Classification loss는 각 그리드 셀이 오브젝트를 포함할 경우의 mse loss의 합임

Faster R-CNN에 비해 6배 빠른 속도
다른 real-time detector에 비해 2배 높은 정확도
이미지 전체를 보기 때문에 클래스와 사진에 대한 맥락적 정보를 가지고 있음
물체의 일반화된 표현을 학습
사용된 dataset 외 새로운 도메인에 대한 이미지에 대한 좋은 성능을 보임
=> Extra convolution layers에 나온 feature map들 모두 detection 수행하여 크고 작은 물체 모두 정확히 탐지
추가로, Fully connected layer 대신 convolution layer 사용 및 Default box 사용하여 속도 향상

VGG-16(Backbone) + Extra Convolution Layers
입력 이미지 사이즈 300 x 300




feature map의 각 cell마다 서로 다른 scale, 비율을 가진 미리 정해진 box 생성
Faster R-CNN의 anchor box와 유사
Offsets는 center_x, center_y, width, height
는 𝑛𝑢𝑚 𝑐𝑙𝑎𝑠𝑠𝑒𝑠 20 + 𝑏𝑎𝑐𝑘𝑔𝑟𝑜𝑢𝑛𝑑 (1)


Hard negative mining 수행
NMS(Non maximum suppression) 수행
Localization loss로 Smooth L1, Confidence loss로 Softmax 사용

Batch normalization
High resolution classifier
: VGG를 448x448의 고해상도 이미지로 새롭게 finetuning함
Convolution with anchor boxes
: K means clusters on COCO datasets(5개의 anchor box가 주어져 좌표값 대신 offset 예측하여 학습이 쉬움)
Fine-grained features
: Early feature map의 low level 정보를 late feature map에 합쳐주는 passthrough layer 도입(26x26 feature map을 분할 후 결합)

Multi-scale training
: 다양한 입력 이미지 사용(이미지 자체가 다른 것으로 multi-scale feature map과는 다름)
WordTree 구성으로 Classification 데이터셋(ImageNet), detection 데이터셋(Coco) 함께 사용(9418 카테고리)
Ex. “요크셔테리어” = 물리적객체(최상위 노드) – 동물 – 포유류 – 사냥개 – 테리어(최하위 노드)

ImageNet 데이터셋 : Coco 데이터셋 = 4: 1
Detection 이미지 : 특정범주에 대해서는 classification loss도 계산
ex. 개 이미지 : 물리적객체 – 동물 –포유류 – 개 에 대해서 loss 계산
Classification 이미지 : classification loss만 역전파 수행 (IoU)
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 정보를 얻음
1 stage detector의 문제점인 Class imbalance 문제(객체 영역보다 배경 영역이 훨씬 큼)해결
cross entropy loss + scaling factor
쉬운 예제에 작은 가중치, 어려운 예제에 큰 가중치 두어 어려운 예제에 집중
Classification, Segmentation, Kaggle 등 다양하게 활용 가능한 loss
