Object Detection이란?
Object Detection이 무엇인지 정확히 알기 위해서는 Classification과 Localization에 대해서 먼저 알아야 합니다.
Classification
Classification이란 입력으로 들어온 이미지 안의 객체(object)의 종류(이를 class라고 합니다.)를 구분하는 것을 말합니다.
가령 아래 그림과 같은 강아지 이미지가 입력으로 들어올 때 이미지 안의 객체가 고양이, 강아지, 말 class 중 어떤 class에 속하는지 분류하는 것을 뜻합니다.
Localization
Localization은 주어진 이미지 안의 객체가 어느 위치에 있는지 위치 정보를 출력해줍니다.
객체의 위치 정보는 주로 Bounding Box(객체를 둘러싼 네모)로 표현하여 출력해주며, 모든 좌표값이 아닌 left top(좌측 상단)과 right bottom(우측 하단) 좌표값만을 출력합니다.
Localization은 Classification과 함께 사용되어, 객체의 위치 정보를 찾고 그 위치에 있는 객체가 어떤 class인지 분류해줍니다.
Object Detection
Localization + Classification이 단일 객체의 위치를 찾고 class를 분류해줬다면, Object Detection은 여러 객체의 위치를 찾고 class를 분류해주는 것을 의미합니다.
Bounding Box로 여러 객체의 위치를 출력하고(Bounding box regression) 그 Box 안에 있는 객체가 각각 무엇인지 분류(Classification)까지 해주는 것이죠.
Segmentation
추가로 Segmentation은 Object Detection보다 더 발전된 형태로, pixel 레벨에서 Detection을 수행하는 것입니다.
찾고자 하는 객체를 pixel 단위로 Classification하여 객체의 영역을 표시해줍니다.
위 개념들이 그림으로 잘 표현되어 있어서 보시고 다시 한 번 정리하면 좋을 듯 합니다.
그렇다면 Object Detection을 어떻게 구현할 수 있을까요? 먼저 Classificaction과 Localization을 어떻게 구현하는지부터 살펴봅시다.
구현 방법
먼저 Classification은 이전에 배운 CNN(컨볼루션 신경망)을 사용하면 쉽게 구현할 수 있습니다.
CNN에 관련된 내용은 아래 링크에서 찾을 수 있습니다.
https://developer-lionhong.tistory.com/25
[강화학습] 15 - 브레이크아웃과 CNN
개요 지금까지 저희는 그리드월드와 카트폴과 같은 간단한 예제에 강화학습 알고리즘을 적용해봤습니다. 이 두 예제는 간단하며 인공신경망의 입력으로 사용된 상태 공간도 작았습니다. 하지
developer-lionhong.tistory.com
이미 CNN 모델이 여러 Class 이미지들에 의해 훈련되었다고 가정할 때, 위의 그림과 같이 먼저 입력된 이미지로부터 필터로 특징을 추출해 feature map이 만들어집니다.
이후 feature map을 플랫시킨 후 완전 연결 계층(Fully Connected Layer)을 통과해 최종적으로 출력 층의 softmax 활성함수(0과 1 사이의 값을 출력하고 출력층에서 나오는 출력이 다 합해서 1이 나오게 하는 함수)를 통과하면 각 class에 해당할 확률이 나오게 됩니다.
높은 확률에 해당하는 class로 입력 이미지를 분류하면 Classification은 끝이 나는 것이죠.
Localization은 Classification 방법에서 한 가지만 추가해주면 구현할 수 있습니다. 바로 Class label 뿐만 아니라 Bounding Box의 좌표를 예측하는 부분(Bounding box regression)도 만들어 학습시키면 신경망의 출력이 Bounding Box 좌표와 각 class에 해당할 확률이 나오게 됩니다.
따라서 Classification과 동시에 Localization까지도 구현할 수 있는 것이죠. 이를 그림으로 표현하면 다음과 같습니다.
Object Detection에서의 문제점
위의 방법을 2개 이상의 객체를 검출해야하는 Object Detection에서 사용한다면 문제가 발생합니다.
Localization과 Classification은 단일 객체의 위치를 찾고 분류하는 것이기 때문에 feature map도 단순하게 표현되어 객체의 위치를 찾기 쉽습니다.
하지만 여러 개 그리고 여러 종류의 객체에 대한 복잡한 feature map을 보고 한꺼번에 여러 객체가 어디에 있는지 찾기란 어렵기 때문에 Object Detection이 잘 수행되지 않는 것이죠.
이를 해결할 수 있는 방법 중 하나가 Sliding Window 방식입니다. 이는 다음 포스팅에서 이어서 설명하도록 하겠습니다.
'Perception > Object Detection' 카테고리의 다른 글
[Object Detection] R-CNN (0) | 2023.04.13 |
---|---|
[Object Detection] mAP - Object Detection 성능 평가 지표 (0) | 2023.04.05 |
[Object Detection] IoU(Intersection over Union) & NMS(Non-Max Suppression) (0) | 2023.04.03 |
[Object Detection] Selective Search (선택적 탐색) (0) | 2023.04.01 |
[Object Detection] Sliding Window (0) | 2023.03.04 |