코딩하는 해맑은 거북이
[컴퓨터비전] Object Detection - 2 Stage Detectors 본문
본 게시물의 내용은 '부스트캠프 AI Tech - Object Det(송원호)' 강의를 듣고 작성하였다.
해당 글은 Object Detection - 2 Stage Detectors인 아래의 4가지를 다룬다.
📌 R-CNN
📌 SPPNet
📌 Fast R-CNN
📌 Faster R-CNN
앞서 해당 블로그에서 기존에 Object Detection의 Matrix를 정리한 내용이 있어 링크를 첨부한다.
📌 R-CNN
🔷 Extract Region Proposals
- Sliding Window
고정된 크기의 window를 이미지 상에서 슬라이딩 시키면서 모든 영역을 탐색하는 방법 (요즘은 잘 사용되지 않음)
- Selective Search
최소 단위의 픽셀 별로 각 영역을 나눈 후, 비슷한 인접 영역들을 합치는 방법
- Selective Search에서 사용하는 segmentation 방법
https://blog.naver.com/laonple/220925179894
- Greedy Algorithm 사용한 영역 병합 방법
https://blog.naver.com/laonple/220930954658
🔷 학습 방법
- 입력 이미지 받기
- Selective Search를 통해 약 2000개의 RoI(Region of Interest)를 추출
- RoI(Region of Interest)의 크기를 조절해 모두 동일한 사이즈로 변형
- CNN의 마지막인 FC layer의 입력 사이즈가 고정이므로 이 과정 수행
- RoI를 CNN에 넣어, feature를 추출
- 각 region마다 4096-dim feature vector 추출 (2000x4096)
- Pretrained AlexNet 구조 활용
- AlexNet 마지막에 FC layer 추가
- 필요에 따라 Finetuning 진행
- 분류와 회귀 진행
- CNN을 통해 나온 feature를 SVM에 넣어 분류 진행
- Input : 2000 x 4096 features
- Output : Class (C+1) + Confidence scores => C+1 : 클래스 개수(C개) + 배경 여부(1개)
- CNN을 통해 나온 feature를 regression을 통해 bounding box를 예측
- CNN을 통해 나온 feature를 SVM에 넣어 분류 진행
🔷 단점
1) 2000개의 Region을 각각 CNN 통과
2) 강제 Warping, 성능 하락 가능성
3) CNN, SVM classifier, bounding box regressor, 따로 학습
4) End-to-End X
📌 SPPNet
>기존 R-CNN의 한계점
|
SPPNet은 R-CNN과 달리 입력 이미지가 먼저 CNN을 거치고 RoI를 추출한 후, 각 RoI의 크기를 고정된 크기의 벡터로 변환하여 FC Layer로 전달한다.
🔷 Spatial Pyramid Pooling
Spatial Pyramid Pooling은 서로 크기가 다른 RoI들을 고정된 크기의 vector로 변환해주는 역할을 한다.
아래 그림과 같이 각 RoI를 (4, 4), (2, 2), (1, 1) 크기의 영역으로 나눠서 각 영역에 대해 pooling을 진행한다.
🔷 단점
1) 2000개의 Region을 각각 CNN 통과 (해결!)2) 강제 Warping, 성능 하락 가능성 (해결!)
3) CNN, SVM classifier, bounding box regressor, 따로 학습
4) End-to-End X
📌 Fast R-CNN
🔷 학습 방법
- 이미지를 CNN에 넣어 feature 추출 (CNN을 한 번만 사용) → VGG16 사용
- RoI Projection을 통해 feature map 상에서 RoI를 계산
- RoI Pooling을 통해 일정한 크기의 feature가 추출
- 고정된 vector얻기 위한 과정
- SPP 사용
- pyramid level: 1
- Target grid size: 7x7
- Fully connected layer 이후, Softmax Classifier과 Bounding Box Regressor
- 클래스 개수: C+1개 → 클래스 (C개) + 배경 (1개)
🔷 Hierarchical sampling
R-CNN의 경우 이미지에 존재하는 RoI를 전부 저장해 사용하였다. 즉, 한 배치에 서로 다른 이미지의 RoI가 포함된다.
Fast R-CNN의 경우 한 배치에 한 이미지의 RoI만을 포함한다. 즉, 한 배치 안에서 연산과 메모리를 공유할 수 있다.
🔷 단점
1) 2000개의 Region을 각각 CNN 통과 (해결!)2) 강제 Warping, 성능 하락 가능성 (해결!)3) CNN, SVM classifier, bounding box regressor, 따로 학습 (해결!)
4) End-to-End X
📌Faster R-CNN
🔷 학습 방법
- 이미지를 CNN에 넣어 feature maps 추출 (CNN을 한 번만 사용)
- RPN을 통해 RoI 계산
- 기존의 selective search 대체
- Anchor box 개념 사용
🔷 Region Proposal Network (RPN)
- CNN에서 나온 feature map을 input으로 받음. (𝐻: 세로, 𝑊: 가로, 𝐶: 채널)
- 3x3 conv 수행하여 intermediate layer 생성
- 1x1 conv 수행하여 binary classification 수행
- 2 (object or not) x 9 (num of anchors) 채널 생성
- 4 (bounding box) x9 (num of anchors) 채널 생성
🔷 NMS
- 유사한 RPN Proposals 제거하기 위해 사용
- Class score를 기준으로 proposals 분류
- IoU가 0.7 이상인 proposals 영역들은 중복된 영역으로 판단한 뒤 제거
🔷 단점
모두 해결
<Summary>
'AI' 카테고리의 다른 글
[컴퓨터비전] Object Detection - 1 Stage Detectors (0) | 2023.05.03 |
---|---|
[컴퓨터비전] Object Detection - Neck (0) | 2023.05.03 |
[논문리뷰] PGGAN (Progressive Growing GAN) (0) | 2023.04.26 |
[컴퓨터비전] 3D Understanding (0) | 2023.04.06 |
[컴퓨터비전] Multi-modal (0) | 2023.04.05 |