본문 바로가기

필사적 필사

NMS 알고리즘

NMS(non - maximum suppresssion)을 사용하여 연산량을 줄이고, aAP도 올리는 효과를 본다고 한다.

일반적으로 영상엣지를 찾기 위한 NMS는 현재 픽셀을 기준으로 주변의 픽셀과 비교했을 때 최대값인 경우 그래도 놔두고, 아닐 경우(비 최대) 억제(제거)하는 것이다.

(차 한대에 여러가지 bounding box가 그려지는 경우와 같은)을 제거하기 위한 방법으로 사용된다.

def nms(boxes, probs, threshold):
	"""Non-Maximum suppression.
    Args:
    	boxes : array of [cx, cy, w, h] (center formet)
        prob : array of probabilities
        threshold : two boxes are considered overlapping if their IOU is largher than
        this threshold
        form : 'center' or 'diagonal'
    Returns:
    	keep : array of True or False.
    """
    order = probs.argsort()[::-1]
    keep = [True]*len(order)
    
    for i in range(len(order)-1):
    	ovps = batch_iou(boxes[order[i+1:]], boxes[order[i]])
        for jm ov in enumerate(ovps):
        	if ov > threshold:
            	keep[order[j+i+1]] = False
    return keep

IoU = Area of overlap / Area of Union

결국 전체 박스 영역 중 겹치는 부분의 비율이다.

NMS를 하려는 가장 큰 이유는 역시 중복제거이기 때문에 예측한 박스들 중 IOU가 일정 이상인 것들에 대해서 수행하게 된다. 코드만 봐도 어떻게 수행하는지 대략 감을 잡을 수 있겠으나 간단히 설명하면

1. 동일한 클래스에 대해 높은-낮은 confidence순서로 정렬한다.(line 13)
2. 가장 confidence가 높은 boundingBox와 IOU가 일정 이상인 bounding box는 동일한 물체를 detect했다고 판단하여 기준다.(16-20) 보통 50%(0.5)이상인 경우 지우는 경우를 종종 보았다.

추가로 러시아의 연구자가 YOLO(you look only once)에 대해 설명하는 슬라이드에서 nms또한 자세히 다뤄주어 이해하는데 도움이 많이 되었다.

https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?start=false&loop=false&delayms=3000&slide=id.p


 

YOLO

YOLO You Only Look Once: Unified, Real-Time Object Detection Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi

docs.google.com

 

본 글은 아래의 글을 개인적 공부를 위해 필사하였습니다.

https://dyndy.tistory.com/275

 

NMS (non-maximum-suppression)

오래간만의 포스팅. 요즘 딥러닝을 이용한 여러 Object Detection 알고리즘을 구경하는데, 대부분 NMS (non-maximum suppression)을 사용하여 연산량을 줄이고, mAP도 올리는 효과를 본다고 한다. 물론 필수로 필..

dyndy.tistory.com

 

'필사적 필사' 카테고리의 다른 글

프로토타입 기반 프로그래밍  (0) 2020.01.21
JIT 컴파일  (0) 2020.01.21
.net framework란 무엇일까?  (0) 2019.12.31
DEBUG와 RELEASE 컴파일의 차이  (0) 2019.12.11
여러가지 확장자에 관하여  (0) 2019.12.11