코딩 및 기타/이미지

R-CNN ( Regions with Convolutional Neural Networks )

정지홍 2025. 1. 20. 13:04

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개의 후보 영역이 만들어짐.
    • 2. CNN을 사용한 특징 추출
      • region proposal을 cnn에 입력하여 고차원 특징 벡터를 추출
        • 해당 특징 벡터는 각 영역의 시각적 특성을 표현하며, 이후에 분류와 경계 상자 조정에 사용됨.
      • 2-1. CNN의 동작과정
        • 2-1-1. Region proposal의 크기 조정
          • 각 후보 영역은 다양한 크기와 모양을 가지니 224 x 224의 고정된 크기로 변환한다.
            • 이 과정에서 이미지 변형 or 정보 손실 가능.
        • 2-1-2. CNN을 통한 특징 추출
          • Alexnet과 같은 cnn을 사용하여 입력된 이미지를 처리
          • 입력 이미지는 여러개의 convolution과 pooling을 거치며 feature map으로 변환하며, 마지막에는 fully connected layer에서 고차원 특징 벡터 추출.
            • 위의 과정때 region proposal이 약 2000개이니 중복연산으로 인해서 비효율적이다.
    • 3. SVM을 이용한 클래스 분류 
      • CNN으로부터 추출한 특징 벡터를 입력받아서 해당 영역에 어떤 객체가 존재하는지 분류
        • 3-1. SVM의 학습
          • r-cnn은 각 객체 클래스마다 별도의 svm 분류기를 학습 시킨다. 이때 입력으로는 cnn에서 추출된 고차원 특징 벡터를 사용함.
            • 학습 양성 데이터: 특정 객체가 포함된 region proposal
            • 학습 음성 데이터: 특정 객체가 포함 않된 region proposal
        • 3-2. 분류과정
          • 테스트 데이터( region proposal)을 입력받아서 각 SVM분류기가 해당 객체 클래스에 속하는지 여부를 결정. 
          • ex) 만약 사람클래스의 svm분류기는 해당 region proposal이 사람인지 아닌지를 판단.
    • 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조정
  • 즉, 크게 보면...... selective search로 region proposal 생성 -> cnn으로 특징 추출 -> svm으로 객체 클래스 분류 -> 경계상자의 위치와 크기를 정확히 조정