[Object Detection] 0. Object Detection 소개

onlybox·2022년 2월 15일
0
post-thumbnail

아래 내용은 개인적으로 공부한 내용을 정리하기 위해 작성하였습니다. 혹시 보완해야할 점이나 잘못된 내용있을 경우 메일이나 댓글로 알려주시면 감사하겠습니다.


Deep Learning Computer Vision tasks

컴퓨터를 활용해 이미지를 분석하는 Computer Vision 분야에서 적용된 Deep Learning Task는 크게 세 가지로 나눠져 있습니다.

첫 번째로는 입력된 이미지를 분류하는 Image Classification이 있습니다. Image classification은 입력받은 이미지가 미리 정해진 class중 어느것에 해당하는지 구분하는 문제 입니다.

Object Detection은 이미지 안에 어떤 class의 객체가 어디에 위치해 있는지 찾아내는 문제입니다. Object Detection에서 객체의 위치는 Bounding Box라 불리는 물체 외곽의 네모박스로 표기합니다.

마지막으로 Semantic Segmentation은 어떤 객체가 이미지의 어느영역에 있는지 픽셀단위로 찾는 문제입니다. Object Detection과 다르게 Segmentation은 이미지에서 어느픽셀이 어떤 class인지 보다 세밀하게 살펴봅니다.

Object Detection은 Image Classification의 상위 단계로 물체가 하나가 아닌 여러 종류가 함께 있을 수 있기 때문에 Multi-class classification문제가 됩니다. 또한, 이미지가 어떤 객체인지 뿐만 아니라 어느 위치에 있는지에 대해 알 기 위해 Bounding Box라는 네모박스의 좌표를 예측합니다.


Object Detection의 방법

딥러닝 이전의 전통적인 방법은 찾고자 하는 객체의 특징(feature)을 추출하고, 추출된 특징을 바탕으로 객체의 경계를 결정하는 Boundary Decision방법을 주로 사용했습니다.

딥러닝 이후의 Object Detection은 두 가지 방향으로 발전됩니다.

2 Stage는 물체의 위치를 먼저 찾고, 어떤 물체인지 분류하는 과정을 거칩니다. 위 그림에서 처럼 해변사진을 입력으로 했을 때 의미있다고 판단되는 영역을 먼저 분류한 뒤, 해당물체가 어던 물체인지 분류하는 과정과 물체의 경계면을 추정하는 과정을 거쳐 객체를 검출합니다.

이미지에서 의미있는 영역을 찾는 Resion Proposal 방법에는 sliding window, selective search 등의 방법이 있습니다.

Sliding Window는 고정된 사이즈의 검색영역인 Window를 이용해 이미지를 왼쪽 상단부터 차례대로 훝어가며 객체가 존재할것 같은 영역을 찾는 방법입니다.
Selective Search는 이미지에서 유사한 영역끼리 묶은 뒤 객체로 보이는 영역을 찾는 방법입니다.

2-stage object detection에는 대표적으로 R-CNN, Faster R-CNN등이 있습니다. 2-stage 방법은 정확도가 비교적 높지만, 속도가 느린 단점이 있습니다.

1 Stage는 입력받은 이미지 전체에 대해 특징을 추출합니다. 그 다음 경계면에 대한 regression과 class에 대한 classification이 동시에 이루어 집니다. Yolo, SSD 등이 대표적인 1 stage object detection 방법입니다.

Object Detection의 성능평가 방법

Intersection over Union

IOU(Intersection over Union)는 하나의 객체가 검출이 얼마나 잘 되었는지 판단하는 평가 지표입니다.

아래 그림과 같이 실제 객체가 있는 위치와 검출된 결과는 차이가 발생할 수 있습니다. 이 때 실제 위치와 얼마나 차이가 나는지 확인하기 위해서 사용하는 개념이 Intersection over Union입니다.

아래 그림은 IOU를 설명하기 위한 그림입니다.
그림에서 실제 객체위치와 검출결과사이에 차이가 발생합니다. 이때 두 객체위치간 차이를 확인하기 위해 두 영역이 겹치는 부분의 넓이와, 두 영역이 합쳐진 영역의 넓이의 비율을 IOU로 정의합니다.

