본문 바로가기

Computer Vision Study

Chapter1) 1. Object Detection 과 Segmentation 개요 - 8. NMS(Non Max Suppression) 의 이해

본 카테고리의 모든 게시물은 개인적인 이해를 위한 Inflearn 의 권철민 강사님의 컴퓨터 비전 강의에 대한 요약임을 밝힙니다.

 

목차

1. Object Detection 과 Segmentation 개요

2. Object Detection 주요 구성 요소 및 왜 Object Detection 이 어려운가?

3. Object Localization 과 Detection 의 이해

4. Region Proposal(영역 추정)의 이해와 슬라이딩 윈도우와의 비교

5. Region Proposal(영역 추정) - Selective Search 기법

6. Selective Search 실습 및 시각화

7. IOU(Intersection over Union)의 이해와 구현 실습

8. NMS(Non Max Suppression)의 이해

 

1. Object Detection 과 Segmentation 개요

 

Localization / Detection / Segmentation : Object(s) 의 위치를 찾아내는 것

 

Localization : 하나의 이미지에 대하여 하나의 object 를 찾아내는 것

Detection : 하나의 이미지에 대하여 여러 개의 object 를 찾아내는 것

Segmentation : 개별 픽셀 값을 기준으로 classification task 를 수행하는 것

 

Localization 과 Detection 은 해당 object의 위치를 Bounding box 로 지정하여 찾는 것

간단하게 과정을 살펴보면

해당 object 의 위치를 Bounding box 로 찾고, Bounding box 내의 object 를 판별한다.

여기서 Bounding box 를 찾아내는 것은 달리 말하면 box 의 좌표값을 예측하는 것과 동일하다고 볼 수 있고 그렇기에 Bounding box regression 과 box 내 object 를 찾는 것이 결과적으로 classification 이라고 보아 두개의 문제가 합쳐진 것으로 생각할 수 있다.

Object Detection History

Deep Learning 을 기반으로 Classification Task 에서 Object Detection 에 대한 연구가 발전하여 위와 같은 순서의 역사를 갖는다.

One-stage detector : 바로 입력이미지에 분류를 시행하는 것

Two-stage detector : 대상의 위치를 미리 가늠하고 분류(인식)을 시행하는 것

 

객체 인식에 대한 두 가지 방법론이 존재하는데 어떤 특정 방법론에 장점을 보인다는 판단보다는 Trade off 관계를 보인다.

예를들어 One-stage detector 의 초기 방법론인 YOLO1 의 경우 실시간 Video 에 적용한다면 수행 시간을 굉장히 줄였지만, 정확도가 굉장히 낮은 것으로 실제 이용은 불가능 하였다. 

Two-stage detector 의 RCNN , SPPNet 과 같은 방법론은 수행 시간은 길지만, 정확도가 비교적 높은 것을 포함한다.

하지만 비교적 최근에 만들어진 방법들의 경우 One-stage 나 Two-stage 에만 국한되지 않고 짧은 수행 시간과 정확도 측면에서도 괜찮은 값을 보여준다.

 

2. Object Detection 주요 구성 요소 및 왜 Object Detection 이 어려운가?

 

주요 구성 요소? (앞으로의 수업에서 이것들을 각각 다룰 예정에 있다.)

1) 영역 추정 : Region Proposal

2) Detection 을 위한 Deep Learning 네트워크 구성

Feature Extraction(classification layer) : Backbone

FPN : Neck

Network Prediction(classification + regression) : Head

3) Detection 을 구성하는 기타 요소

IOU, NMS, mAP, Anchor Box

 

일반적인 Object Detection 모델 도식화

3. Object Localization 과 Detection 의 이해

 

Localization 은 인식하고자 하는 대상에 대하여 Bounding box 를 좌표로 표현한다. Bounding box regression 은 해당 좌표값을 regression 을 통하여 예측하는 task 이다.

Bounding box 에 대한 학습은 간단하게 원본 이미지에 label 이 되어줄 bounding box 좌표를 선택하고, regression 을 통하여 예측된 좌표와 Loss function 을 최적화 할 수 있도록 예측되는 값을 선택한다.

 

