728x90

 객체 탐지 문제에서 발생하는 또 다른 문제로는 같은 객체의 영역을 겹쳐서 나타내는 박스의 셋이 출력되는 경우가 있습니다.  이건 실제 객체 탐지 결과가 아니라 슬라이드의 예시인데 이 두 강아지 예시에서 객체 탐지기는 객체 하나당 박스 하나가 아니라 객체를 포함시키는 여러개의 상자를 출력하는데 이런 상황에서 주의해야 합니다.

 

 이 박스 겹침 문제를 해결하기 위해서는 객체 검출 시스템으로부터 얻은 이 상자들에다가 후처리 과정을 하면 되는데, 비최대 억제 non max suppresion NMS라고 부르는 알고리즘을 사용합니다. 이 비최대 억제를 구현하는 수 많은 방법들이 있긴 한데, 가장 간단한 방법은 탐욕 알고리즘입니다. 객체 검출기로 얻은 출력들을 모두 박스 들이며, 각 박스들은 카테고리에 해당하는 확률을 가지고 있습니다. 여기에 4개의 박스가 있는데, 각 상자들은 서로 다른 분류 스코어를 만들고 있어요. 

 

 여기서 비최대 억제를 위한 탐욕 알고리즘은 우선 가장 높은 스코어를 갖는 박스를 선택하는데 여기서 파란색 상자가 가장 큰 스코어를 가지고  있고, 이 파란 상자와 다른 상자들의 IoU를 계산합니다.

 

 거기다가 0.7 보다 큰 경우로 임계화를 하면 검출기로 구한 두 상자의 IoU가 이 임계치보다 큰 경우 서로 다른 객체를 감싸고 있는것이 아니라 동일한 물체를 겹쳐지게 탐지한다고 볼 수 있겠습니다. 그러고 나서 작은 박스를 제거 시키면 됩니다.

 

 이 예시에서는 파란색 박스와 주황색 박스의 IoU가 0.78이며 스코어가 낮은 오랜지색 박스를 제거하겠습니다. 오렌지 박스를 제거한 다음에 다시 스탭 1로 가서 다음 가장 큰 스코어를 갖는 박스를 찾는데 여기서 보라색 박스의 확률이 0.75이고, 다시 가장 큰 박스와 나머지 박스들의 IoU를 계산하는데 여기서 작은 박스는  노란색 박스 하나 뿐이며 노란 박스와 보라 박스의 IoU가 0.74이니 

 

 

 노란색 박스를 제거해서, 객체 검출기의 최종 결과는 파란 박스와 보라 박스가 되며 겹치는 부분없이 잘 분리가 되었습니다.  

 

 

 

 이 알고리즘은 꽤 합리적으로 보으로보이며, 기본적인 객체 탐지기들은 대부분 이런 비최대 억제 알고리즘과 같은 방법으로 겹치는 부분들을 제거 합니다. 하지만 비 최대 억제는 문제점을 가지고 있는데, 이미지에 서로 겹치는 부분이 많은 객체가 포함되는 경우에 어려움을 겪습니다. 

 

 지금 당장은 컴퓨터 비전 커뮤니티에서 좋은 방법은 없습니다. 위와 같이 아주 많은 군중 사진처럼 박스가 많이 겹치는 사진에서는 아주 가까운 박스 끼리 구분 시키기가 매우어려우며 객체 탐지 분야의 도전 과제가 되겠습니다. 

 

  또 다뤄야될 주제로는 지금까지 각각의 박스를 비교하기 위해서 IoU 척도를 사용하였습니다. 하지만 객체 탐지기가 테스트셋으로 얼마나 잘 동작하는지 전체적으로 평가하는 척도가 필요해요. 이미지 분류의 경우 간단했는데, 테스트 셋의 예측 결과가 실제 라벨과  비교해서 정확도를 구했으면 됬거든요. 그래서 이미지 분류 문제는 계산하기 간편한 정확도를 이용해서 어떤 모델이 더 좋은지 비교할 수 있었죠.

 

 

 하지만 객체 탐지 문제에서는 꽤 복잡합니다. 여기서 테스트 셋에 대한 모델의 성능을 정량화할필요가 있는데, 검출은 훨씬 복잡한 작업이며 불행히도 검출 결과를 비교하기 위한 척도는 지저분 합니다.

 

  하지만 기본적으로는 우린 주어진 데이터셋으로 객체 탐지기를 학습시키고,  이게 얼마나 객체를 탐지를 잘하는지를 나타내는 수를 구해야하는데 우리가 할일은 Mean Average Precision MAP라는 척도를 계산하겠습니다. 이 척도는 객체 탐지기를 비교하기 위한 표준 척도가 되겠습니다.

 

 가장 먼저  학습한 객체 검출기를 테스트셋으로 돌리고, 비최대 억제로 겹치는 검출 영역을 제거한뒤  박스들이 남을탠데 이 박스는 각각의 카테고리에 대한 스코어를 가지고 있을겁니다. 그리고 각 카테고리별로 개별적으로  평균 정밀도 average precision라고 부르는 수를 계싼하겠습습니다.  이 값은 한 카테고리에대해서 스코어가 전반적으로 얼마나 되는지를 알려줘요, 

 

 여러분들이 평균 정밀도라고 하는 척도와 친숙하다면, 이건 정밀도, 재현율 곡선 아래 영역의 넓이와 동일합니다. 이개념과 친숙하지않으면 조금더 자세히 들어가볼게요. 우리가 다루고자 하는 카테고리가 있으면, 테스트 셋으로 검출한 결과를 정렬시키겠습니다. 이 과정은 카테고리별로 개별적으로 진행해요.  

 

 여기에  파란색 박스는 검출기로 얻은 강아지 카테고리들의 스코어 확률로 가장큰건 0.99, 두번째로 큰건 p(dog) = 0.95, 쭉 값니다.  그다음에는 주황색 박스는 테스트셋의 실제 강아지 영역을 나타내겠습니다.  

 

 

 스코어에 따라 정렬한 검출 영역과 실제 영역과 IoU가 0.5 이상으로 임계화가 되면 매칭을 하겠습니다. p(dog) = 0.99인 경우, 실제로 그 이미지의 어느 groud truth dog 박스와 매치가 된다고 가정해서, 참 긍정으로 판별하겠습니다. 

 

 

 

 그렇게 올바르게 검출을 하면, 정밀도 재현율 곡선에서 한 점의 위치를 계산 할수가 있겠습니다. 아직 우리는 가장 높은 스코어를 가진 박스의 경우 만을 고려하였습니다. 정밀도 precision은  검출 결과가 실제로 참인 경우일 비율이고, 재현율  recall은  전체 ground truth 중에서 실제로 맞을 비율이 되겠습니다. 

 

 이 경우에는 가장 높은 스코어를 가지는 경우를 다루다보니 정밀도는 100%이고, 재현율은 세 그라운드 트루스 중 하나를 찾아내었기 때문이 1/3이 되겠습니다. 이렇게 해서 정밀도 재현율 그래프에서 한 점을 구해내었습니다.

 

 이 과정을 다음 검출 박스에 대해서 반복하는데, 두 번째로 가장 큰 스코어를 갖는 강아지 영역은 또 다른 그라운드 트루스 박스와 매치가 된다고 가정하면 2개의 참 긍정 검출 결과를 찾아내었습니다. 세 그라운트 트루스 영역 중에서 2개를 찾아내었으므로 재현율은 2/3이 되겠습니다.

 세 번째후보 영역을 거짓 긍정이라 한다면, 이미지 상에서 매치되는 그라운드 트루스 영역이 없을 것이고 새로운 정밀도 재현율 곡선 상의 점이 계산되겠습니다.

   다음의 경우도 거짓 긍정이라면 재현율은 그대로이나 정밀도가 더 떨어지게되고 

  마지막 영역이 참 긍정인 경우, 마지막 그라운드 트루스와 매치가 되어  정밀도는 5개의 검출 결과 중에서 3개를 참 긍정이므로 3/5가 되며, 재현율은 실제 그라운드 트루스를 다 찾아내었으므로 1이 되겠습니다.

 

 이 재현율 정밀도 곡선을 채워서 아래 넓이를 계산하면 0 ~ 1사이의 값이 나올건데 0이면 성능이 나쁜것이고, 1이라면 좋다고 할 수 있으며 이 값을 해당 카테고리의 평균 정밀도 average precision이라고 합니다. 이 객체 탐지 결과의 경우 강아지 평균 정밀도는 0.86이 되겠습니다. 

 

 

  ap 수가 무엇을 나타내냐면, 한번 1.0을 받으려면 어떻게 해야하는지 생각해보면 좋은데  ap 1.0을 얻으려면 거짓 긍정이 나오기전에 모든 참 긍정이 매치가 되겠습니다. 그래서 ap 1.0은 우리의 모델로 구한 검출 결과가 모든 참 긍정이며, 중복된 검출이나 거짓 긍정이 없다고 볼수 있겠습니다. 그리고 모든 영역들이 실제 그라운드 트루스 영역과 적어도 0.5 iou이상으로 매치되고 있습니다. 

 

 하지만 실제로 ap 1.0은 아주 얻기 힘들어요. 이 ap 척도를 사용하는 이유는 다은 응용 분야에서 얼마나 많이 올바른 영역을 찾아낼지 놓여낼지 트레이드 오프를 하길 원할수 있는데, 자율 주행차 같은 분야에서는  다른 차를 놓치지 않는게 매우 중요하다보니 아무것도 놓치기 싫을거고  모든 검출 결과가 올바르길 원할겁니다. 

 

  그래서 다양한 사용 경우에 따라서 서로다른 임계치와 정밀도와 재현율 사이에 트레이드 오프가 필요하지만, 이 평균 정밀도 척도를 계산하면 이건 정밀도와 재현율 사이에 가능한 모든 트레이드 오프 관계를 정리하다보니 사람들이 객체 탐지기를 평가하는데 자주 사용합니다

 

 그래서 실제 사용시에는  모든 객체 카테고리에 대해서 계산해서 평균 정밀도를 구하고 모든 카테고리에 대한 평균 정밀도의 평균을  구할수가 있겠습니다.  하지만 이게 잘못 될수도 있는데, 이  평균 정밀도의 평균을 계산할때 박스의 위치 추정이 잘되는지 고려하지 않고 검출된 박스와 그라운드 트루스와 iou만 보고 매칭하기 때문입니다. 그래서 실제로 정밀하게 검출했는지를 알수 없습니다. 

 

 

 실제 사용시에는 이 전체 과정을 다른 iou 임계치로 돌려볼수가 있고, 이렇게 다양한 임계치 값에 대한 mAP 값을 얻을수가 있습니다. 이 과정은 객체 검출기를 평가하기에는 매우 복잡하지만 사람들이 실제로 사용하는 만큼 유용한 방법이고, 여러분들이 객체 검출에 관한 논문을 읽어볼때마다 mAP수치들을 볼수 있을거에요. 

 

300x250

+ Recent posts