Deep Learning(기본) - 2. Object Detection(1)

Ui Jin·2022년 10월 11일
0

Deep Learning

목록 보기
6/15

Object Detection Basic

1. BackGround

1) 이미지 분류모델의 종류

1. Classification

이미지 분류 모델 중 비교적 간단하게 구현할 수 있는 모델로, 이미지 자체를 판단하는 모델을 의미한다.

우리가 앞서 배웠던 CNN모델들은 대부분 Image Classification에 관련된 모델이다.


2. Object Detection

객체검출모델은 Bounding Box를 통해 객체를 탐지하는 알고리즘을 말한다.

즉, Bounding Box를 찾고, 이 Bounding Box안의 객체가 어떤 객체인지 판별해야 하기 때문에 Classification보다 훨씬 어려운 Task를 다룬다고 볼 수 있다.


3. Segmentation

Image Classification을 이미지 단위가 아니라 Pixel단위로 수행하는 것을 말한다.

이때, 이 Segmentation의 대상에 따라 아래와 같이 크게 3가지 종류의 모델로 나누어 볼 수 있다.

  • Semantic Segmentation
    : 이미지의 각 Pixel들을 클래스 단위로 분류하는 것을 말한다.
    (클래스 단위로 분류하기 때문에 같은 클래스면 같은 대상으로 분류한다.)
  • Instance Segmentation
    : 이미지의 각 Pixel들을 클래스가 아닌 객체 단위로 분류하는 것을 말한다.
    (이때, 길이나 하늘과 같은 배경은 제외하고 움직이는 물체에 대해서만 분류한다.)
  • Panoptic Segmentation
    : 위의 Semantic Segmentation과 Instance Segmentation를 결합한 방식을 말한다.
    (즉, 배경정보뿐만 아니라 움직이는 물체들의 Instance까지도 구분해서 Segmentation을 진행하는 방법을 의미한다.)

2) 용어

1. Confusion Matrix

모델이 얼마나 잘 예측했는지 평가하기 위해 각 Case별로 나누어 표시하는 것

  • Precision

    : 모델이 True라고 분류한 모델중 실제 True인 것의 비율

  • Recall

    : 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율


2. PR Curve

매번 예측마다 TP와 FP를 계산해 가면서 모든 예측에 대해 Precision과 Recall의 변화를 계산하여 그래프를 그리는 것


3. AP(Average Precision)

하나의 Class에 대해 Precision과 Recall을 계산해 PR Curve를 구하고, 이 PR Curve에서의 아래면적의 크기를 AP라고 한다.

  • mAP(mean Average Precision)
    : 모든 Class에 대해 PR Curve를 구해 AP를 구하고 이 AP의 평균을 mAP라고 한다.

4. IOU(Intersection Over Union)

Classification에서는 정답이 맞고 틀리고에 대해서 명확히 판별할 수 있었지만, Detection에서는 Bounding Box의 존재로 인해 이것을 단정지을 수 없다.

이 문제는 IOU를 통해 해결할 수 있는데, 예를들어 IOU 60의 경우 전체 면적중에서 Bounding Box가 겹치는 부분이 60%이상인 것들만 정답으로 취급하면 된다.
(마찬가지로 mAP 60IOU 60을 기준으로 mAP를 측정한 것이다.)


5. FLOPs(Floating Point Operations)

모델의 모든 연산량(곱하기, 더하기 빼기 등)횟수

Selective Search는 ROI(Region of Interest)를 추출하는 전통적인 방법으로 다음과 같은 과정을 통해 물체가 있을법한 영역의 후보군을 추출하게 된다.

  • 이미지의 색갈, 질감, 모양등을 활용해 무수히 많은 작은 영역으로 나눈다.
  • 이 영역들에서 겹치는 부분이 많은 영역들을 점차 통합해 나간다.

Selective Search는 정해진 알고리즘이 있어 작동원리를 이해하기 쉽다는 장점이 있었지만, 현재는 이렇게 정해져 있다는 점이 오히려 학습이 불가능하다는 단점으로 바뀌어 잘 사용되지 않는다고 한다.
(End-to-End 모델이 될 수 없다.)

(참고할 만한 블로그1)
(참고할 만한 블로그2)

4) One-Stage & Two-Stage

Object Detection분야는 다음과 같이 크게 Single-Stage와 Two-Stage, 두가지 계열의 방법 으로 나뉘어 발전하였다.

