2021.07.19 - [실습 note] - Single Shot Detector 실습
*one-stage detector & two-stage detector의 구분: RegionProposal(영역추천)이 별도로 구성되어 있느냐 없느냐로 구분할수 있다. two-stage detector의 단점은 수행능력이 떨이지므로 이를 개선하기 위해서 나온 알고리즘이 SSD이다.
VGG를 통해 만들어진 각기 다른 크기의 Feature Map들에서 각각 Anchor Box을 적용한 모델이다. Anchor Box들이 Classification&Object Dectection을 함께 수행한다.
SSD의 주요 구성 요소는 아래와 같다.
1. multi Scale Feature Layer
노란색 윈도우 슬라이드가 오른쪽으로 스캔하면서 객체를 탐지하는데 맨 왼쪽 그림처럼 객체가 노란색 박스보다 큰 경우엔 객체 탐지가 되지 않는다. 따라서 이미지 scale를 조정하면서 object detection 하는 것을 이미지 피라미드라고 한다.
크기를 줄여서 객체가 박스안에 들어와서 detection 할수 있도록 돕는다. 만일 애초에 슬라이드 윈도우 박스를 크게 만든다면 큰 객체는 탐지 할수 있을지언정 작은 객체들은 탐지하기가 어렵다는 문제가 있다.
그렇다면 object detection한다는 기준이 뭘까?
Iou를 기준으로 삼는다. 큰 슬라이드 윈도우는 예측 박스도 크게 나온다. 반면 작은 객체들의 Ground Truth는 작다. 이럴경우 Iou는 매우 작아져서 detect에 들어오지 않게 된다. (Iou = 두 박스의 교집합/ 예측박스+GT의 합집합)
그렇다고 원본 자체를 가지고 이미지피라미드를 하게 되면 수행성능이 떨어지는 단점을 가지고 있다. 이를 개선한 방법으로는 CNN에서 발생된 FM들을 가지고 Object Detection 하는 것이다.
큰 FM는 객체의 위치정보를 가진다. 이를 점점 Convolution 연산을 통해 작아지면 축약적인, 즉 추상적이고 이미지의 핵심적인 정보만 남게 된다. 4*4 FM는 작은 윈도우 슬라이드를 이용해도 그 안에 들어 있는 큰 객체들을 detect할수 있다. 즉, 32*32에서는 비교적 작은 객체를 detect하는데 유리하고 4*4 처럼 FM가 작을수록 큰 객체들의 detect가 이루어진다.
2. Anchor Box
SSD의 anchor box의 역할은 위 그림의 RPN을 화살표가 향하는 장소로 옮겨가서 Classification과 Bounding Box를 함께 수행할수 있도록 해준다. two-stage-detector에서 one-stage-detector로 변할려면 이 anchor box가 필요하다는 것이다.
anchor box는 RPN에서 영역을 추천하기 위해서 도입이 된 개념이다. 이 개념을 단지 영역추천으로 한정 지을게 아니라 더 나아가 object detection에 적용하기에 이른다. 이를 처음으로 도입한 것이 Yolo였다. 이를 뒤이어 SSD도 이 개념을 도입하게 되었다.
코끼리의 FM이 16*16이라면 총 256개의 점에서 anchor box가 적용된다. 각 점에 대해서 anchor box가 돌아 다니면서 객체에 대한 학습을 진행한다. (ground truth와 가장 많이 겹치는 anchor box가 학습을 하게된다)
20*20, 10*10, 4*4 등 각기 다른 FM에 맞는 Anchor box가 투입되어 학습을 진행하게 된다. (참고로 작은 FM일수록 큰 객체 탐지에 유리하고 반대로 큰 FM은 작은 객체 탐지에 유리)
*SSD: 원본이미지 크기가 300*300 or 512*512 로 고정됨
*back bone은 굳이 VGG 사용안해도 된다.
*논문에서는 anchor box 를 defaultbox라고 칭한다.
위 그림 SSD를 보면 각각의 FM에서 object detection을 할수 있게끔 만드는 anchor box정보들이 화살표 방향의 한곳으로 모이게 되고, 모인 정보들이 학습이 된다.
어떻게 anchor box의 정보들을 학습 시키는 걸까?
각각의 FM별로 3*3conv연산을 한다. 이때 anchor box은 4종류이다.
빨간 화살표 아래에 있는 4라는 것은 anchor box가 4개라는 뜻이다. classes는 해당 dataset의 class 갯수이다. 가령 pascal voc의 class 갯수는 20개 이므로 위 Classes 값은 20이다. 여기 +1를 해주는데 그 이유는
object detection의 경우는 background object라는 개념을 가지고 있다. 이것은 Detect할 object가 아닌 object를 의미한다.
가령 이미지에 개와 고양이, 나무, 웅덩이가 있는데, Ground truth 정보는 개와 고양이만 가지고 있다. 즉 개와 고양이를 Detect하는 경우 나머지 오브젝트들 예를 들어 나무와 웅덩이는 background가 된다. 그래서 20+1 이 된다. 끝에 있는 4의 경우는 예측 좌표값이다. xmin, ymin, xmax, ymax가 된다.
하나의 Class 당 detect된 수는 8732이다. 너무 많기 때문에 Non-Maximum Suppression을 통해서 각 class에 가장 성능이 높은 detection값을 하나 씩 뽑는다.
3*3conv 하나에 detect된 BB가 네개씩 나온다(38*38 한해서는 4개) 각 BB별로 21가지의 confidence 값이 나온다. 20개의 class에 대한 softmax 값 + Back Ground 값 까지 포함여 21개 + 4개의 좌표값 총 25개이다. X,Y는 센터 BB의 센터값, W,H은 가로 세로이다. 여기서 중요한점은 이 좌표값이 BB의 값이 아니라는 점이다. GT와 BB간의 offset값(떨어진 값, 간격, 차이 값)이 4개 좌표로 들어가게 되는 것이다.
8*8에서는 고양이가 detect 된 걸 확인 할수 있다. 파란색 박스는 매칭이 되었다 라는 뜻이다. 이 파란색 박스는 여러 anchor box들 중GT와의 IOU가 50%이상인 것을 가리킨다. 4*4에서는 강아지가 detect되어서 빨간색으로 매칭이 되었음을 알수있다. 매칭된 anchor box들은 같은 형태의 FM이 들어 왔을때 Classification 역할을 해줄수 있다. 또한 지속적으로 매칭된 박스들이 GT와 오차값이 감소할수 있도록 BB Regression 진행한다. BB Regression을 한다는 것은 BB를 예측하다는 것이다. 그래서 BB와 GT간의 offset 값이 감소하는 방향으로 학습해 나간다.
one-stage-detector의 문제점: 작은 Object detect에 대한 성능이 떨어진다. (Yolo도 마찬가지) 작은 객체 검출을 SSD에서 해결하기 위해서 위 그림의 Data Augmentation 과정을 거치게 된다.
실습은 아래 링크로 연결되어 있습니다.
2021.07.19 - [실습 note] - Single Shot Detector 실습
'Data Diary' 카테고리의 다른 글
2021-07-26(RetinaNet & EfficientDet) (0) | 2021.07.26 |
---|---|
2021-07-20(Yolo) (0) | 2021.07.20 |
2021-07-08~16(4. MMDetection의 이해와 Faster RCNN 적용 실습 )) (0) | 2021.07.17 |
2021-07-07(3. RCNN 계열 Object Detecter(RCNN, SPPNet, Fast RCNN, Faster RCNN)) (0) | 2021.07.07 |
2021-07-06(2. Object Detection과 Segmentation을 위한 주요 데이터 세트 및 OpenCV 소개) (0) | 2021.07.06 |