[Week4] 경계 상자 예측하기 + 합집합 위의 교집합(IOU)
앞선 포스팅에서 sliding window를 통해 input이미지의 object detection을 알아보았지만, 여전히 문제는 남아있다. 픽셀상의 문제로 bounding box가 object와 정확하게 일치하지 않는 것이다.
이 문제를 해결하기 위해서는 YOLO(You Only Look Once) 알고리즘을 사용해야 한다. 기본적인 원리는 image classiffy나 object localization과 동일하다.
우선 훈련 셋을 만들기 위해 output 레이블 y를 정의한다. YOLO 알고리즘은 두 객체의 중간 점을 취한 다음, 중간 점을 포함하는 영역에 이 객체를 해당하는 것이다. 그렇게 되면 아래와 같은 사진의 결과 레이블이 나온다. 보라색 레이블은 object가 없는 영역의 결과 행렬이고 초록색 레이블은 object가 있는 영역의 결과 행렬이다.
그러면 그 결과로 8차원 결과 벡터를 갖게 되고, 예시 이미지는 3 x 3 그리드 셀 이미지이기 때문에 전체 볼륨은 3 x 3 이므로 target output은 3 x 3 x 8이 된다. 결과가 나왔으면 방향 전파를 사용하여 input값을 output 볼륨과 매핑하여 신경망을 훈련시고 이렇게 되면 신경망은 object에 있어 정확한 바운딩 박스를 도출할 수 있다.
간단하게 말하자면 객체의 중간 점을 포함하는 그리드 셀 하나에 해당 객체를 할당하는 방법으로 라벨링하면 정확한 object의 bounding box를 얻어낼 수 있다는 것이다.
그렇다면 물체 감지 알고리즘이 잘 동작하는지는 어떻게 알 수 있을까? 합집합 위의 교집합Intersection Over Union이라는 물체 감지 알고리즘 평가 함수를 통해 알 수 있다.
IOU함수란 참 bounding box와 결과 bounding box 사이의 교집합을 계산하는 함수이다. 위 이미지의 빨간색(참 bounding box) 박스와 보라색(결과 bounding box) 박스 사이의 노란색 공통 부분을 의미한다. 그리고 이것을 참 bounding box와 결과 bounding box의 초록색 합집합 부분으로 나누는 것이다. 그리고 그 결과값이 0.5보다 크면 맞다고 판단한다
그리고 만약 더 정확하게 맞추고 싶다면 0.5를 1이하의 더 높은 값으로 바꾸면 된다.
이렇게 IOU를 사용하면 object localization 알고리즘이 정확한지 평가할 수 있게 된다!