객체 검출

suhan cho·2022년 3월 28일
0

사물 인식하는 방법

  • Object Dectection은 다수의 사물 존재하는 상황에서 각 사물의 위치와 클래스를 찾는 작업 (사각형 바운딩 박스)
  • Instance Segmentation은 각 사물을 (픽셀단위로) 구분

객체 검출 2-stage 1-stage

2-Stage Detector

  • 물체 1위치를 찾는 문제(localization)와 2분류(classification)문제를 순차적으로 해결
  • region proposals 각각의 위치를 제안
  • 각각의 위치의 특징을 추출
  • 이를 통해 classification 분류하고, Regression 이미지내 사물이 있는 바운딩 박스의 좌표를 예측

1-Stage Detector

  • 물체의 위치를 찾는 문제(localization)와 분류(classification)문제 한 번에 해결(2-stage보다 빠르지만 정확도 떨어짐 ex) yolo)

2-Stage 방식 예시

R-CNN

  • 이미지를 cpu상에서 Selective Search를 한다. 물체가 있을 법한 위치를 약 2천개를 찾게됨
  • 약 2천개의 물체를 개별적으로 CNN 네트워크에 넣어 특징벡터를 추출
  • SVMs을 통해 classification, Regressors통해 물체의 정확한 위치 바운딩 박스로 조절 예측 가능하도록 한다.

Fast R-CNN

  • R-CNN과 동일하게 cpu상에서 selective search를 통해 약 2천개의 region proposals를 찾는다.
  • feature map을 뽑기 위해서 CNN을 한번만 거친다.
  • Rol pooling을 통해 각각의 region에 대해 feature을 추출
    (CNN 구조상 Feature Map은 input이미지에 대해서 각각에 위치에 대한 정보를 어느 정도 보존하고 있기에 가능)
  • 기본적 CNN네트워크를 이용해서 Softmax 레이어를 거쳐 각각의 클래스에 대한 확률을 구한다.

Faster R-CNN

  • 기존에 cpu상에서 selective search를 했는데 GPU상에서 region proposal의 연산을 할 수 있는 RPN(Resion proposal network)
  • RPN : featuremap을 보고 어느 곳에 물체가 있을 법한지 예측한다. Selective Search의 시간적 문제를 해결하는 대안
  • 학습이 이루어지고 나고서 GPU상에서 한번의 fowarding만 수행하면 물체가 어디 있을지 예측가능

물체가 있을 법한 위치 찾기 : Sliding Window

  • 이미지에서 다양한 형태의 윈도우를 슬라이딩하여 물체가 존재하는지 확인
    • 너무 많은 영역에 해야한다는 단점과 속도 느릴수 있음
  • 인접한 영역끼리 유사성을 측정해 큰 영역으로 차례대로 통합(R-CNN / Fast R-CNN)
  • cpu로 확인

성능 평가 지표 : 정확도, 재현율

  • 만약 모든 영역에 대하여 전부 사물이 존재한다고 판단을 해버리면 어떤 일이 벌어질까
    • 재현율은 높아지지만, 정확도는 떨어진다.
  • 만약 매우 확실할 때만 사물이 존재한다고 판단하면?
    • 정확도는 높지만, 재현율은 떨어짐

Intersection over Union(IoU)

  • IoU란 두 바운딩 박스가 겹치는 비율

    • 성능 평가 예시: mAP@0.5는 정답과 예측의 IoU가 50% 이상일 때 정답으로 판정
    • NMS 계산 예시: 같은 클래스끼리 IoU가 50% 이상일 때 낮은 confidence의 box를 제거

NMS (Non Maximum Suppression)

  • 객체 검출에서는 하나의 인스턴스에 하나의 바운딩 박스 적용되어야 함
    • 따라서 여러 개의 bounding box가 겹쳐 있는 경우에 하나로 합치는 방법 필요

R-CNN(Regions with CNN features)

  • Selective Search를 이용해 2000개의 Region Proposal을 생성
    • 각 Region Proposal을 일일이 CNN에 넣어(foward)결과를 계산

  • Selective Search를 쓰면 물체가 존재할 법한 위치를 찾을 수 있다.
  • Region proposal를 동일하게 자르고 CNN기반 네트워크로 Feature벡터뽑는다.
  • 클래스별로 존재하는 바이너리SVMs에 넣어 어떤 클레스인지 확인 가능
  • 어떤 위치에 존재하는지 Bbox reg통해 예측

R-CNN 동작과정

  1. Selective search를 이용해 2,000개의 Rol(Region of Interest=Region proposal)추출
  2. 각 Rol에 대하여 warping을 수행하여 동일한 크기의 입력 이미지로 변경
  3. Warped image를 CNN에 넣어서(foward) 이미지 feature를 추출
  4. 해당 feature를 SVM에 넣어 클래스 분류 결과를 얻는다.
  • 이때 각 클래스에 대해 독립적으로 훈련된 이진(binary) SVM사용
  1. 해당 feature를 regressor에 넣어 위치(bounding box)를 예측

R-CNN: Bounding Box Regression

  • 지역화(localization) 성능을 높이기 위해 bounding-box regression사용
  • Selective Search를 진행하면 존재할법한 예측 위치가 나온다.
  • 실제 존재 위치 학습데이터에서 가져온다.

  • 4개의 파라미터로 학습시킴

R-CNN 한계점

  • 입력 이미지에 대하여 CPU 기반의 Selective Search를 진행해야 하므로 만흥ㄴ 시간이 소요
  • 전체 아키텍처에서 SVM, Regressor 모듈이 CNN과 분리되어 있다.
    • CNN(Feature만 추출)은 고정되므로 SVM과 Bounding Box Regression결과로 CNN을 업데이트할 수 없다.
    • 다시 말해 end-to-end 방식으로 학습 불가
  • 모든 RoL(Region of Interest)를 CNN에 넣어야 하기 때문에 2000번의 CNN연산 필요
    • 학습과 평가 과정에서 많은 시간이 필요

Fast R-CNN

  • 동일한 Region proposal을 이용하되 이미지를 한 번만 CNN에 넣어 Feature Map을 생성

Fast R-CNN: Rol Pooling Layer

  • 분류를 위해서 Pooling connected layer을 이용해야 하기 떄문에 이 입력에 들어갈 수 있도록
  • 각 Rol영역에 대하여 맥스 풀링(max pooling)을 이용해 고정된 크기의 벡터를 생성

Faster R-CNN

  • 병목에 해당하던 Region Proposal 작업을 GPU장치에서 수행하도록 한다.(RPN적용)
    • 전체 아키텍처를 end-to-end로 학습 가능

Faster R-CNN: Region Proposal Networks(RPN)

  • RPN네트워크는 feature map이 주어졌을 때 물체가 있을 법한 위치를 예측
    • k개의 앵커 박스를 이용(다양한 형태와 크기를 사물을 잘게 확인할 수 있게 함)
    • 슬라이딩 윈도우를 거쳐 각 위치에 대해 Regression과 Classification을 수행
profile
안녕하세요

0개의 댓글