코딩 및 기타/이미지

fast R-CNN ( Fast Region-based Convolutional Neural Network )

정지홍 2025. 1. 21. 12:59

conv feature map이란?

  • CNN에서 이미지 데이터를 처리한 결과로 얻어지는 다차원 배열이다.
    • 이는 입력 이미지의 시각적 패턴과 특징을 추출한 정보를 담고 있다.
      • 초반 레이어는 저수준 특징(선,모서리,텍스처 등)을 추출한다.
      • 이후 레이어는 고수준 특징(형태 , 구조 , 객체의 일부 등)을 추출한다.
        • 이러한 특징맵은 원본 이미지의 중요한 정보만 유지하면서 크기를 작게 만든다.
          결과적으로 계산 비용이 줄어듬.
    • 입력이미지로 H x W x C ( 높이 , 너비 , 채널 수)를 주면 결과물인 conv feature map은 H' x W' x D이다. (원본 이미지보다 축소된 높이와 너비 , 특징 채널 수 )
    • 만약 1024 x 760크기의 이미지가 들어오면, 32 x 24 크기의 conv feature map을 만든다.

공유된 conv feature map이란?

  • 이는 fast r-cnn에서 사용하는 개념이다.
  • image 전체를 한번만 cnn처리하여, conv feature map을 만든다.
    • 해당 feature map을 기반으로 각 ROI를 추출하고 처리한다.
      • 결과적으로 ROI마다 CNN을 다시 실행하는 것이 아니라, conv feature map을 재사용하니 계산 비용이 감소.

ROI Pooling

  • conv feature map에서 다양한 크기의 roi를 고정된 크기의 feature map으로 변환하는 단계
  • fast r-cnn에서 원하는 위치regions의 feature를 max pooling하기 위한 layer이다.
  • 핵심 역할
    • 1. conv feature map에서 ROI영역에 해당되는 부분을 추출
    • 2. 다양한 크기의 ROI를 고정 크기로 변환 ( ex) 7 x 7 , 14 x 14 )
    • 3. 고정 크기의 feature map은 fully connected layer로 전달되어 객체 탐지와 박스 좌표 회귀에 사용

 


ROI Pooling 과정

  • 1. conv feature map 상의 ROI 매핑
    • 1-1. 원본 이미지에서 지정된 ROI는 픽셀 단위의 좌표로 제공된다.
      • 픽셀 단위의 좌표 예시 :  [ Xmin , Ymin , Xmax , Ymax ]
    • 1-2. conv feature map은 원본 이미지보다 크기가 작으니, ROI의 좌표를 conv feature map에 맞게 축소한다.
      • 축소 비율은 입력 image 크기 대비 conv feature map크기로 계산...
        • ex) origin image 224 x 224이며 con featrue map 14 x 14라면, 축소 비율은 16 : 1이다.
    • 예시...
      • 예시에 대한 결과는  conv feature map 상의 ROI는 14x14에서 [3,3]부터 [10,10]까지 이다.

그리고 위의 결과를 좌표 근사화를 위해 정수 좌표로 변환... [ 3, 3 , 10 ,10 ]

 

 

  • 2. ROI를 고정 크기로 변환한다.
    • ROI Pooling 영역은 conv feature map상의 매핑된 ROI를 고정된 크기로 변환한다.
    • 2-1. ROI를 격자grid로 나눔.
      • ROI를 k x k크기의 격자로 분할함.  
      • 각 격자는 conv feature map상에서 크기가 일정하지 않을 수 있다.
        • ex) 28 x 28 크기의 ROI를 7 x 7로 나누면, 각 격자는 4x4크기를 가짐.
    • 2-2. 각 격자에서 max pooling을 수행한다.
    • 2-3. 모든 격자에 대해서 max pooling을 수행하면 k x k 크기의 고정된 feature map이 생성됨.
    • ex)
      • 28 x 28의 roi를 7 x 7크기의 격자로 나눈다면, 각각의 격자는 4 x 4의 크기를 가짐.
        결국 7 x 7 크기의 고정된 feature map을 생성한다.

 

 

 

 


식 1

 

식 2
식 3

Classification Loss

  • ROI에서 예측된 클래스와 실제 클래스간의 차이를 계산하여 모델이 정확하게 분류하도록 학습시키는데 사용.
  • 1. ROIs 분류작업 ( fast r-cnn에서는 ROI는 다음 중 하나로 분류함 ) 
    • Forground 전경 : 물체가 존재하는 영역이며, 각 클래스중 하나로 분류된다.
    • Background 배경 : 물체가 없는 영역
  • 2. 예측 클래스 확률 계산
    • 2-1. Fully connected layer 통과
      • ROI Pooling을 통하여 7x7크기의 고정된 conv featrue map이 생성되며, 이는 fully connected layer를 지나서 1차원 벡타로 펼쳐짐
    • 2-2. softmax layer
      • fully connected layer의 출력을 softmax layer에 전달하여, C+1개의 클래스 확률을 계산한다.
        여기서 C는 실제 클래스의 갯수이며, 추가된 1은 배경이다. ( 식 1 참고 )
        • 만약 ROI가 총 1000개라면, 1000(c+1)개의 확률이 존재 
  • 3. Ground Truth 설정
    • 실제 클래스 라벨을 정의합니다. 즉, 각각의 ROI에 대해서 Ground Truth라벨을 설정
    • ex) y i = c 는 'ROI i가 클래스 c에 속할 경우' 이다.    y i = c+1 는 'ROI i가 클래스 배경일 경우' 이다.   
  • 4. Cross-Entropy Loss계산
    • 4-1. 개별 ROI의 Loss를 계산한다. ( 식 2 참고 )
    • 4-2. 모든 ROI에 대한 손실을 평균하여 전재 classification loss를 계산한다. ( 식 3 참고 )
  • 5. 역전파로 Loss를 최소화한다.

 

 

 


 

