
R-CNN ( Regions with Convolutional Neural Networks )
- 이미지에서 객체를 탐지하는 모델이다.
- selective search를 활용하여, 이미지에서 잠재적인 객체 위치를 후보 영역( region proposals )로 분리하고, CNN을 이용해서 각 영역을 분류 및 경계 상자 조정을 수행한다.
- 장점
- 딥러닝 기반으로 높은 객체 탐지 정확도를 제공한다.
- pretrained cnn으로 학습 데이터 부족 문제를 해결한다.
- 단점
- 속도 , 복잡한 학습과정 , 메모리 요구량
- R-CNN이후의 발전
- Fast R-CNN
- Faster R-CNN
- Mask R-CNN
- 작동원리.
- 1. Region Proposal 생성 ( selecticve search에 의해서...)
- 입력 이미지에서 객체가 있을 가능성이 높은 영역( region proposal )을 추출
- 전체 이미지를 탐색하는것이 아니라, 후보 영역만을 검토해서 연산량을 줄이고 탐지 정확도도 높임.
- 장점 : 후보 영역을 생성하는 과정에서 이미지의 의미론적 특성을 반영
- 단점: 알고리즘이 느리며, 많은 region proposal이 생성되니 비효율적
- 1-1. 초기화 단계
- 1-1-1. 입력 이미지를 여러 작은 초점 영역으로 분할
- 1-1-2. 초점영역은 색상,텍스처,크기,모양 등을 기준으로 비슷한 픽셀끼리 묶음.
- 이때, Felzenszwalb and Huttenlocher의 Segmentation 알고리즘이 사용됨.
- 1-2. 병합단계
- 초접 영역을 유사도 기준으로 병합하며, 점진적으로 더 큰 영역을 만듬.
- 유사도 기준
- 색상 히스토그램 유사도 : 병합하려는 두 영역의 색상 분포가 얼마나 비슷한가?
- 텍스처 히스토그램 유사도 : 두 영역의 표면 패턴이 얼마나 비슷한가?
- 크기 유사도 : 두 영역의 면적이 얼마나 비슷한가?
- 윤관선 유사도 : 병합된 영역의 경계가 얼마나 부드러운가?
- 유사도 기준
- 초접 영역을 유사도 기준으로 병합하며, 점진적으로 더 큰 영역을 만듬.
- 1-3. region proposal 생성
- 병합과정을 반복하여, 다양한 크기와 모양의 후보 영역(region proposal)을 생성.
- 일반적으로 1개의 이미지당 약 2000개의 후보 영역이 만들어짐.
- 병합과정을 반복하여, 다양한 크기와 모양의 후보 영역(region proposal)을 생성.
- 2. CNN을 사용한 특징 추출
- region proposal을 cnn에 입력하여 고차원 특징 벡터를 추출
- 해당 특징 벡터는 각 영역의 시각적 특성을 표현하며, 이후에 분류와 경계 상자 조정에 사용됨.
- 2-1. CNN의 동작과정
- 2-1-1. Region proposal의 크기 조정
- 각 후보 영역은 다양한 크기와 모양을 가지니 224 x 224의 고정된 크기로 변환한다.
- 이 과정에서 이미지 변형 or 정보 손실 가능.
- 각 후보 영역은 다양한 크기와 모양을 가지니 224 x 224의 고정된 크기로 변환한다.
- 2-1-2. CNN을 통한 특징 추출
- Alexnet과 같은 cnn을 사용하여 입력된 이미지를 처리
- 입력 이미지는 여러개의 convolution과 pooling을 거치며 feature map으로 변환하며, 마지막에는 fully connected layer에서 고차원 특징 벡터 추출.
- 위의 과정때 region proposal이 약 2000개이니 중복연산으로 인해서 비효율적이다.
- 2-1-1. Region proposal의 크기 조정
- region proposal을 cnn에 입력하여 고차원 특징 벡터를 추출
- 3. SVM을 이용한 클래스 분류
- CNN으로부터 추출한 특징 벡터를 입력받아서 해당 영역에 어떤 객체가 존재하는지 분류
- 3-1. SVM의 학습
- r-cnn은 각 객체 클래스마다 별도의 svm 분류기를 학습 시킨다. 이때 입력으로는 cnn에서 추출된 고차원 특징 벡터를 사용함.
- 학습 양성 데이터: 특정 객체가 포함된 region proposal
- 학습 음성 데이터: 특정 객체가 포함 않된 region proposal
- r-cnn은 각 객체 클래스마다 별도의 svm 분류기를 학습 시킨다. 이때 입력으로는 cnn에서 추출된 고차원 특징 벡터를 사용함.
- 3-2. 분류과정
- 테스트 데이터( region proposal)을 입력받아서 각 SVM분류기가 해당 객체 클래스에 속하는지 여부를 결정.
- ex) 만약 사람클래스의 svm분류기는 해당 region proposal이 사람인지 아닌지를 판단.
- 3-1. SVM의 학습
- CNN으로부터 추출한 특징 벡터를 입력받아서 해당 영역에 어떤 객체가 존재하는지 분류
- 4. bounding box 회귀
- svm분류기를 통해서 특정 객체가 있는 것으로 분류된 region proposal의 경계 상자를 더 정확하게 조정한다.
- Bounding box 회귀의 과정
- 4-1. 회귀 모델 학습
- cnn으로부터 추출된 특징 벡터를 입력 받아서 경계상자를 조정하는 회귀 모델을 학습
- 학습 데이터 : bounding box와 초기 region proposal간의 차이
- 회귀 목표 : bounding box의 중심 좌표,너비,높이를 조정
- 4-2. bounding box 조정
- 테스트 데이터로 학습된 회귀모델을 적용해서 경계상자를 조정
- 4-2. bounding box조정
- 4-1. 회귀 모델 학습
- 1. Region Proposal 생성 ( selecticve search에 의해서...)
- 즉, 크게 보면...... selective search로 region proposal 생성 -> cnn으로 특징 추출 -> svm으로 객체 클래스 분류 -> 경계상자의 위치와 크기를 정확히 조정
'코딩 및 기타 > 이미지' 카테고리의 다른 글
| Anchor box (0) | 2025.01.22 |
|---|---|
| fast R-CNN ( Fast Region-based Convolutional Neural Network ) (0) | 2025.01.21 |
| 투영 변환 , 원근 투영의 수학적 모델 (1) | 2025.01.20 |
| coordinate system ( world , camera , pixel , normalized ) (0) | 2025.01.19 |
| segNet (0) | 2025.01.19 |