Object Detection Architecture - 1 or 2 stage detector
Object Detection 방식 중 Sliding Window를 이용하는 방식은 이미지에서 모든 영역을 다양한 크기의 window (differenct scale & ratio)로 탐색하기때문에 매우 비효율적입니다.
이런 비효율성을 개선하기 위해 물체가 있을만한 영역을 빠르게 찾아내는 알고리즘이 Regional Proposal입니다. 즉, regional proposal은 object의 위치를 찾는 localization문제입니다. 대표적으로 Selective search, Edge boxes들이 있습니다.
2-stage detector
먼저 2-stage detector에 대해서 살펴보면,
regional proposal과 classification이 순차적으로 이루어지며, 이 뜻은 localization문제와 classification를 순차적으로 해결한다는 것입니다.
- Image Crop과 Warp을 적용하여 2000개의 Region 영역을 추출
- 추출된 2000개의 Region에 대해 각각 Classificaion 진행
아래 그림을 예시로 보면
Selective Search, Region Proposal Network (RPN)과 같은 알고리즘을 이용하여 Object가 있을만한 위치를 찾습니다. 이 영역을 ROI (Region of Interest) 라고 부릅니다. 찾아낸 ROI 영역을 convolution network를 통해 classification과 box regression을 수행합니다. 다만 ROI 영역이 위 그림처럼 정확히 4개의 영역만 추출되면 좋겠지만 2000개의 영역이 추출되고 각각 classification을 진행한 뒤 결과를 도출하기때문에 아래 설명 할 1-stage detector보다는 정확하지만 속도가 느릴 수 밖에 없습니다.
대표 모델은 R-CNN, Fast R-CNN, Faster R-CNN 이 있습니다.
다시 말씀드리면 2-stage detector는 객체를 검출하는 정확도 측면에선 굉장히 좋은 성능을 냈지만, 속도(FPS) 측면에서는 너무나도 느렸기때문에 이런 속도 문제를 해결하기 위해 region proposal과 classification을 동시에 하는 1-stage detector가 제안되었습니다.
1-stage detector
그럼 1-stage detector는 어떨까요? 예상이 되시겠지만 1-stage detector는 Regional Proposal과 Classification이 동시에 이루어지며 이는 localization문제와 classification를 동시에 해결한다는 뜻입니다.
여기는 ROI 영역을 추출하는 것이 아니라 Anchor box라는 개념을 사용합니다. 미리 정의된 형태를 가진 경계박스 수를 ‘앵커 박스(Anchor Boxes)’라고 말하며 앵커 박스는 K-평균 알고리즘에 의한 데이터로부터 생성됩니다. 데이터 세트의 객체 크기와 형태에 대한 사전 정보를 확보하고 각각의 앵커는 각기 다른 크기와 형태의 객체를 탐지하도록 설계되어 있습니다.
아래 그림을 보시면,
- 먼저 input image를 n x n Grid 형식으로 나눕니다. (위 그림에선 13 x 13 )
- 각 Grid의 Cell이 n개의 Object에 대한 Detection을 수행합니다. (1개의 Cell에서 여러 개의 Anchor를 통해 개별 Cell에서 여러 개의 Object Detection이 가능)
- 각 Grid Cell이 2개의 Bounding Box후보를 기반으로 Object의 Bounding Box를 예측합니다.
- 그리고 하나씩 찾으면서 동시에 classification이 이루어집니다.
2-stage detector는 input 이미지의 전체 영역에서 정확한 물체의 위치에 ROI를 설정하기 위해 고군 분투한다면, 1-stage detector는 정해진 빙고판 안에서 최대한 물체가 있는 위치를 잡는다고 보시면 됩니다. 그렇다보니 속도는 2-stage detector에 비해 빠르지만 정확도는 낮다고 할 수 있습니다. 다만 1-stage detector도 Grid를 잘게 나눈다면 정확도는 올라 갈 수 있습니다.
대표 모델은 YOLO와 SSD, RetinaNet이 있습니다.
먼저 YOLO를 말씀드리면 물체를 탐지하는 성능은 줄어들었지만 속도적인 측면에서 기존 기술들을 훨씬 뛰어넘는 결과를 가져왔습니다.
다만 YOLO는 하나의 Grid cell에 하나의 클래스만 예측이 가능하기때문에 작은 object가 하나의 cell에 여러개 있으면 예측이 힘듭니다. 또한 Grid cell의 개수가 이미지당 98개 밖에 안되기에 bbox를 제대로 찾기가 힘든 문제가 존재했고 bbox 예측시 bbox regression을 하지 않고 다이렉트로 bbox를 예측하기때문에 bbox를 찾는 성능이 굉장히 떨어진다는 한계가 있었죠.
SSD는 YOLO 이후에 나왔으며, 기존 YOLO가 가지고 있던 문제점인 검출 성능을 높이면서도 속도를 유지시켰습니다. 심지어 2-stage detector의 당시 최고 기술이던 Faster R-CNN 보다 더 좋은 검출 성능을 보였습니다. SSD는 미리 정의된 anchor box처럼, 미리 정의된 default bbox를 구성했습니다. (논문에서도 anchor box와 매우 유사하다고 언급하고 있습니다.) 각각 feature map마다 구현된 default box가 존재해, 해당 bbox를 이용해 객체를 검출합니다.
요약하자면 SSD의 핵심 아이디어는 한개의 물체를 다양한 크기의 bbox를 이용해 multi-resolution 환경에서 예측하는 방법입니다.
RetinaNet은 기존 detection 알고리즘에서 classifier의 loss로 사용되던 cross entropy loss에서 변형된 focal loss를 제안했습니다. Focal loss를 이용해 class imbalance 문제를 해결한 논문입니다.
RetinaNet의 성능은 1-stage detector임에도 불구하고 기존에 있던 2-stage detector들을 물리치고 SOTA를 찍었습니다. 특히나 기존에 어려운 방법론들을 제치고 loss를 약간 변형한 것만으로 좋은 성능을 낸 것에 주목할만 합니다.
'Tech & Development > AI' 카테고리의 다른 글
Train Swin-Object Detection using Custom Data(without mask) (1) | 2022.08.02 |
---|---|
CartoonGAN을 이용하여 일본 애니메이션 그림 만들기 (0) | 2022.03.15 |
YOLOv5 - Custom Data로 학습하기 (0) | 2022.02.14 |
UGATIT (Selfie2Anime) - 사람을 애니메이션 캐릭터로 만들기 (0) | 2022.02.14 |
Richer Convolutional Features (RCF) for Edge Detection - 윤곽선 검출 (1) | 2022.02.09 |
댓글
이 글 공유하기
다른 글
-
Train Swin-Object Detection using Custom Data(without mask)
Train Swin-Object Detection using Custom Data(without mask)
2022.08.02 -
CartoonGAN을 이용하여 일본 애니메이션 그림 만들기
CartoonGAN을 이용하여 일본 애니메이션 그림 만들기
2022.03.15 -
YOLOv5 - Custom Data로 학습하기
YOLOv5 - Custom Data로 학습하기
2022.02.14 -
UGATIT (Selfie2Anime) - 사람을 애니메이션 캐릭터로 만들기
UGATIT (Selfie2Anime) - 사람을 애니메이션 캐릭터로 만들기
2022.02.14