R-CNN 논문 리뷰

Mini's Place·2022년 2월 13일
0

먼저 읽어보면 좋아요


(논문리뷰) R-CNN 설명 및 정리

R-CNN(Regions with CNN)이란?

설정한 Region을 CNN의 Feature(입력값)으로 활용하여 Object Detection을 수행하는 신경망

  • Image Classification을 수행하는 CNN과 Localization을 수행하는 Regional Proposal 알고리즘을 연결한 모델

R-CNN의 구조

fast 1

  1. Region Proposal

    1. 이미지를 Input으로 입력

      • R-CNN에는 이미지를 데이터로 사용, 레이블은 정답 Bounding Box
        • 이미지를 데이터 형식을 사용하는 방법
          1. 이미지 픽셀들을 Vertex로 표현
          2. Vertex들의 연결을 Edge라 표현
    2. ~2000개 영역(Bounding Box)을 Selective Search 알고리즘을 통해 추출 (Sliding Window 방식의 비효율성을 극복)

      • Sliding Window 방식이란?

        • 이미지에서 물체를 찾기 위해 Window의 크기,비율을 임의로 마구 바꿔가면서 모든 영역에 대해서 탐색

          slide

          → 임의의 크기,비율로 모든 영역을 탐색하는 것 너무 느림!

      • Selective Search 알고리즘이란?

        • Segmentation 분야에 많이 쓰이는 알고리즘

        • 객체와 주변간의 색감(Color), 질감(Texture) 차이, 다른 물체에 애워 쌓여 있는지(Enclosed) 여부 등을 파악해서 인접한 유사한 픽셀끼리 묶어 물체의 위치를 파악할 수 있도록 하는 알고리즘

        • 목표

          1. Capture All Scales - 영상은 계층적 구조를 가지므로 적절한 알고리즘을 사용하여, 크기에 상관없이 대상을 찾는다.
          2. Diversification - 영역들을 그룹화하는데 최적화된 단일 전략은 없다. 색상, 재질, 크기 등 다양한 조건응ㄹ 고려하여 다룰 필요가 있다.
          3. Fast to Compute - 실제 객체 탐지 프레임워크에서 사용할 수 있어야 하기에 계산상 병목현상(Bottleneck)이 발생하면 안되므로 빨라야 한다.
        • 절차

          1. 초기 Sub-Segmentation을 수행

            select

          2. 작은 영역을 반복적으로 큰 영역으로 통합 → Greedy 알고리즘을 사용

            select 2

            • Greedy 알고리즘이란?
              1. 여러 영역으로부터 가장 비슷한 영역을 고른다.
              2. 좀 더 큰 영역으로 통합을 진행
              3. 1~2과정을 1개의 영역이 남을 때까지 반복한다.
          3. 통합된 영역들을 바탕으로 후보 영역을 생성

            select 3

    3. 추출된 영역을 CNN에 넣기 위해 같은 사이즈 (224 x 224)로 찌그러뜨려 통일 (Warping)

  2. CNN(Convolution Neural Network)

    fast 2

    • AlexNet(ImageNet)구조 재사용 (Object Detection 용으로 마지막 부분만 조금 수정)

      → AlexNet Network 마지막 부분을 Detection을 위한 Class의 수로 수정

    • CNN을 거쳐 각각의 Region Proposal로부터 4096-dimensional feature vector를 뽑아내고 고정길이의 Feature Vector를 만들어낸다.

  3. SVM(Support Vector Machine)

    fast 3

    • 추출된 Feature에 대해 Linear SVM을 통해 Classification 진행

      → 왜 Classifier로 SVM을? : CNN fine-tuning을 위한 학습 데이터가 시기상 많지 않아서 Softmax를 적용하면 오히려 성능이 낮아졌음

    • 추출된 Feature Vector들의 점수를 Class별로 매기고, 객체인지 아닌지, 객체라면 어떤 객체인지 판별

  4. Bounding Box Regression

    fast 4

- CNN을 통과해서 나온 Bounding Box와 처음에 y로 줬던 레이블 간 차이를 줄이도록 조정하는 선형회귀 모델 절차
- Bounding Box Regression을 통해서 나온 값을 CNN 단계 전으로 다시 전달 → Region Proposal이 더 잘되도록 해줌
- P를 G에 맞추도록 Transform하는 것을 학습하는 것이 Bounding Box Regression의 목표
    - P : 처음에 Region Proposal을 통해 제안된 Bounding Box
    - G : Ground Truth Bounding Box (정답 박스)

R-CNN의 단점(한계)

  1. 시간이 너무 오래 걸림

    1. Selective Search에서 뽑아낸 2000개의 영역 이미지들을 모두 CNN모델에 넣음
    2. Selective Search → CPU를 사용하는 알고리즘

    → R-CNN 수행시간 : Training Time = 84시간, Testing Time = 프레임 당 13초 (GPU K40 사용 기준)

  2. 모델이 너무 복잡함

    • CNN, SVM, Bounding Box Regression까지 3가지의 모델을 필요로 함
  3. Back Propagation이 불가능

    • SVM, Bounding Box Regression에서 학습한 결과가 CNN을 업데이트 시키지 못함.

참고


R-CNN 을 알아보자

[Object Detection] 2. R-CNN : 딥러닝을 이용한 첫 2-stage Detector

갈아먹는 Object Detection [1] R-CNN

0개의 댓글