728x90
반응형

RetinaNet 특징

- One Stage Detector의 빠른 detection 시간의 장점을 가지면서 One stage detector의 detection 성능 저하 문제 개선

- 수행 시간은 YOLO나 SSD보다 느리지만 Faster RCNN보다 빠름

- 수행 성능은 타 detection 모델보다 뛰어남. 특히 One stage detector 보다 작은 object에 대한 detection능력이 뛰어남

 

# Focal Loss + Feature Pyramid Network

- Focal loss : Cross Entropy를 대체한 loss function 

- Feature Pyramid Network을 backbone에 적용

 

Focal Loss의 필요성

Cross Entropy

object의 classification pred_proba를 로그하고 실제값과 곱함

One-stage detector의 class imbalance 이슈

넓은 이미지 속에서 background엔 detect할 정보가 많은데, detect하고싶은 object는 아주 적은 문제

- Anchor box가 bg에 학습값이 치중되어 분명한 object여도 확률값이 작아짐

 

Easy Example : 찾기 쉬운 대상들. Background 나 크고 선명한 대상 오브젝트. 이미 높은 예측확률을 가지고 있음

Hard Example : 찾기 어려운 대상들. 작고 형태가 불분명하여 낮은 예측 확률을 가지고 있음

 

- Easy Example이 많고 Hard Example이 적은 적은 Class imbalance 이슈는 object detection이 안고 있는 고유문제

- Two Stage detector의 경우 Region Proposal Network에서 오브젝트가 있을만한 높은 확률 순으로 필터링을 먼저 수행할 수 있음

- 하지만 One-Stage는 Region Proposal과 Detection을 같이 수행하므로 매우 많은 오브젝트 후보들에 대해서 detection을 수행해야하므로 class imbalance로 인한 성능 저하 영향이 큼

=> 이미 잘 예측된 object의 loss를 줄이려고 학습이 진행되는데 보통 잘 예측된 object는 Easy Example이다.

     배경이라 anchorbox 할당도 많이 되고, 학습할 개수도 많고, 확률값도 높으니깐

- two-stage도 있는 문제지만 one-stage에서 큼

 

Class imbalance 해결방안

- 기존 : 학습 시 경험치에 기반한 샘플링이나 data augmentation

- RetinaNet : 동적으로 cross entropy 조절

 

Focal loss - Cross Entropy에 가중치 부여

가중치때문에 전반적인 loss가 떨어지는데 확률이 높은 쪽은 아주 많이 떨어지고, 확률이 작은 쪽은 적게 떨어짐

보통 감마 값을 0.25로 잡음

Focal loss를 통해 anchor box를 많이 만듬

 

FPN (Feature Pyramid Network)

- 서로 다른 크기를 가지는 object들을 효과적으로 Detection하기 위해 bottom up과 top down 방식으로 추출된 feature map들을 lateral connection으로 연결하는 방식

- 서로 다른 크기의 object를 detect하기 위해 image size를 줄여나가는 방식으로 하면 큰 object를 detect를 할 수 있지만 computing 시간이 오래걸림, 그래서 최근에는 잘 안씀

- 대신 feature map을 기반으로 predict하는 방식이 일반적임. 그러나 너무 최상위 feature map은 너무 추상화가 되어있고 핵심 feature를 가지고 있지만 위치 정보를 잃어버려서 정확도가 떨어짐

- 그래서 feature map을 사용하긴 하는데 각 map을 predict하게 됨

- layer 특성이 상위 feature map으로 갈수록 소실되어서 detection 정확도가 떨어지는 문제가 발생.

 

- 그래서 bottom up 방식을 사용, 위로 올라갈수록 시멘틱하지만 레졸루션은 떨어짐

- 레졸루션이 떨어져서 image size가 작아질수록 skip connection으로 보완

- upsampling + skip connection

 

* 기존 resnet의 경우 layer가 깊어지면 gradient vanishing 문제가 발생하고 오히려 성능이 떨어짐

  => skip connection을 통해서 jump해서 보내줘서 되살리는 원리를 차용함

 

RetinaNet FPN AnchorBox

- 9개의 anchor box가 p2~p5의 개별 Layer의 개별 grid에 할당

- 3개의 서로다른크기와 3개의 서로다른 스케일을 가짐

- 약 100k의 anchor box들

- 개별 anchor box 는 classification을 위한 k개의 클래스 확률값과 bounding box regression을 위한 4개 좌표값을 가짐

   * 20개 class 확률 + 4개 좌표

 

 

반응형

+ Recent posts