0) Object Detection
Semantic segmentation 과 밑의 두 instance segmentation, Panoptic segmentation이 다른점.
-> Semantic segmentation 은 같은 클래스내의 Instance는 따로 구분하지 않지만 밑의 두 방법은 같은 class더라도 Instance를 구분한다.
밑의 두 방법에는 classification 과 Box localization 이 들어간다. 이것은 Semantic segmentation 보다 어려운 문제에 속하고 이렇게 classification + Box localization 이 들어간 것을 Object Detection이라고 한다.
Object Detection 적용분야
- 자율주행
- OCR(Optical Charactor Recognition)
이러한 Object Detection 은 크게 Two-stage Detector와 Single-stage detector의 2가지 방향으로 발전하였다.
0 - 1) 과거의 Object Detection 방법
1. Gradient-based detector
- 경계선을 특징으로 한 detector
2. Selective search
- 다양한 물체 후보군에 대해 영역을 특정해서 제안하는 방법.
- 1. Over-segmentation: 색깔별로 잘게 변환
- 2. Iteratively merging similar regions: 비슷한 영역은 다시 합친다. 이 때 기준을 정한다.
- 3. Extracting candidate boxes from all remaining segmentations
1) Two -stage detector
1. R-CNN
작동 순서
- 1. 먼저 Input 으로 image를 넣는다.
- 2. 그것을 바탕으로 region proposals를 뽑는다. 이 논문에서는 약 2000개를 뽑았다.
- 3. 그 후 region 을 사이즈에 맞게 warp해주고 CNN에 넣어준다. 이 때 CNN은 미리 학습되어있는 모델을 사용한다.
- 4. 마지막으로 classifier가 분류를 해주고 SVM을 사용해서 분류한다.
이러한 R-CNN의 특징
1. 느리다. -> 2000개의 region proposals를 각각 CNN에 넣어줘야 하기 때문이다.
2. region proposals를 뽑을 때 NN을 사용하지 않는다. -> design 된 알고리즘(selective search)을 사용하기 때문에 학습을 통한 성능향상에 한계가 있다.
2. Fast R-CNN
1. 먼저 CNN에서 feature map을 뽑는다. 이 때 warping 은 하지 않아도 된다.
2. RoI pooling은 한 번 뽑은 feature map을 재활용한다. Region propsal이 제시한 물체의 후보 위치를 의미하고 RoI pooling은 fixed dimension을 가지고 resize한다.
3. 그 후 더 정확한 Bounding Box 위해 Bounding Box Regression을 수행하고 classification을 수행한다.
Fast R-CNN의 특징
1. R-CNN보다는 약 18배의 성능이 더 좋게 나왔다.
2. 하지만 여전히 region proposals를 알고리즘을 사용해서 선정했기 때문에 data로만 성능을 올리는데는 한계가 있었다.
3. Faster R-CNN
지금까지 region propsals를 알고리즘으로 뽑았는데 Faster R-CNN은 Neural Network 기반의 end-to-end model이다.
먼저 IoU라는 개념을 알고가자.
IoU
IoU는 두영역의 Overlap 을 측정하는 기준을 제시한다.
여기서 IoU는 두영역의 합집합 분의 교집합이다.
Anchor Boxes
Anchor Boxes 란 각 위치에서 발생할 것 같은 비율과 Scale이 다른 Box 들을 미리 정해놓은 후보군을 말한다. 이 모델에서는 9개의 Anchor box를 사용하였다. 또 3개의 Scale, 3개의 aspect ratio덕에 다양한 크기의 Box 가 출현가능하다.
여기서 학습의 잘된 정도의 기준을 정하기 위해 IoU를 사용한다.
먼저 Fast R-CNN과 같이 Feature map을 미리 뽑는다. 그리고 RPN(Region Proposal Network)가 propsal을 제안해준다. 그리고 이러한 proposal을 RoI pooling 해주고 classification 과 Bounding Box Regression을 수행한다.
RPN을 자세히 보자.
위에서 뽑힌 Feature map을 바탕으로 sliding window 방식으로 다니며 k개의 anchor Box를 뽑는다.
이 때 먼저 256차원의 feature vector를 추출한다. 그리고 4개의 변수를 가진 Box후보들을 생성하는 reg layer branch와 그것이 Object 인지 Non-Object인지 판단하는 2개의 변수를 가지는 cls layer branch 로 나눠진다.
이 때 왜 각각 4개 2개의 변수를 가질까?? 박스의 경우 위치와 폭, 길이 의 4개의 변수가 필요하고, 2개는 Object 인지 아닌지 판단해야하기 때문이다. 여기서 cls layer는 CE loss를 사용하고 reg layer는 regression loss를 한다.
그렇다면 의문점이 들 수 있다. 왜 박스를 뽑을 때 제대로 뽑지 않고 뽑고 나서 다시 위치를 조정하는 Regression을 할까?? 만약 k개의 anchor Box를 굉장히 많이 뽑아 촘촘히 하면 정확히 맞출 수 있을 것이다. 하지만 이는 계산할 양이 많아져 계산속도가 떨어진다. 따라서 적당한 양만 뽑고 Regression으로 조정해주는 것이다.
이제 이러한 RPN에서 anchor Box를 뽑으면 엄청나게 많이 중복된 Bounding Box가 생기게 된다. 이제 이것을 필터링해야하는데 이 때 쓰이는 것이 NMS(Non Maximum Supression)이다.
NMS
NMS 알고리즘은 각 오브젝트의 검출 결과에 대해 confidence score를 계산한 후, 이를 기준으로 중복되는 오브젝트를 제거합니다. 이를 위해 각 오브젝트의 bounding box(경계 상자)와 confidence score를 사용하여 다음과 같은 과정을 거칩니다.
- 가장 높은 confidence score를 가진 오브젝트를 선택합니다.
- 선택된 오브젝트와 IoU(Intersection over Union) 값이 높은 다른 오브젝트(중복되는 오브젝트)를 제거합니다.
- 1~2번 과정을 반복하여 중복되지 않는 오브젝트들만 최종 결과로 남깁니다.
이러한 방식으로 NMS 알고리즘은 오브젝트 검출 결과를 정확하게 필터링하여 중복되거나 불필요한 결과를 제거하고, 보다 정확하고 신뢰성 높은 검출 결과를 얻을 수 있게 합니다.
이제 3개의 R-CNN을 비교해보자.
먼저 R-CNN은 별도의 알고리즘으로 Region Proposal을 뽑았고 CNN을 사용했지만 미리 train된 모델을 사용하였다.
Fast R-CNN은 하나의 Feature map을 뽑으면 여러개 물체를 탐지가능하게 해서 CNN 부분을 학습가능하게 만들었다. 하지만 여전히 알고리즘으로 region propsal을 뽑는 문제점이 있다.
Faster R-CNN은 region propsal도 Neural Network로 학습 시켜 end to end model이다.
2) Single-stage detector
two-stage detector와 비교하면 one-stage detector는 정확도를 포기하고 속도를 올려 real time detection이 가능하게 했다. 이를 RoI pooling을 없앰으로써 구현하였다.
1. YOLO
CNN(Semantic Segmentation, Detection)
1) Semantic Segmentation 이미지의 모든 pixel이 어떤 label에 속하는지 다루는 것. 지금까지 배운 CNN의 구조는 input이 들어오면 convolution 연산을 하고 그 후 denselayer를 통과해서 결과를 보는 식이었다. 그
ltsgod.tistory.com
2. SSD
SSD는 YOLO의 단점을 보완했다. SSD는 중간 feature map의 크기에 따라 각 해상도에 맞는 Bounding Box를 출력할 수 있게 했다.
위 그림을 보면 해상도에 따라 Bounding Box의크기가 다른것을 알 수 있다.
위에서 보면 각 feature map 마다 몇개의 anchor Box가 존재하는지 계산할 수 있다.
3) Two-stage VS one-Stage
Single-stage는 RoI를 없애 모든 영역의 loss를 계산하고 이 때 일정 gradient가 발생한다. 모든 Single-stage의 문제점은 배경이 넒은데 그 부분에 박스가 많이 있어 class unbalance 문제가 있다는 것이다.
이것을 해결 하기 위해 Focal loss 가 제시되었다.
1. Focal loss
Focal loss는 Cross Entrophy의 확장 버전이다. 크로스 엔트로피 앞에 수식을 붙이는데 이는 감마의 정도에 따라 휘는 정도가 바뀐다. 이것이 의미하는 것은 만약 잘못 판별된 것은 더 강하게 주어 학습이 일어나게 하고 맞춘것은 작은 weight를 주어 학습이 덜 일어나게 하는 것이다.
따라서 위에서 배경같은 곳에 Bounding Box가 있다면 학습이 더 강하게 일어나는 것이다.
그리고 같은 논문에서 RetinaNet 이라는 것도 제시한다.
2. RetinaNet
Retina Net은 U-Net과 비슷하다. 다만 concat이 아니라 그냥 add한다. SSD랑 비슷한 속도를 보여준다.
4) Detection with Transformer
Transformer 가 NLP에서 나오면서 이미지를 Transformer 를 이용하려는 시도가 많이 일어나고 있다. 우리는 Facebook 에서 만든 DETR이라는 모델을 간단하게 봐보자
DETR(DEtection TRansformer)
그리고 요즘에는 Bounding Box를 regression을 하지 않는 방식도 연구되고 있다 .예를들면 물체의 중심점을 찾아 그 기준으로 Box 를 만드는 형식으로 말이다.
'AI > CV' 카테고리의 다른 글
Instance Panoptic Segmentation (0) | 2023.03.31 |
---|---|
CNN Visualization (0) | 2023.03.30 |
Sementic Segmentation(FCN, U-Net, DeepLab) (1) | 2023.03.27 |
Computer Vision 개요 (0) | 2023.03.27 |
Annotation Data Efficient Learning (0) | 2023.03.27 |