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을 재사용하니 계산 비용이 감소.
- 해당 feature map을 기반으로 각 ROI를 추출하고 처리한다.
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이다.
- 축소 비율은 입력 image 크기 대비 conv feature map크기로 계산...
- 예시...
- 예시에 대한 결과는 conv feature map 상의 ROI는 14x14에서 [3,3]부터 [10,10]까지 이다.
- 1-1. 원본 이미지에서 지정된 ROI는 픽셀 단위의 좌표로 제공된다.


- 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을 생성한다.
- 28 x 28의 roi를 7 x 7크기의 격자로 나눈다면, 각각의 격자는 4 x 4의 크기를 가짐.



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)개의 확률이 존재
- fully connected layer의 출력을 softmax layer에 전달하여, C+1개의 클래스 확률을 계산한다.
- 2-1. Fully connected layer 통과
- 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를 최소화한다.

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

fast R-CNN
- R-CNN의 개선버전이며, 속도와 정확도를 동시에 향상시키기 위해 제안되었다.
- R-CNN은 이미지에서 ROI추출후, 각 영역을 CNN으로 처리하여 객체를 분류한다...
하지만 이는 아래의 문제점이 존재한다.- 1. 수천개의 ROI를 각각 CNN에 입력하니 계산 비용이 높다.
- 2. 각각의 ROI에 대해서 CNN을 실행하면, 중복된 계산이 발생한다.
- 3. end-to-end 학습이 불가하며, R-CNN은 각 단계를 독립적으로 처리하니 학습이 비효율적이다.
- R-CNN은 이미지에서 ROI추출후, 각 영역을 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 ]의 형태로 표현하며, 회귀를 사용하여 정확도를 높힘
- 7-1. object classification
- 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를 정리함.
'코딩 및 기타 > 이미지' 카테고리의 다른 글
| Faster R-CNN (1) | 2025.01.24 |
|---|---|
| Anchor box (0) | 2025.01.22 |
| R-CNN ( Regions with Convolutional Neural Networks ) (1) | 2025.01.20 |
| 투영 변환 , 원근 투영의 수학적 모델 (1) | 2025.01.20 |
| coordinate system ( world , camera , pixel , normalized ) (0) | 2025.01.19 |