논문 : https://arxiv.org/pdf/1504.08083
이전 포스팅한 R-CNN에 이어서
R-CNN 모델 시리즈의 Fast R-CNN의 논문리뷰를 진행하겠습니다.
해당 글들을 참조했습니다.
https://ganghee-lee.tistory.com/36
(논문리뷰) Fast R-CNN 설명 및 정리
이전글 : (논문리뷰) R-CNN 설명 및 정리 Object Detection, R-CNN 설명 및 정리 컴퓨터비전에서의 문제들은 크게 다음 4가지로 분류할 수 있다. 1. Classification 2. Object Detection 3. Image Segmentation 4. Visual relation
ganghee-lee.tistory.com
https://nuggy875.tistory.com/33
[Object Detection] 3. Fast R-CNN & Faster R-CNN 논문 리뷰
저번 포스팅에서는 CNN을 이용한 첫 Object Detection인 R-CNN을 알아봤습니다. https://nuggy875.tistory.com/21?category=860935 [Object Detection] 2. R-CNN : 딥러닝을 이용한 첫 2-stage Detector 저번 포스팅에서는 Object Detec
nuggy875.tistory.com
Fast R-CNN

Fast R-CNN 프로세스에 대해 먼저 설명하겠습니다.
1. Selective Search 를 통해 ROI를 찾습니다.
2. 원본 이미지에 CNN을 통과시켜 feature map을 추출합니다.
3. ROI를 feature map 크기에 맞춰 projection을 진행합니다.
4. projection 시킨 ROI에 대해 MaxPooling을 진행하고 고정된 크기의 feature vector를 얻습니다.
5. feture vector는 FCLayer를 거치고 2개의 브랜치로 나누게 됩니다.(그림상 왼쪽 FC, 오른쪽 FC)
6. 하나는 softmax를 거치며(왼쪽 FC) object Classification 을 진행합니다.
7. 하나는 bounding box regression을 거쳐 예측한 Bounding box를 Gound Truth와 비교하며 조정합니다.
SPP (Spatial Pyramid Pooling)

SPP는 Fast R-CNN의 핵심 아이디어의 ROI Pooling에 쓰이는 알고리즘입니다.
위 그림을 기준으로 보면 feature maps는 4x4 , 2x2, 1x1의 bin들을 가진 각각의 SPP Layer을 통과합니다.
SPP 각 피라미드 한칸을 bin 이라고 합니다.
예를 들면 4x4의 피라미드는 16개의 bin을 가지게 됩니다.

SPP Layer를 거친 이미지는 각각의 Grid 단위내에서 MaxPooling 되고
위의 그림과 같이 하나의 벡터로 더해져서 FCLayer로 전달됩니다.
1. Region Proposal (영역 추정)과 ROI
Fast R-CNN은 R-CNN과 동일하게 Selective Search 방식으로
Region Proposal을 진행합니다.
입력 이미지에서 color(색상), texture(질감), size(크기), fill(다른 박스와의 차이) 특징을 이용해서
객체가 있을만한 바운딩 박스들인 ROI를 생성하게 됩니다.
이 박스들은 CNN을 거친 feature map과 projection 됩니다.
2. ROI Pooling

ROI Pooling은 Fast R-CNN에서 SPP를 이용해 고정된 크기의 feature vector를 만드는 과정입니다.
위 그림을 보면 Conv Layer을 거쳐 추출된 feature maps에서 region proposal을 생성하고 해당 이미지들을
SPP Layer를 통과시켜 1차원의 feature vector로 변환해서 FCLayer의 입력 값으로 넣어주는 것을 확인할 수 있습니다.

위 사진을 통해 좀 더 자세히 설명하자면
Image 에서의 region proposal을 거친 ROI 추출이 이뤄지고
CNN을 거친 Feature map에 투영(projection)됩니다.