아래의 그림과 같이 초기에 주황색과 같은 bounding box 가 예측되었다면 여러 번의 학습 끝 빨간색과 같은 유사한 bounding box 를 갖을 수 있는 regression 모델이 되는 것 이다.

또한 Classification 의 문제를  해당 Object 가 Car 인지 Cat ? Dog ? 인지에 대한 확률 스코어인 Confidence Score 를 통하여 풀어낼 수 있다. 물론 이 또한 classification 에 대한 Loss function 을 최적화 하는 것을 택할 것 이다.

 

만약 두 개 이상의 Object 를 검출해야한다면?

 

4. Region Proposal(영역 추정)의 이해와 슬라이딩 윈도우와의 비교

 

Sliding Window 방식

 

Window 를 왼쪽 상단에서부터 오른쪽 하단으로 이동시키면서 object 를 detection 하는 방식

(1) 다양한 형태의 window 를 각각 sliding 시키는 방법

(2) window scale 은 고정하고, scale 은 변경한 여러 이미지를 사용

 

Region Proposal(영역 추정) 방식

Object 가 있을만한 후보영역을 찾는 것.

대표적으로 SS 라는 약어를 갖는 (Selective Search) 방법이 있다.

 

5. Region Proposal(영역 추정) - Selective Search 기법

 

컬러, 무늬, 크기, 형태에 따라 유사한 Region 을 계층적으로 그룹핑하는 방법으로 계산

 

Selective Search 는 최초에는 Pixel Intensity 기반한 graph-based segment 기법에 따라 Over Segmentation 을 수행한다.

 

(1) 개별 Segment 된 모든 부분들을 Bounding box 로 만들어서 Region Proposal 리스트로 추가

(2) 컬러, 무늬, 크기, 형태에 따라 유사도가 비슷한 Segment들을 그룹핑한다.

(3) 다시 (1) 의 Region Proposal 리스트 추가, (2) 유사도가 비슷한 Segment들 그룹핑을 반복하면서 Region Proposal을 수행

 

Selective Search 구현 결과 (너무 많은 bounding box 를 갖는 것은 box 에 대한 Min size 를 키워 바꿀 수 있다.)
Box 의 Min Size 를 증가한 후 결과 Bounding box 의 개수가 줄어드는 것을 볼 수 있다.

 

7. IOU(Intersection over Union)의 이해와 구현 실습

 

IoU : 모델이 예측한 결과와 실측(Ground Truth) Box 가 얼마나 정확하게 겹치는가를 나타내는 지표

성능은 사람의 판단을 기준으로 하는 지표이기 때문에 

가령 예를들어 0.5가 기준이 되어 0.5 이하의 경우 Poor 이상은 Good 0.9 이상은 Excellent 가 될 수 있다.

사전 Ground Truth 에 영역을 지정하여 주었다.
IoU 에 따른 Detection 성능을 함께 시각화 하였다. (문자가 깨지는 현상은 하나의 박스가 아니라 중복되는 여러 개의 박스의 수치가 함께 기록되기 때문이다. 하지만 코드 구현 시 각각의 개별 값을 숫자로 표현하여 출력하였기에 확인 가능하다.)

 

8. NMS(Non Max Suppression)의 이해

 

Detect 된 Object 의 Bounding box 중 비슷한 위치에 있는 box 를 제거하고 가장 적합한 box 를 선택하는 기법

과정

(1) Detect 된 bounding box 별로 특정 Confidence threshold 이하 bounding box는 먼저 제거 (ex: confidence score < 0.5)

(2) 가장 높은 confidence score 를 가진 box 순으로 내림차순 정렬하고 아래의 로직을 모든 box에 순차 적용

      - 높은 confidence score 를 가진 box 와 겹치는 다른 box 를 모두 조사하여 IoU 가 특정 threshold 이상인 box 를 모두 제거

         (ex: IoU Threshold > 0.4)

(3) 남아 있는 box 만 선택

iou.py
0.00MB
selective_search.py
0.00MB