R CNN,Fast R CNN,Faster R CNN - Songwooseok123/Study_Space GitHub Wiki

Table of Contents

R-CNN 발전과정

![image](https://github.com/Songwooseok123/Study_Space/assets/80091008/1c2a20f3-b55a-4004-a8db-555300e9b735)

R-CNN

  • 1.이미지에 대해서 (CPU상에서)selective search를 해서 물체가 존재할 법한 위치(RoI)를 찾는다.(region proposal)
  • 2.이 위치들을 개별적으로 CNN 네트워크에 넣어서 feature vector를 추출한다
  • 3-(1)그 vector들에 대하여 SVM을 이용해 classification
    • SVM(binary SVM classifier) :각각의 class에 대해서 인지/아닌지 판단.
  • 3-(2)Regressors를 이용해 물체 위치가 어딘지(bounding box) 찾는다.
![image](https://github.com/Songwooseok123/Study_Space/assets/80091008/524ad091-4cfc-41bd-ac15-e281fd8429da)








  • 단점
    • Selective search 시간 소모.
    • 모든 RoI를 CNN에 넣어야해서 연산 많음.
    • CNN은 고정되므로 SVM과 Bounding box regression 결과로 CNN을 업데이트 할 수 없다. -> End-to-End 학습 불가->global solution 찾기힘듦.

Fast R-CNN

  • 1.feature map을 뽑기 위해서 cnn을 한번만 거친다.
  • 2.이후 RoI Pooling(max pooling)을 통해 각각의 region의 feature extraction.(feature map이 input image에 대해서 각각의 위치정보를 보존하고 있기 때문에 이 작업이 가능함)
  • SVM을 쓰지 않고 softmax를 거쳐서 각각의 class에 대한 probability를 구한다.
  • 장점
    • (feature extraction ,RoI Pooling,Region Classification,Bounding Box regression) 단계를 end-to-end로 묶어서 학습가능
  • 단점: Selective search(region proposal)가 CPU에서 수행되어 속도가 느리다.

Faster R-CNN

  • 여태까진 모두 CPU에서 region proposal을 진행했는데 속도가 매우 느리기 때문에 region proposal(여기선 sliding window사용)을 위한 모둔 연산을 GPU상에서 수행할 수 있도록 하는 RPN네트워크 제안함(GPU사에서 한번의 forward만 실행하면 어느 곳에 물체가 있을지 예측가능)
    • RPN: RoI 구하는 방법임
      • k개의 앵커 박스(anchor box)이용
      • sliding window를 거쳐 각 위치에 대해 regression과 classification을 수행
  • 장점
    • CNN에서 뽑은 feature map을 공유한다.
    • RPN을 제안하면서 전체 프레임워크를 End-to-End로 학습가능.
    • Selective search의 시간적 단점을 해결함
  • 단점
    • 여전히 많은 components
    • Region classification을 할 때 각각의 서로다른 region에 따른 특징 벡터가 개별적으로 구분되어 fc layer로 forward됨.

Mask R-CNN

⚠️ **GitHub.com Fallback** ⚠️