RCNN의 주요 문제점
RCNN은 2000개의 Region 영역 이미지가 CNN으로 입력되고, 이미지 크기도 동일한 사이즈로 맞춰 줘야 하기 때문에 Object Detection 수행 시간이 오래 걸립니다. 기존 CNN의 고정된 입력 크기를 맞춰주기 위하여 crop, wrap을 적용합니다.
crop과 wrap은 얼핏봐도 문제점이 많아 보입니다. crop을 적용하면 crop 된 구역만 CNN을 통과시키기 때문에 전체 이미지의 손실이 발생합니다. warp 같은 경우에도 이미지를 확대하면 이미지가 옆으로 퍼진 채로 CNN을 통과하기 때문에 정보 변형이 일어납니다.
여기서 의문이 듭니다. 왜 사이즈를 고정해야 되는지?
CNN은 서로 다른 사이즈의 Image를 수용하지 않는데, 가장 큰 이유는. 사실 Convolution 필터들은 Sliding window 방식으로 작동하기 때문에, 크기나 비율에 관계가 없는데, FC Layer 이전에 CNN을 1차원 형태로 길게 펴주는 Flatten Fully Connection Input의 크기가 고정되어야 하기 때문입니다.
그럼 처음에 사이즈 조정을 하지 말고 CNN과 FC Layer 사이에 사이즈를 맞춰주는 Layer를 달면 되는 거 아닌가?라는 실험으로 아래 그림처럼 만들어진 게 SPPNet입니다.
SPP는 오래전부터 컴퓨터 비전 영역에서 활용된 Spatial Pyramid Matching 기법에 근간해서 만들어졌습니다.
SPM(Spatial Pyramid Matching)
Bag of words
원래 NLP에 쓰이는 기법인데 글에 포함된 단어들의 분포를 보고 이 문서가 어떤 종류인지 판단하는 기법입니다. 예를 들어 '농구', '체육관', '축구', '야구' 등의 단어가 많이 나온다면 '스포츠'로 분류됩니다.
- 피쳐를 추출한다.
- 어느 집단이 군집되어있는지 확인한다.
하지만 바다같이 별 특징이 없고 푸른 배경만 있는 곳은 무엇인지 분류하기 힘듭니다. 하늘과도 헷갈릴 수도 있습니다.
SPM
위의 문제점을 보완하기 위해 나왔습니다. 바다를 배경으로 생각해보면 아래 모래사장이 있고, 중간지점에 바다, 상단부에 하늘 이런 식으로 있으면 바다로 분류할 수 있습니다. 이 처럼 여러 가지 영역으로 Feature들의 군집을 보는 것입니다.
위의 구조와 같이 어느 크기의 이미지라도, 영역만 동일하게 나누어 Pooling을 하면 동일한 이미지 길이가 나옵니다.
이것이 SPPNet의 발판이 되었습니다.
RCNN에 SPPNet 적용
먼저 Conv Layer들의 Feature Map들을 입력받아, 4x4, 2x2, 1x1 세 가지 영역으로 받습니다. 이 영역을 피라미드라고 부릅니다. 해당 예시는 3개의 피라미드를 받은 것입니다. 이런 구조로 만들어 주면 어떠한 이미지 크기가 나온다고 해도 여기 피라미드에서 똑같은 크기로 만들어집니다. 최종 아웃풋은 (4x4 + 2x2 + 1x1) x 256(채널의 개수)입니다.
'컴퓨터비전' 카테고리의 다른 글
[딥러닝] Faster R-CNN 논문 리뷰 (1) | 2022.03.24 |
---|---|
[딥러닝] Fast R-CNN 논문 리뷰 (0) | 2022.03.23 |
[딥러닝] R-CNN 논문 리뷰 (0) | 2022.03.23 |
[딥러닝] Object Detection이란? (0) | 2022.03.22 |
[딥러닝] 가중치 초기화(Weight Initialization) (0) | 2022.03.13 |
댓글