서론
딥러닝의 발전과 함께 컴퓨터 비전 분야는 급격한 변화를 겪고 있습니다.
그중에서도 객체 탐지(Object Detection)는 이미지나 비디오에서 특정 객체를 찾아내고,
그 위치를 정확히 예측하는 중요한 과제입니다.
이 과제는 자율 주행, 영상 감시, 의료 영상 분석 등 다양한 분야에서 활용되며, 딥러닝의 주요 연구 주제 중 하나입니다.
오늘 살펴볼 논문은 R-CNN (Region-based Convolutional Neural Networks) 입니다.
R-CNN은 2014년 Ross Girshick가 주도한 연구로, 객체 탐지의 성능을 크게 향상시킨 모델입니다.
Pascal VOC 2012 데이터셋에서 mAP 가 53.3% 로 이전 최고 결과보다 30% 향상되었습니다.
이 글에서는 R-CNN의 기본 개념, 동작 원리, 수학적 배경, 그리고 한계와 개선 방안에 대해 자세히 설명하겠습니다.
배경 - 객체 탐지의 어려움
객체 탐지 문제는 단순히 이미지의 분류(classification) 문제보다 훨씬 복잡합니다.
Classification 는 이미지 전체를 대상으로 하나의 라벨을 예측하면 되지만,
객체 탐지에서는 이미지 내의 여러 객체를 각각 찾아내고, 그 위치를 정확하게 예측해야 합니다.
초기의 객체 탐지 방법은 주로 슬라이딩 윈도우(Sliding Window)와 같은 방법론을 사용했습니다.
이 방법은 이미지에서 모든 가능한 영역(윈도우)을 일일이 확인하면서 각 윈도우에 어떤 객체가 있는지를 예측하는 방식입니다. 그러나 이 접근 방식은 계산 비용이 매우 크고, 정확도가 낮다는 단점이 있습니다.
R-CNN의 주요 개념
R-CNN은 슬라이딩 윈도우 방법의 비효율성을 해결하기 위해 제안된 방법입니다.
R-CNN의 핵심 아이디어는 먼저 이미지에서 관심 영역(Region of Interest, ROI)을 추출한 후,
이 영역들에 대해 CNN을 적용하는 것입니다.
이로써 연산량을 크게 줄이면서도 높은 정확도를 달성할 수 있습니다.
R-CNN은 크게 세 단계로 이루어집니다:
- Selective Search를 이용한 후보 영역 (Region Proposals) 선정
- CNN을 이용한 Feature 추출
- SVM을 이용한 객체 분류
- 회귀 모델을 이용한 박스 조정 (Bounding Box Regression)
- Non maximum Suppression
이제 각 단계에 대해 자세히 살펴보겠습니다.
1. Selective Search를 알고리즘을 통해 후보 영역( Region Proposals ) 선정
R-CNN의 첫 번째 단계는 이미지에서 관심 영역을 찾아내는 것입니다.
여기서는 Selective Search라는 방법이 사용됩니다.
Selective Search는 이미지에서 다양한 크기와 비율의 후보 영역(Region Proposals)을 생성하는 알고리즘입니다.
Selective Search는 아래와 같은 과정을 거칩니다.
- 이미지의 각 픽셀을 비슷한 색상이나 텍스처를 기준으로 작은 영역으로 나눔
- 이 작은 영역들을 병합해가며 객체가 있을법한 위치를 점차 큰 영역(bbox)을 추천
- 2000개의 Region Proposals 를 추출한 뒤, CNN 모델에 입력하기 위해 224x224 크기로 Resize
이 방법을 통해 수천 개의 후보 영역이 생성되며, 이 중 많은 영역은 실제로 객체를 포함하지 않을 수도 있지만,
R-CNN은 이러한 모든 영역에 대해 다음 단계로 넘어갑니다.
2. CNN을 이용한 Feature 추출
Selective Search로 생성된 2000개의 Region Proposals 을 Fine tune된 AlexNet에 입력하여,
2000(=후보 영역의 수)x4096(=feature vector의 차원) 크기의 feature vector를 추출 합니다.
1) 후보 영역의 분류
후보 영역들은 이후 IoU(Intersection over Union) 값을 기준으로 Positive와 Negative 샘플로 나뉩니다.
IoU 값은 후보 영역과 실제 객체 영역(ground truth) 간의 겹치는 정도를 나타내는 지표입니다.
IoU 값이 0.5 이상이면 해당 후보 영역은 Positive Sample, 즉 객체를 포함한다고 판단됩니다.
반면, 0.5 미만이면 Negative Sample, 즉 배경으로 간주됩니다.
2) 미니 배치 구성과 모델 학습
추출된 Positive 샘플과 Negative 샘플을 바탕으로 학습을 진행하기 위해 미니 배치를 구성합니다.
일반적으로 Positive 샘플 32개, Negative 샘플 96개로 구성된 총 128개의 샘플이 하나의 미니 배치를 이루게 됩니다.
이렇게 구성된 미니 배치는 사전 학습된 AlexNet 모델에 입력되어 학습됩니다.
3) 모델의 Fine-Tuning
중요한 부분은 바로 Fine-Tuning입니다.
R-CNN 모델의 경우, 객체 탐지를 위한 모델로서 특정 도메인에 맞게 조정된(Fine-Tuned) CNN 모델을 사용합니다.
기본적으로 ImageNet 데이터셋에서 학습된 CNN 모델을 사용하되, 도메인에 맞게 추가적인 학습을 통해 미세 조정하는 과정을 거칩니다. 이를 통해 모델은 해당 도메인에 적합한 Feature Vector(특징 벡터)를 추출할 수 있게 됩니다.
Fine-Tuning을 진행할 때, 모델은 예측해야 하는 객체의 클래스 수에 배경을 포함시켜 N+1개의 클래스를 예측하도록 설계됩니다. 예를 들어, 예측해야 할 객체가 N개라면 배경까지 포함해 총 N+1개의 클래스를 고려하여 학습하는 것입니다.
4) 최종 Feature Vector 추출
Fine-Tuning된 AlexNet 모델은 최종적으로 후보 영역들로부터 Feature Vector를 추출합니다.
이 Feature Vector는 2000개의 후보 영역 각각에 대해 4096 차원의 벡터로 구성되며,
객체가 포함된 영역인지 배경인지를 구분하는 데 사용됩니다.
이러한 과정들을 통해, R-CNN 모델은 높은 정확도로 객체를 탐지할 수 있게 됩니다.
3. SVM을 이용한 객체 분류 및 회귀 모델을 이용한 박스 조정
1) Linear SVM의 역할 (단일 모델)
Linear SVM 모델은 주어진 2000x4096 Feature Vector를 입력받아 해당 영역이 특정 클래스에 속하는지를 예측하고,
그에 대한 신뢰도(Confidence Score)를 반환합니다.
이 때 Linear SVM은 이진 분류기 이진 분류기(binary classifier) 입니다.
즉, 주어진 입력이 특정 클래스에 속하는지 여부만을 판단합니다.
예를 들어, 이미지 내에 고양이가 있는지 판단하는 SVM 모델이라면, 해당 입력이 고양이인지 아닌지를 예측하게 됩니다.
* 여러 클래스에 대한 예측
객체 탐지 문제에서 N개의 클래스를 예측하려면, 각 클래스에 대한 독립적인 SVM 모델이 필요합니다. 따라서, N개의 클래스를 예측하려면 배경을 포함하여 총 N+1개의 Linear SVM 모델을 학습시켜야 합니다.
2) 학습 데이터 준비
먼저, 객체와 배경을 모두 포함하는 학습 데이터를 준비하기 위해 PASCAL VOC 데이터셋에 Selective Search 알고리즘을 적용하여 Region Proposals(후보 영역)을 추출합니다. 하지만 AlexNet 모델을 Fine-Tuning할 때와는 조금 다른 방식으로 샘플을 선택합니다.
- Positive Sample(양성 샘플)
Ground Truth Box(실제 객체가 포함된 박스)만을 Positive Sample로 정의합니다. - Negative Sample(음성 샘플)
IoU(Intersection over Union) 값이 0.3 미만인 예측 Bounding Box를 Negative Sample로 정의합니다. - 무시되는 샘플
IoU 값이 0.3 이상이지만 Positive 샘플로 간주되지 않은 경우는 학습에 포함되지 않고 무시됩니다.
이렇게 Positive 샘플 32개와 Negative 샘플 96개를 포함하여 총 128개의 샘플로 구성된 미니 배치를 생성합니다.
3) Feature Vector 추출 및 SVM 학습
구성된 미니 배치를 Fine-Tuned AlexNet 모델에 입력하여 각 후보 영역에 대한 4096차원 Feature Vector를 추출합니다. 이 Feature Vector는 각 후보 영역이 특정 객체를 포함하는지, 배경인지를 판단하는 데 사용됩니다.
각 클래스별로 준비된 Feature Vector를 Linear SVM 모델에 입력하여 학습을 진행합니다.
여기서 하나의 Linear SVM 모델은 특정 클래스에 속하는지 여부를 학습하기 때문에, SVM의 출력 유닛은 2개입니다.
즉, 해당 입력이 특정 클래스에 속하는지, 아닌지를 구분합니다.
4) Hard Negative Mining을 통한 재학습
Linear SVM 모델의 첫 번째 학습이 완료된 후,
Hard Negative Mining 기법을 적용하여 모델의 성능을 더욱 향상시킬 수 있습니다.
Hard Negative Mining은 모델이 예측에 실패하는 어려운 Negative 샘플을 찾아내어
이를 다시 학습 데이터에 포함시켜 재학습하는 기법입니다.
예를 들어 이미지에서 사람의 안면의 위치를 탐지하는 모델을 학습시킨다고 할 때, 사람의 안면은 positive sample이며, 그외의 배경은 negative sample입니다. 이 때 모델이 배경이라고 예측했으며, 실제로 배경인 bounding box는 True Negative에 해당하는 sample입니다. 반면에 모델이 안면이라고 예측했지만, 실제로 배경인 경우는 False Positive sample에 해당합니다.
이 과정을 통해 모델은 더욱 강건해지며, 특히 False Positive 오류를 줄일 수 있습니다.
False Positive란 모델이 객체가 아닌 배경을 객체로 잘못 예측하는 경우를 의미합니다.
이러한 오류를 줄이기 위해 Hard Negative Mining 기법을 사용하여 모델이 잘못 판단한 샘플들을 추가 학습시킴으로써,
더욱 정확한 객체 탐지가 가능해집니다.
4. 회귀 모델을 이용한 박스 조정 (Bounding Box Regression)
PASCAL 데이터셋에 Selective search 알고리즘을 적용하여 얻은 region proposals를 학습 데이터로 사용합니다.
이 때 별도의 negative sample은 정의하지 않고 IoU 값이 0.6 이상인 sample을 positive sample로 정의합니다.
IoU 값이 지나치게 작거나 겹쳐진 영역이 없는 경우, 모델을 통해 학습시키기 어렵기 때문입니다.
positive sample을 fine tuned된 AlexNet에 입력하여 얻은 feature vector를 Bounding box regressor에 입력하여 학습시킵니다. 추론 시 Bounding box regressor는 feature vector를 입력 받아 조정된 bounding box 좌표값(output unit=4)을 반환합니다.
1) Positive Sample 선택
PASCAL 데이터셋에 Selective search 알고리즘을 적용하여 얻은 region proposals를 학습 데이터로 사용합니다.
다른 모델 학습과 달리, 여기서는 별도의 Negative Sample(음성 샘플)을 정의하지 않습니다. 대신, 각 후보 영역에 대해 IoU(Intersection over Union) 값을 계산하고, IoU 값이 0.6 이상인 샘플만을 Positive Sample로 정의합니다.
왜 0.6이라는 기준이 중요한가요?
- IoU 값이 너무 낮은 샘플: 객체와 거의 겹치지 않기 때문에 유효한 학습 데이터로 사용하기 어렵습니다.
- IoU 값이 높은 샘플: 객체와 많이 겹치는 영역으로, 학습에 적합한 긍정적인 예시가 됩니다.
따라서, 모델은 IoU 값이 0.6 이상인 후보 영역만을 사용하여 학습됩니다.
2) Fine-Tuned AlexNet을 통한 Feature Vector 추출
선택된 Positive Sample들은 Fine-Tuned AlexNet 모델에 입력됩니다.
이 모델은 입력된 이미지를 기반으로 Feature Vector를 추출합니다.
이 Feature Vector는 이미지 내 객체의 특성을 나타내는 중요한 정보로,
후속 단계에서 Bounding Box의 정확한 위치를 예측하는 데 사용됩니다.
3) Bounding Box Regressor 학습
추출된 Feature Vector는 Bounding Box Regressor에 입력됩니다.
Bounding Box Regressor는 이 Feature Vector를 사용하여 객체의 정확한 위치를 조정하는 역할을 합니다. 이 단계에서는 객체의 경계 상자를 더욱 정확하게 예측하기 위해 Bounding Box 좌표값(output unit=4)을 학습합니다. 각 예측 값은 경계 상자의 x, y 좌표와 폭(width), 높이(height)를 나타냅니다.
- 입력: Fine-Tuned AlexNet에서 추출된 Feature Vector
- 출력: 조정된 Bounding Box 좌표값 (x, y, width, height)
4) 추론 단계
모델이 학습을 마치면, 추론 단계에서 Bounding Box Regressor는 새로운 이미지에 대해 Feature Vector를 입력받아 객체의 정확한 위치를 예측합니다. 이 과정을 통해 모델은 보다 정확한 Bounding Box를 생성합니다.
5. Non maximum Suppression
Linear SVM 모델과 Bounding Box Regressor 모델을 통해 얻은 2000개의 Bounding Box를 모두 표시할 경우, 하나의 객체에 대해 지나치게 많은 Bounding Box가 겹칠 수 있습니다. 이는 객체 탐지의 정확도를 떨어뜨릴 수 있습니다.
이를 해결하기 위해 Non-Maximum Suppression (NMS) 알고리즘을 적용하여, 비슷한 위치에 있는 중복된 Bounding Box를 제거하고 가장 적합한 Box만 선택합니다.
- Confidence Score 필터링:
- 각 Bounding Box의 Confidence Score를 확인하고, 지정된 threshold(예: 0.5) 이하의 Box를 제거합니다.
- 예시에서, Confidence Score가 0.3인 Box는 제거됩니다.
- Bounding Box 정렬 및 겹침 제거:
- 남은 Bounding Box들을 Confidence Score에 따라 내림차순으로 정렬합니다.
- 가장 높은 Confidence Score를 가진 Box와 나머지 Box들의 IoU 값을 계산합니다.
- 지정된 IoU threshold(예: 0.4) 이상 겹치는 Box들을 제거합니다.
- 예시에서, IoU threshold를 초과하는 Confidence Score가 0.81, 0.7인 Box는 제거되고 [0.9, 0.85, 0.73]만 남습니다.
- 이 과정을 반복하여 겹치는 Box들을 제거합니다.
- 최종 선택:
- 최종적으로 남은 Box들만 선택하여 반환합니다.
- 예시에서는 Confidence Score가 0.9, 0.85인 Box만 남습니다.
R-CNN의 한계와 개선
R-CNN은 당시 객체 탐지의 성능을 크게 향상시켰지만, 여전히 몇 가지 한계가 존재했습니다:
- 느린 속도 - R-CNN은 각 영역 제안마다 CNN을 반복적으로 수행하기 때문에 계산 비용이 매우 큽니다.
- 별도의 학습 과정 - feature 추출, 객체 분류, 박스 조정이 각각 독립적으로 학습되기 때문에 학습 과정이 복잡합니다.
- 공간적 정보 손실 - 영역을 고정된 크기로 Resize 하는 과정에서 원본 이미지의 공간적 정보가 손실될 수 있습니다.
이러한 한계를 해결하기 위해 Fast R-CNN, Faster R-CNN, Mask R-CNN과 같은 다양한 변형 모델들이 제안되었습니다. 이 모델들은 R-CNN의 기본 아이디어를 바탕으로 성능과 효율성을 높였습니다.
결론
R-CNN은 객체 탐지 분야에서 큰 혁신을 가져온 모델로, 딥러닝 기반의 객체 탐지 기법의 토대를 마련했습니다.
비록 몇 가지 한계가 존재하지만, 이후 발전된 모델들의 밑바탕이 된 중요한 연구입니다.
감사합니다.
참고
https://herbwood.tistory.com/5
'딥러닝 (Deep Learning) > [05] - 논문 리뷰' 카테고리의 다른 글
R-CNN, SPPNet, Fast R-CNN (0) | 2024.10.02 |
---|---|
ResNet 논문 리뷰 (2) | 2024.09.20 |
AlexNet 논문 리뷰 (0) | 2024.08.23 |
순환 신경망 (RNN) 이란? [4편] (1) | 2024.08.18 |
순환 신경망 (RNN) 이란? - BPTT [3편] (0) | 2022.03.13 |