IOU=AreaintersectionAreaUnionIOU = \frac{Area_{intersection}}{Area_{Union}}

Precision & Recall

위 표는 어떤 객체를 검출했을 때 발생할 수 있는 네 가지 경우에 대해 표현되어 있습니다. 각 경우에 대해 설명하면 다음과 같습니다.

  • TP : 검출 되어야 할 객체가 올바르게 검출된 경우
  • FN : 검출 되어야 할 객체가 검출되지 않은 경우
  • FP : 검출되지 말아야 할 객체가 검출됨
  • TN : 검출되지 말아야 할 객체가 검출 안됨

여기서 올바르게 검출된 경우는 IOU를 기준으로 판단합니다. 일반적으로 IOU가 0.5이상인 경우 올바르게 검출되었고 그 이외에는 올바르지 않게 검출되었다고 판단합니다.

Object detection 여러 객체가 동시에 존재할 수 있습니다. 그러므로 하나의 객체에대해 성공/실패를 나누는것이 아닌 전체에 대한 성능지표가 있어야 합니다. 이때 Precision과 Recall이라는 개념을 사용합니다.

Precision은 전체 검출 결과 중 옳게 검출된 비율, 즉 검출결과가 얼마나 정확한지를 뜻합니다.
Recall은 전체 객체들 중 옳게 검출된 비율, 즉 얼마나 잘 찾아서 검출했는지를 뜻합니다.

수식으로는 다음과 같이 나타낼 수 있습니다.

Precision=TPTP+FPPrecision = \frac{TP}{TP+FP}
Recall=TPTP+FNRecall = \frac{TP}{TP+FN}

Average Precision

Precision과 Recall을 하나만 보고 Object Detection 알고리즘의 성능의 성능을 평가하는것은 적절하지 못합니다.
예를들어 올바른 검출의 기준이 되는 IOU threshold를 낮춰서 올바른 검출과 오검출이 많이되는 경우 Precision은 낮지만, Recall이 높은 경우는 좋은 검출결과라고 보기 어렵습니다.

OBject Detection 알고리즘의 성능을 평가하기 위해 가장 많이 사용되는 방법은 Average Precision을 사용하는 것 입니다.

Average Precision은 Recall을 0부터 0.1단위로 증가시켜가며 Precision값을 계산합니다. 그러면 precision-recall curve라는 그래프가 만들어 집니다.

위 그림은 Precision-Recall Curve 그래프 입니다. 위 그래프에서 선 아래 위치한 영역의 넓이가 바로 AP(verage Precision)가 됩니다.

일반적으로 Precision-Recall곡선에서 파란색 선 처럼 다소 불규칙한 결과가 나올 수 있습니다. Average Precision을 계산할 때는 Racall이 커질수록 Precision이 항상 작아지도록 그래프를 수정한 다음 Average Precision을 계산합니다.

이렇게 계산한 Average Precision은 한 종류 class에 대한 검출 성능을 가지고 있습니다. Object Detection 알고리즘이 여러 class에 대한 검출이 가능하다면 각 클래스의 AP의 평균값인 mAP(Mean Average Precision)을 최종적인 성능지표로 사용합니다.

FPS

Object Detection에서 꼭 확인해야할 또 하나의 지표는 바로 속도입니다. 이미지 한장에서 객체검출을 하는데 오랜 시간이 걸린다면 Object detection 알고리즘의 효용성이 떨어질 것 입니다.

Object Detection에서 동작 속도를 표현할 때는 1초동안 몇장의 이미지를 처리 할 수 있는지를 뜻하는 FPS(frame per second)를 사용합니다.


참고

Object Detection in 20 Years: A Survey
삼성S/W 멤버십 기술 블로그
HOYA님 블로그
딥러닝공부방 블로그
Fast AI forum
COCO dataset

profile
ML하는 개발자

0개의 댓글