Anchor Box 만들 때 K-Means 를 어떻게 사용하는지 여태까지 이해한 내용 정리
우선 K-Means는 2차원 데이터의 경우 2차원 좌표 평면에 데이터 분포들을 찍은 다음 그 중 원하는 만큼의 centroid를 찍어서 샘플들을 가장 가까운 centroid cluster에 할당하는 것으로 보면 된다.
그런데 anchor box는 어떻게 쓰이는 것이냐?
anchor box aspect ratio를 구할 때 쓰이는 것 같다.
왜냐하면, anchor box의 aspect ratio나 scale이 나름 hyper-parameter로서 작용하는데, 잘못된 설정은 모델의 객체 탐지 성능을 낮출 수 있기 때문이다.(예 : 정말 작은 크기의 객체는 듬성듬성 있는 anchor box를 사이에서 절대로 detect 될 수 없다.)
그러면 아래는 데이터셋에 적절한 aspect ratio를 구하는 logic이다.
Ground Truth bbox들의 width 와 height을 구하고 이들을 normalise 한다.
normalise 된 값을 각각 x축, y축 좌표로 할당하고 그렇게 모든 bbox들을 2차원 평면에 놓는다.
K-Means의 centroid 개수를 설정한다.
clustering을 실시한다.
이 때 clustering fit이 끝나면 각각 나온 centroid의 좌표를 확인한다.
이 때 좌표 값이 (0.2, 0.4)라고 치면, 하나의 클러스터로 모아진 bbox들의 특징은 width : height = 1 : 2 를 갖는 것이다.
이런 식으로 계산된 aspect ratio가 적절한지 확인하기 위해 마지막에는 Ground Truth bbox들과 IoU를 계산한다.(아마 normalise 된 Ground Truth겠지..?)