ROI가 투영된 Feature map는
ROI Pooling Layer를 거치며 나뉘어진 bin 범위만큼씩
Max Pooling 처리됩니다.
(feature map 개수가 홀수이고 나뉘어지는 bin이 짝수면 앞에는 적고 뒤에는 많은 수로 잡히나보네요
7x5영역에서 2x2 bin이 잡히면 (3,4) , (2,3)으로 묶입니다)
처리된 feature vector는
ROI(h,w)와 동일한 크기의 H,W의 크기를 가지게 됩니다.

기존 R-CNN 모델은 각 ROI 이미지마다의 feature maps를 구하는 CNN 연산을 2000번을 했다면,
Fast R-CNN은 해당 연산을 1번만하고 projection을 진행하며
연산량을 대폭 줄이며 속도를 높일 수 있었습니다.
3. End to end Trainable 해결
Fast R-CNN은 R-CNN의 문제점인 end to end 문제를 해결했습니다.
R-CNN에서는 CNN을 통한 feature map을 출력하고, NN이아닌 SVM 모델을 통해 학습하였으므로,
하나의 네트워크로 연산이 불가능해
end to end 문제가 발생하고 최적의 성능을 뽑아내는데에 비효율적인 문제가 있었습니다.

Fast RCNN에서 모든 단계가 하나의 손실 함수(Loss Function)를 통해 연결되어 있기 때문에, 역전파를 사용하여 전체 네트워크를 한 번에 학습할 수 있습니다.
4. Loss Function

Loss 함수입니다. Multi task라는 이름의 loss 를 사용합니다.
classification과 localizaion loss 같은 가중치를 공유하고 있습니다.

p: background 클래스가 더해진 클래스들 중 예측된 class score, background class는 0입니다.
u: 실제 class socre,
t^u : 예측된 바운딩박스 값 (바운딩박스의 형태는 좌상단x,좌상단y,너비w,높이h로 구성되었습니다.)
v : grounding truth
값입니다.
Lcls : Classification에 대한 loss를 나타내며, class score를 비교하는 로스를 구합니다.
Lloc : 바운딩 박스의 차이를 구하는 로스이며 Smooth L1 Loss를 사용합니다.
예측 바운딩박스 값 - 실제 바운딩 박스값의 절대값이 1보다 작다면 0.5x^2,
그렇지 않다면 해당 값을 절대값 씌운 값에서 0.5로 빼준 값을 Loss값으로 사용합니다.
u 값인 class score가 0이라면 background인 경우고 Regression 로스는 0이 됩니다.
이로서 background는 loss계산에서 무시할 수 있습니다.
Lloc 앞에 붙는 lambda는 classificaion과 localizaion은 동일 가중치를 공유하므로
두 작업간의 균형을 맞춰주는 역할을 합니다. 논문에서는 1를 주며 실험했다고 기재되어 있습니다.
5. 결론
Fast R-CNN의 핵심은 ROI Pooling이며
1. 2000번의 CNN 연산을 1번의 연산으로 가능하게 하므로 속도 향상함.
2. 변경된 feature vector는 ROI와 feature maps의 정보가 들어있으므로 해당 데이터로
classification, bounding box regression이 모두 가능하고 end to end 방식이 가능해짐.
의 성과를 이룰 수 있었습니다.
하지만 여전히 ROI를 생성하는 selective search 알고리즘이 CNN외부에서 진행되고 있고
이 부분은 CPU에서 동작하기 때문에 네트워크 병목현상이 나타납니다.
이런 부분에서의 모델의 성능 저하의 원인이 여전히 존재합니다.
'인공지능 개발하기 > 기술 & 논문 리뷰' 카테고리의 다른 글
| [논문 리뷰] Mask R-CNN (0) | 2024.05.13 |
|---|---|
| [논문 리뷰] Faster R-CNN (0) | 2024.05.13 |
| [논문 리뷰] R-CNN(Rich feature hierarchies for accurate object detection and semanti (0) | 2024.05.09 |
| [논문 리뷰] Transformer(Attention is All You Need) (0) | 2024.04.29 |
| Attention 매커니즘 (0) | 2024.04.27 |