일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ICCV 2021
- panoptic nerf
- pytorch
- 경희대
- CVPR2023
- linux
- 논문 리뷰
- 논문리뷰
- NERF
- 딥러닝
- Paper
- ICCV
- Neural Radiance Field
- 융합연구
- Vae
- paper review
- docker
- CVPR
- 파이토치
- GAN
- 논문
- IROS
- NeRF paper
- 2022
- panoptic segmentation
- Computer Vision
- 리눅스
- Python
- Deep Learning
- Semantic Segmentation
- Today
- Total
윤제로의 제로베이스
Image Segmentation Using Deep Learning:A Survey (3) 본문
Image Segmentation Using Deep Learning:A Survey (3)
윤_제로 2023. 7. 7. 12:13R-CNN
R-CNN에 대해 먼저 이해하자.
R-CNN의 기본적인 구조는 2-stage Detector이다. 첫번째로는 물체의 위치를 찾는 Region Proposal, 물체를 분류하는 Region Classification이다.
- Region Proposal : 이미지와 레이블을 투입한 후 카테고리에 무관하게 영역을 찾는다.
- pre-trained CNN : proposal된 영역으로부터 고정된 크기의 feature vector를 wrapping, crop하여 CNN에 투입.
- SVM : CNN 결과로 나온 feature map을 SVM(Support Vector Machine)을 통해 분류
- Regressor : bounding box regression
1. Region Proposal
R-CNN은 이미지를 데이터로 사용한다. 이때의 이미지 데이터를 그래프의 (V, E) 형태로 받는데 여기서 Vertex(node)는 각 이미지 픽셀이라고 생각하면 되고 Edge의 경우 각각의 vertex의 연결이 된다.
그리고 이 단계에서 R-CNN은 Selective Search를 통해 임의의 bounding box를 설정한다.
여기서 Selective Search는
- bounding box들을 random하게 많이 생성
- 계층적 그룹핑 알고리즘을 통해 merge
- 이를 바탕으로 RoI(Region of Interest)를 제안.
하는 방식으로 이루어진다.
2. CNN(AlexNet)
여기서 뽑은 RoI를 CNN에 넣어주기 위해서 Bounding box들을 동일한 사이즈로 wraping한다.
3. SVM(Support Vector Machine)
CNN으로부터 feature가 추출되고, Training label이 적용되고 나면 Linear SVM을 이용하여 classification을 진행한다. SVM은 분류를 할 때 분류하고자 하는 vector들을 나누는 기준의 margin이 최대가 되도록 할 때를 구하는 것이다. SVM으로 진행한 이유는 저자의 경험상!
4. Bounding Box Regression
이 과정은 원래의 ground truth와 region proposal이 더 잘 되도록 해주는 목적이다.
단점은 일단 과정이 너무 복잡하다. 더불어 시간도 오래 걸린다. (Selective search 알고리즘 자체가 CPU에서 돌아가는 알고리즘이라 배로 걸린다고 한다.) + CNN은 고정이 되어 있고 그 밖에서 SVM이나 Regressor가 동작하기 때문에 end-to-end학습을 할 수 없다. CNN을 업데이트할 수도 없다.
Fast R-CNN
그래서 위의 단점을 보안하고자 나온 것이 Fast R-CNN이다.
가장 큰 특징은 기존의 R-CNN에서 CNN과 Region Proposal의 순서를 바꾸는 것이다.
- input image를 CNN을 먼저 돌리고
- 이때의 feature map을 가지고 region proposal을 진행한다.
- 이후 추출된 RoI를 RoI pooling 기법을 사용해서 각 region들에 대해 feature에 대한 정보를 추출한다.
- classification과 regression을 진행한다. 여기서는 기본적인 CNN을 통해 softmax layer를 거쳐서 각 클래스에 대한 확률값으로 구한다.
여기서 처음 등장한 RoI Pooling을 보자면 classification을 위해서는 fully connected layer를 쓰게 된다(분류). 하지만 fully connected layer의 경우 input size가 고정되게 되므로 RoI영역에 max pooling을 적용하여 크기를 조절한다 생각하면 될 것 같다.
앞서 언급했던 R-CNN의 단점 중 하나였던 속도 면에서 축소를 했다. 여기서의 축소는 selective search에서 줄인 것 보다는 각각의 RoI가 CNN에 들어가야했던 것과 달리 이미지를 CNN에 먼저 넣고 이를 통해 얻은 feature map으로 RoI를 사용하기 때문에 빠르게 동작할 수 있게 되었다.
두번째로는 end-to-end 학습이 가능해졌다.
Faster R-CNN
하지만 R-CNN과 Fast R-CNN역시 여전히 Region Proposal이 CPU에서 동작하기 때문에 속도가 느리다. 그래서 이 점을 보완하여 Faster R-CNN이 등장하게 된다. 여기서 Region Proposal이 GPU 연산이 가능하도록 하는 RPN(Regional Proposal Network)를 제안한다. 이를 통해 모든 과정을 end-to-end로 학습이 가능하게 만들었다.
과정은 아래와 같다.
- input image의 feature를 추출한다.
- 얻은 feature map을 RPN에 적용하여 위치를 찾는다.
- RPN의 결과를 기반으로 classification과 regression을 진행한다.
RPN에 대해 간략하게 살펴보자면
- intermediate layer에서는 3*3*256 커널을 사용한 후
- reg layer에서 1*1*4k (k anchor box 개수)크기의 커널을 통해 bbox의 위치와 크기를 학습하고 예측한다. (linear function)
- cls layer 에서 1*1*2k 크기의 커널을 사용하여 bbox 안에 있는 것이 foreground인지 background인지 학습하고 예측한다. (sigmoid function)
input feature map에 anchor를 만든 후 anchor를 중심으로 하는 bbox를 만든다. 그 후 실제 ground truth bbox와 bbox와 IoU가 0.7 이상이면 foreground(1) 0.3 미만이면 무시(0), 그 외는 background(-1)로 지정한다.
Mask R-CNN
Faster R-CNN의 RPN에서 얻은 RoI(Region of Interest)에 대해서 bounding box coordinates, associated classes, binary mask를 계산해낸다.
Faster R-CNN에 mask branch 구조가 추가된 것이라 생각하면 된다. (약간 Faster R-CNN에다가 뒤에 FCN을 더해서 Instance Segmentation을 한 느낌?) 이때 mask branch와 classification branch를 따로 두어 class별로 mask를 따로 생성한다.
Faster R-CNN과의 또 다른 차이점은 RoIAlign이다. RoI Pooling의 경우 상황에 따라 아예 특정 feature가 반영되지 않는 경우도 발생하게 된다. 그래서 이를 보존하고자 사용하는 것이 RoIAlign이다.
training 과정
- Input image pre-processing
- feature pyramid by backbone network a(ResNet-FPN backbone Network)
- region proposal by RPN
- Select best RoI by Proposal layer
- feature map by RoI Align layer
- Classification and Bounding box regression by Faster R-CNN
- Mask segment by Mask branch
- Post-processing of masks
Path Aggregation Network(PANet)
Mask R-CNN과 FPN을 기반으로 만들어진 모델이다.
위 그림 처럼 FPN을 기반으로 feature extraction을 진행한다.
그런 다음 Mask R-CNN처럼 adaptive feature pooling layer가 3개의 branch에 입력으로 들어가게 된다.
첫번째와 두번째로는 Fully connected layer에 들어가서 각각 class 와 bbox를 predict하고, 세번째로는 object mask를 predict하기 위해서 FCN에 입력으로 들어가게 된다.
Instance-aware Semantic Segmentation via Multi-task Network Cascades
3개의 multi-task network으로 구성되어 있는데 differentiating instances, estimating masks, categorizing objects가 있다.
MaskLab
instance segmentation model로 detection 모델을 semantic과 direction features를 활용하여 만들었다.
정확한 bbox로 localization을 한 후 각각의 RoI를 활용하여 instance 마다의 mask를 따낸다.
'Self Paper-Seminar > Semantic Segmentation' 카테고리의 다른 글
Image Segmentation Using Deep Learning:A Survey (2) (0) | 2023.07.05 |
---|---|
Image Segmentation Using Deep Learning: A Survey (1) (0) | 2023.07.04 |
Image Segmentation Using Deep Learning: A Survey 에 들어가며 (0) | 2023.07.04 |