우선 Two-Stage Detection의 경우에는 사람이 물체를 탐지하는 과정과 비슷하게 동작하는데, 주어진 이미지에서 물체가 있을법한 영역을 찾고, 그 다음 그 영역에 어떤 물체가 있는지 판별하는 과정으로 진행된다.

즉, Region Proposal과 Classification이 순차적으로 이루어지게 된다.

위의 Two-Stage Detection의 경우에는 정확하게 물체를 탐지할 수 있지만, 탐지 시간이 비교적 길어 실시간 탐지에는 부적합하다는 단점이 존재한다.

반면에 One-Stage Detection은 Two-Stage Detection에서 Region Proposal과 Classification이 동시에 이루어지도록 모델을 구현하여 실시간 탐지가 가능하도록 구현한 모델을 말한다.

Two-Stage Detector 종류

  • RCNN Family
  • SPP Net

Single-Stage Detector 종류

  • YOLO

5) Library

6) Multi Task Loss


2. Two-Stage Detection Model

1) R-CNN

1. 동작과정

  • 먼저 이미지에서 Selective Search같은 방법을 통해 약 2000개의 ROI(Region of Interest)를 추출한다.
  • 각 ROI는 모두 다른 크기를 갖고 있기 때문에 CNN Architecture에 넣기 위해 모두 동일한 크기를 갖도록 Warping을 해준다.
  • Warping된 ROI를 CNN모델에 넣어 Feature를 추출한다.
  • Feature를 SVM에 넣어 Classification을 진행한다.
    (SVM을 사용하는 이유는 그냥 과거에 나왔던 모델이라 그런듯 하다.)
  • Clasification이 완료된 물체를 골라 Bounding Box Regression(Bounding Box의 정확한 위치에 대한 학습)을 진행한다.
    (Selective Search의 경우 물체의 대략적인 위치만을 제공한다고 한다.)

2. 문제점

  • 모든 ROI에 대해 CNN모델을 통과시켜야 하기 때문에 해야하는 연산이 너무 많다.
  • 다양한 크기의 ROI를 정해진 크기로 강제 Warping해주었기 때문에 성 하락 가능성이 존재한다.
  • End-to-End학습이 불가능하다.
    (SVM사용, ROI와 CNN을 따로 학습시킴)

2) SPPNet

SPPNet은 모든 ROI에 대해 CNN모델을 통과시켜야 하는 R-CNN의 단점을 먼저 CNN을 통해 Feature Map을 얻고 ROI를 결정하는 방식으로 해결하였다.

또한, 다양한 크기의 ROI를 하나의 정해진 크기로 강제 Warping해주어야 하는 R-CNN의 단점은 Spatial Pyramid Pooling을 수행하는 특별한 Layer를 통해 해결해 주었다.


1. 동작과정

  • 먼저 이미지를 CNN모델에 넣어 Feature Map을 얻는다.
  • 이 Feature Map에 대해 Region Proposal 방법(Selective Search)을 적용해 ROI를 선별한다.
  • 이 ROI들에 각각 SPP(Spatial Pyramid Pooling) Layer를 통해 고정된 크기의 Feature를 얻는다.
  • 이렇게 얻은 Feature를 SVM에 넣어 Classification을 진행한다.
  • Clasification이 완료된 물체를 골라 Bounding Box Regression(Bounding Box의 정확한 위치에 대한 학습)을 진행한다.

2. Spatial Pyramid Pooling

  • Spatial Bins의 총 개수를 정한다. 이 개수는 입력으로 들어온 ROI를 표현하는 고정된 길이의 Feature가 된다.
    (ex. 21 bins = [4x4, 2x2, 1x1])
  • 앞서 정한 Spatial Bin을 사용해 Feature Map을 얻기 위해 적절한 Stride와 Window Size를 설정한다.
    (ex. ROI = 13x13일 경우 Stride = 4, Window Size = 5로 설정하여 Max Pooing을 수행할 경우 Spatial Bin = 3x3을 얻을 수 있다.)
  • 각각의 bin(4x4, 2x2, 1x1)에 대해 위의 과정을 반복하여 처음에 우리가 정했던 Spatial Bin을 모두 얻는다.
  • 모든 Spatial Bin을 Flatten하고 연결시켜 고정된 길이의 Feature를 얻는다.

3. 단점

  • End-to-End학습이 불가능하다.
    (SVM사용, ROI와 CNN을 따로 학습시킴)

