Perception 18

[Object Detection] mAP - Object Detection 성능 평가 지표

mAP는 Object Detection 알고리즘들의 성능을 평가하는 지표입니다. 가장 처음에 나온 딥러닝 기반 Object Detection 알고리즘인 R-CNN부터 최근에 나온 YOLOv8까지 이 mAP로 성능을 평가하기 때문에 중요한 지표라고 할 수 있죠. 이번 포스팅에서는 이 mAP에 대해서 설명하도록 하겠습니다. mAP를 이해하기 위해서는 먼저 Precision(정밀도), Recall(재현율) 그리고 AP(Average Precision)에 대해서 알아야합니다. Precision(정밀도) & Recall(재현율) 정밀도(Precision)는 예측을 Positive로 한 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율을 뜻합니다. Object Detection에서는 검출 알고리즘..

[Object Detection] IoU(Intersection over Union) & NMS(Non-Max Suppression)

이번 포스팅에서는 본격적으로 딥러닝 기반의 Object Detection 알고리즘들을 살펴보기 전에 미리 알아둬야 하는 개념인 IoU와 NMS에 대해서 설명하도록 하겠습니다. IoU(Intersection over Union) Classification의 경우 모델이 예측한 class가 맞는지 틀렸는지 쉽게 판단할 수 있습니다. 실제 class와 일치한지, 불일치한지만 보면 되기 때문입니다. 하지만 Bounding Box의 경우 예측된 Bounding Box가 실제 Bounding Box(Ground Truth)와 애초에 100% 일치할 확률이 거의 없습니다. 따라서 예측된 Bounding Box는 Ground Truth와 일치하냐 불일치하냐를 보기보다는 두 영역이 얼마나 일치하는지를 평가하는 지표가 필..

[Object Detection] Selective Search (선택적 탐색)

개요 이전 포스팅에서 배운 Sliding Window 방식은 일정 크기의 window가 이미지의 모든 영역을 sliding하면서 객체를 찾기 때문에 계산량이 매우 많다는 단점이 있었습니다. 이 단점을 보완하기 위해서 객체가 있을만한 후보 영역을 미리 찾고 그 영역 내에서만 객체를 찾는 방식을 Region Proposal(영역 추정) 방식이라고 합니다. 오늘은 이 Region Proposal의 대표적인 방법 중 하나이자 초기 Object Detection 모델인 R-CNN에 사용된 Selective Search에 대해서 살펴보도록 하겠습니다. Selective Search 과정 Selective Search 이전에 물체가 있을만한 영역을 모두 조사해보는 Exhaustive Search 방법이 있었습니다. ..

[Object Detection] Sliding Window

개요 2개 이상의 객체를 찾아야하는 Object Detection은 feature map이 복잡하게 나타나 객체의 위치를 잘 찾을 수 없었습니다. 단순하게 생각해본다면, 이는 전체 입력 이미지를 작은 영역들로 나누고 각각의 작은 영역 내에서 객체의 위치를 찾는다면 해결할 수 있습니다. 입력 이미지를 작은 영역으로 나눌수록 feature map도 간단해지기 때문이죠. 이러한 방식을 Sliding Window라고 합니다. Sliding Window Slinding Window 기법은 일정 크기의 window를 이동시키며, window 내에서 object를 detection하는 방식입니다. 이때 window는 마치 CNN에서 커널이 입력 이미지와 연산하며 움직이는 것처럼 왼쪽 상단에서부터 오른쪽 하단으로 이동..

[Object Detection] 개념 정리

Object Detection이란? Object Detection이 무엇인지 정확히 알기 위해서는 Classification과 Localization에 대해서 먼저 알아야 합니다. Classification Classification이란 입력으로 들어온 이미지 안의 객체(object)의 종류(이를 class라고 합니다.)를 구분하는 것을 말합니다. 가령 아래 그림과 같은 강아지 이미지가 입력으로 들어올 때 이미지 안의 객체가 고양이, 강아지, 말 class 중 어떤 class에 속하는지 분류하는 것을 뜻합니다. Localization Localization은 주어진 이미지 안의 객체가 어느 위치에 있는지 위치 정보를 출력해줍니다. 객체의 위치 정보는 주로 Bounding Box(객체를 둘러싼 네모)로 표..

[OpenCV] 허프 변환 (Hough Transform) - 원 검출

개요 이전 포스팅에서는 영상에서 허프 변환으로 직선을 검출하는 원리와 OpenCV에서 제공하는 함수를 알아봤습니다. 허프 변환을 이용하면 영상 내의 원 또한 검출할 수 있는데, 이번에는 원을 검출하는 원리와 OpenCV 함수에 대해서 알아보겠습니다. 허프 변환 (원 검출) 원리 직선 검출의 핵심은 xy 공간에서 에지로 판별된 점들을 ρθ 공간으로 변환하여 생성된 곡선들이, 임계값 이상으로 교차되는 점들을 찾음으로써 직선을 검출한다는 것이었습니다. 원 또한 이 방식으로 검출할 수 있습니다. 일반적으로 중점이 (a, b)이고 반지름이 r인 원의 방정식은 다음과 같이 표현합니다. 이 원의 방정식은 세 개의 파라미터를 가지고 있으므로 허프 변환을 그대로 사용하려면 a, b, r의 3차원 파라미터 공간으로 변환시..

Perception/OpenCV 2023.02.18

[OpenCV] 허프 변환 (Hough Transform) - 직선 검출

개요 이전 포스팅에서 물체의 테두리 즉 edge를 검출하는 케니 에지 검출(canny edge detection)에 대해서 배웠다면, 이번에는 영상에서 추출된 에지 정보를 사용해서 직선을 검출하는 방법에 대해서 알아보도록 하겠습니다. 영상에서 직선을 검출한다면 이는 자율 주행 자동차에서 차선을 검출하는데도 사용할 수 있을 것입니다. 영상에서 직선을 검출하는 도구로 허프 변환(Hough Transform)이 많이 사용됩니다. 허프 변환 (직선 검출 원리) 허프 변환은 2차원 xy 좌표에서 직선의 방정식을 파라미터 공간으로 변환하여 직선을 검출합니다. 일반적으로 직선의 방정식은 xy 좌표에서 다음과 같습니다. $y = a·x + b$ 이를 적당히 이항하면 다음과 같이 ab 좌표 공간에서 기울기가 -x이고, ..

Perception/OpenCV 2023.02.13

[OpenCV] 캐니 에지 검출(Canny edge detection)

개요 살면서 보호색이 뛰어난 동물들이나 곤충들을 본 적 있을 것입니다. 이들은 자신의 주변 환경과 비슷한 색이나 밝기를 가지고 있어서 사람 눈으로 잘 인식할 수 없을 때가 있죠. 이렇게 사람은 눈으로 들어온 이미지의 색이나 밝기가 급격하게 변하는 부분으로 테두리를 인식하고 사물을 구별해 냅니다. 컴퓨터에서도 이와 마찬가지로 이미지의 테두리(edge)를 인식하게 할 수 있습니다. 다만 컴퓨터에서의 이미지는 RGB 값 행렬인 픽셀로 이루어져 있기 때문에 픽셀 값이 급격하게 변하는 부분을 이용하면 테두리를 인식할 수 있습니다. 에지(edge) 검출 방법 결국 컴퓨터에 들어온 이미지 픽셀 값의 변화율을 측정해 변화율이 큰 부분을 고르면 edge를 인식하게 할 수 있습니다. 픽셀 값의 변화율은 저희에게 익숙한 미..

Perception/OpenCV 2023.02.12