전체 글 46

[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

[강화학습] 17 - A3C 알고리즘

개요 앞에서 배운 DQN 알고리즘은 그때그때의 샘플들로 학습했을 때, 샘플끼리의 연관성으로 에이전트가 잘못 학습하는 문제를 해결하기 위해서 경험 리플레이를 사용했습니다. 샘플을 리플레이 메모리에 많이 모은 후에 임의 추출한 샘플을 사용해 성공적인 학습을 이끌어냈죠. 하지만 리플레이 메모리가 커서 컴퓨터의 많은 메모리를 차지한다면 학습의 속도는 느려지며, 과거의 정책을 사용하기 때문에 오프폴리시 강화학습(DQN의 경우 큐러닝)만을 사용해야 한다는 단점이 있습니다. 이러한 단점 때문에 다른 방법으로 문제에 접근해 만들어진 것이 A3C(Asynchronous Advantage Actor-Critic) 알고리즘입니다. A3C란 무엇일까? DQN 알고리즘이 리플레이 메모리를 사용해 샘플 사이의 연관성을 깼다면, ..

[강화학습] 16 - Breakout DQN

개요 앞의 카트폴 예제는 화면으로 학습할 필요가 없었기 때문에 DQN 알고리즘에서 컨볼루션 신경망이 아닌 간단한 인공신경망을 사용했습니다. 브레이크아웃에서의 DQN 알고리즘은 카트폴에서의 DQN 알고리즘처럼 리플레이 메모리와 타깃신경망이 사용되면서 컨볼루션 신경망이 사용되기 때문에 추가로 알아야 할 점이 있습니다. 알아야 할 추가 사항 브레이크아웃 게임 이미지는 아래 그림과 같이 색상 정보를 포함하여 210 × 160 × 3(RGB)의 크기를 가집니다. 하지만 학습 자체에는 현재 점수, 목숨 개수와 색상 정보는 필요가 없습니다. 따라서 계산량을 줄여 학습 속도를 높이기 위해서 아래 그림처럼 이미지를 흑백으로 만들고 불필요한 부분을 잘라 84 × 84 × 1의 크기로 만들어줍니다. 이 과정을 전처리라고 합..