(참고한 블로그)

3) Fast R-CNN

SPPNet과 크게 다르지 않지만, ROI Projection이 존재하고 Spatial Pyramid Pooling대신 ROI Pooling을 사용한다는 점이 다르다.


1. 동작과정

  • 먼저 이미지를 CNN모델에 넣어 Feature Map을 얻는다.
  • 또 이미지에서 Selective Search를 통해 ROI를 구한다.
  • 위에서 구한 Feature Map에 ROI Projection을 통해 ROI를 다시 얻는다.
  • ROI Projection을 통해 얻은 ROI에 대해 ROI Pooling을 통해 일정한 크기의 Feature를 얻는다.
  • ROI Pooling을 통해 구한 Output Feature로 Fully Connected Layer 적용 후
    Softmax Classifier
    Bounding Box Regression (Bounding Box의 정확한 위치에 대한 학습)
    을 진행한다.

2. ROI Projection

Fast R-CNN에서는 Feature Map에서 Selective Search를 수행하는 SPPNet과는 달리, 이미지에서 Selective Search를 진행한 후 얻은 ROI의 위치를 사용한다.

즉, 이미지에서 얻은 ROI를 그대로 Convolution Feature Map에 Projection하여 진행한다.


3. ROI Pooling

ROI Pooling은 SPP Layer에서

  • 1개의 Pyramid Level만을 사용하고,
  • Target bins = 7*7

로 설정한 형태와 동일하다고 생각하면 된다.

(참고: ROI Pooling gif)


3. 단점

  • End-to-End학습이 불가능하다.
    (Selective Search를 사용)

4. 추가학습

  • Hierarchical Sampling

4) Faster R-CNN

Faster R-CNN은 Fast R-CNN에서 Selective Search를 제외하고 Region Proposal Network라는 것을 추가하여 End-to-End 모델이 될 수 있도록 해 주었다.


1. 동작과정

  • 먼저 이미지를 CNN모델에 넣어 Feature Map을 얻는다.
  • Feature Map에서 Region Proposal NetworkNon-Maximum Suppression 통해 ROI를 얻는다.
  • 이렇게 얻은 ROI를 활용해 Fast R-CNN과 같이 동작하도록 구성한다.
    (ROI Projection -> ROI Pooling -> Softmax Classification + Bounding Box Regression)

(두개의 딥러닝 Network를 학습시켜야 하므로 Multi Task Loss를 사용한다..?)


2. Region Proposal Network(RPN)

  • 우선 CNN모델에서 얻은 Feature Map에 대해 각 Cell을 Anchor로 지정한다.
    그리고 이렇게 지정한 모든 Anchor를 중심에 배치하여 K개의 Anchor Box를 생성한다.
    (K = len(Scale) * len(ratio))
    (Scale은 Box의 크기의 종류 수, ratio는 Box의 가로-세로 비율의 개수)
  • 이때, 이 Anchor Box를 모두 사용하게 될 경우 너무 많은 ROI후보군이 생성된다.
    (예를들어, 64* 64 Feature Map에서 9개의 Anchor Box를 사용할 경우 3만6천개의 ROI가 발생한다.)
  • 즉, 배경에 대한 Anchor Box는 제외하기 위해 Anchor는 다음 두 역할에 대해 모두 학습이 되어야 한다.
    : 내용이 배경인지/물체인지 확인
    : Anchor Box와 실제 이미지의 Ground Truth의 위치가 같은지 확인
  • 때문에 각 Cell별로 두개의 Layer의 입력으로 들어가게 된다.
    (단, Anchor수=k개 일때)
    : 2k개의 Cls Layer =>(배경o, 배경x)
    : 4k개의 reg Layer =>(dx, dy, dw, dh)

(참고: k+Sigmoid로도 가능하지만 논문에서는 2k+Softmax 로 구현하였다고 함)

(참고그림)


3. Non-Maximum Suppression(NMS)

RPN의 결과로써 나온 ROI중에는 유사한 객체를 표현하는 ROI들이 여럿 존재하게 된다.

이를 막기 위해 Class Score를 기준으로 정렬한 후에, 중복된 영역이 많은 순서대로 ROI후보군을 삭제해 가면서 적절한 것을 Proposal 영역을 최소한으로 골라주는 알고리즘을 말한다.

(자세한 내용)


다음장에 계속..


profile
github로 이전 중... (https://uijinee.github.io/)

0개의 댓글