이번 시간에는 이미지에서 딥러닝을 사용한 Detection & Segmentation을 알아보도록 하겠다.
YOLO와 SSD의 공통점을 알아보도록 하겠다.
거의 같은 시기에 나왔고, 모두 feed forward를 오로지 한 방향으로 수행하는 네트워크들이다.
주요 아이디어는 각 Task를 따로 계산하지 말고 하나의 regression 문제로 풀어보자는 것이다.
거대한 CNN을 통과하면 모든 것을 담은 예측값이 한 번에 나오는 형태이다.
먼저, 입력 이미지가 있으면 이미지를 7x7 grid같이 큼지막하게 나눈다. 각 grid cell 내부에는 base Bounding Box가 존재할 것이고, 위의 예시의 경우에는 길쭉한 모양, 넓찍한 모양, 정사각형으로 3가지이다. 실제로는 3개 이상을 사용한다고 한다. 이제는 이 각 grid cell에 대해서 BBox들이 있고 이를 기반으로 예측을 수행한다.
우선 하나는 BBox의 offset을 예측하는데, 이것은 실제 위치가 되려면 base BBox를 얼마만큼 옮겨야하는지를 뜻한다. 그런 뒤 각 BBox에 대해서 Classification scores를 계산하는데 이것은 이 BBox 안에 이 카테고리에 속한 객체가 존재할 가능성을 뜻한다. 네트워크에 입력 이미지가 들어오면 7x7 grid마다 (5B + C)개의 tensor를 가진다.
여기에서 B는 base BBox의 offset(4개)과 confidence score(1개)로 구성된다. C는 C개의 카테고리에 대한 Classification Score이다.
네트워크의 입력은 이미지이고, 출력은 3-dim tensor가 된다. 그리고 이를 거대한 CNN으로 한 번에 학습시킨다.
이러한 YOLO와 SSD는 single shot method이고, 후보 base BBox들과 GT Object를 매칭시키는 방법이다.
이것은 Faster R-CNN에서 쓰는 RPN과 유사하다. 결국 둘 다 regression + classification 문제를 푸는 것이다.
R-CNN 계열, Single Shot 계열이라고 나눠도 겹치는 아이디어들이 있다.
Faster R-CNN은 RPN으로 먼저 regression 문제를 풀고 ROI 단위로 Classification을 하는 방식이다.
반면 Single Shot Method는 단 한 번의 forward pass만으로 끝낸다.
Object Detection 문제에는 아주 다양한 요소들이 있다. 예를 들어, VGG, ResNet 등 다양한 base network들을 적용해볼 수도 있다. 그리고 다양한 아키텍처를 선택할 수 있다. 여러 대분류(metastrategies)가 있다.
Faster R-CNN과 같은 Region을 기반으로 한 방법들도 있고, Single Shot Detection 기반의 방법들도 있었다.
R-FCN은 이 두 가지의 중간에 위치한다.
또한, 이미지 크기를 몇으로 할지, region proposal을 몇 개로 할지 등 다양한 하이퍼파라미터들도 있다.
Faster R-CNN 계열의 region based method는 정확도가 높긴 하지만 single shot method들보다는 속도가 느린데, single shot method들은 ROI당 별도의 연산을 요구하지 않기 때문이다.
'AI > CS231n Lectures' 카테고리의 다른 글
[CS231n] 2. Image Classification (0) | 2020.01.31 |
---|---|
[CS231n] 1. Introduction to Convolutional Neural Network (0) | 2020.01.29 |