식1

 

Bounding Box Regression Loss

  • 객체 탐지 모델에서 중요한 구성요소이며, 예측된 바운딩 박스가 실제 바운딩 박스(Ground Truth)와 최대한 일치하도록 최적화 하는데 사용한다.
  • 목적
    • fast r-cnn에서는 ROI마다 바운딩 박스를 조정하기 위해서 4개의 매개 변수를 예측한다.
      • 바운딩 박스의 중심을 이동 ( t x , t y )
      • 비운딩 박스의 너비와 높이를 조정 ( t w , t h )
    • bouding box regression loss는 실제 박스 오프셋과 예측된 박스 오프셋 값 사이의 차이를 최소화 함
  • 정의
    • bounding box regression loss는 주로 Smooth L1 Loss로 정의한다. ( 식1참고)
      • Smooth L1 Loss는 L1과 L2 손실의 장점을 결합한 방식
  • 계산 과정

 

 


 

fast R-CNN 

  • R-CNN의 개선버전이며, 속도와 정확도를 동시에 향상시키기 위해 제안되었다.
    • R-CNN은 이미지에서 ROI추출후, 각 영역을 CNN으로 처리하여 객체를 분류한다...
      하지만 이는 아래의 문제점이 존재한다.
      • 1. 수천개의 ROI를 각각 CNN에 입력하니 계산 비용이 높다.
      • 2. 각각의 ROI에 대해서 CNN을 실행하면, 중복된 계산이 발생한다.
      • 3. end-to-end 학습이 불가하며, R-CNN은 각 단계를 독립적으로 처리하니 학습이 비효율적이다.
  • 장점
    • 1. conv feature map의 재사용으로 효율적인 메모리 사용.
    • 2. end-to-end의 학습이 가능.
    • 3. ROI Pooling과 conv feature map으로 속도가 개선됨.
  • 단점
    • 1. ROI Proposal의 의존성
    • 2. selective search의 한계
  • 주요 특징
    • 1. 공유된 conv feature map 사용
    • 2. ROI Pooling
    • 3. End-to-end 학습
  • 과정
    • 1. 이미지를 입력 받는다.
    • 2. conv feature map을 생성한다.
    • 3. 입력 이미지에서 물체가 있을 가능성이 높은 후보 영역ROI를 selective search와 같은 알고리즘으로 생성한다.
    • 4. ROI는 원본 이미지 좌표에서 원본 이미지 좌표에서 conv feature map상의 좌표로 매핑됨.
      • 이유는 conv feature map의 크기가 원본 이미지보다 작기 때문.
      • ex) origin image의 ROI [ 100 , 50 , 400 , 300 ]을 conv feature map좌표인 [ 6,3,25,18]로 변환
    • 5. ROI의 크기를 정규화 시킨다.
      • conv feature map의 ROI는 크기가 다양한다. 그래서 ROI Pooling으로 이를 고정 크기(ex. 7x7 )로 변환.
    • 6. feature flattening
      • ex) 7 x 7 크기의 conv feature map을 1차원 벡터로 펼치고, fully connected layer로 학습
    • 7. fast r-cnn의 출력은 두가지로 나뉜다.
      • 7-1. object classification
        • softmax를 사용하여 각 ROI가 특정 클래스에 속할 확률을 예측함.
      • 7-2. bounding box regression
        • roi의 bounding box 좌표를 정밀하게 조정한다. 이는  [ Xmin , Ymin , Xmax , Ymax ]의 형태로 표현하며, 회귀를 사용하여 정확도를 높힘
    • 8.  두 개의 손실함수 (classification loss와 bounding box regression loss)의 합을 통하여 학습한다.
      • 8-1. classification loss는 cross-entropy loss를 사용해서 예측된 클래스와 실제 클래스의 차이를 최소화한다.
      • 8-2. bounding box regression loss는 Smooth L1 Loss를 사용하여 예측한 bounding box좌표와 ground truth좌표의 차이를 최소화 한다.
    • 9. 최종 클래스 및 bounding box를 출력함.
      • 각각의 ROI에 대해서 가장 높은 확률을 가진 클래스와 수정된 bounding box를 출력
      • 만약 ROI가 동일한 물체를 탐지하는 경우에는, 겹치는 ROI를 제거해서 최종 bounding box를 정리함.