제가 공부한 내용을 정리한 글입니다. 제가 나중에 다시 볼려고 작성한 글이다보니 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다.
원본 이미지 위에 Bounding box 를 추가하여 아래 설명에 대한 이해를 돕고자 한다[1].
Recall
Recall 은 인식/탐지 기술의 분야에서 학술적으로 검출율을 의미한다.
맨 위의 이미지로 예를 들자면, 이미지 안에는 총 6마리의 동물이 존재하지만, 객체(object) 로서 검출(detected) 된 것은 3마리 뿐이다. 직관적으로 recall 은 검출율(detection rate) 라고 이해할 수도 있다.
즉 recall 은 객체들을 얼마나 빠뜨리지 않고 잘 찾아내는가에 대한 평가 지표이다.
recall = tp / (tp + fn) 이므로
개 클래스에 대해서
위 이미지의 경우 recall = 2/6 = 33.333...% 이다.
Precision
Precision 은 인식된(혹은 검출된) 객체에 대한 분류(classification)의 정확도라고 할 수 있다. 위 이미지에서 검출된 객체는 3마리이다. 이미지 속엔 개 밖에 없지만, 검출된 객체중엔 고양이로 분류된 경우가 있다.
precision = tp / (tp + fp) 이므로
위 이미지의 경우 precision = 2/3 = 66.67% 이다.
Average Precision, 이게 왜 중요한데?
용어의 의미를 정확하게 이해하고 있는 것의 중요성은 몇번을 강조해도 지나치지 않다. recall 과 precision 같은 경우에는 검출 detect 라는 표현 때문에 쉽게 혼동할 수도 있다.
precision 과 recall 은 일반적으로 반비례하는 경향성이 있다.
직관적으로 단순하게 이해를 한다면, recall = 100% 를 달성하기 위해선 모든 입력에 대해 항상 객체가 존재하고 그것을 검출하게끔 알고리즘을 짜버리면 된다. 그럼 이런 경우 당연히 precision 은 떨어질 수 밖에 없게 된다.
예를 들자면 이런 경우, 아무것도 없는 허공에 객체를 검출했다. 밤에 작업하다 이런 결과물을 보면 섬찟할거다...[2]
반대로 precision = 100% 달성하기 위해서는 객체 검출의 기준을 훨씬 높게 잡아버림으로써 달성 할 수도 있겠지만, 이런 경우 당연히 recall 은 떨어지게 될 것이다.
Precision 을 높이기 위해 검출 기준을 '완벽히 정면'인 얼굴만 검출한다면 사람의 옆모습을 포함하는 객체는 검출되지 못 할 것이다[3].
또한, 딥러닝 모델(혹은 다른 영상처리 방법론)의 성능 평가 척도로 recall 과 precision 을 함께 사용 할 때, 이 둘의 서로 반비례하는 경향성 때문에 모델의 성능을 객관적으로 평가하기 어려운 부분이 있다. 그래서 precision-recall 그래프를 사용한다.
이 그래프[4] 에서 A와 B의 Curve를 볼 수 있는데, Curve 아래의 면적 넓이의 값을 AP(average precision) 이라고 표현하며, 물체 인식 분야의 알고리즘의 성능은 보통 AP로 평가한다.
↓ 이 글이 도움이 되셨다면 공감을 표시하는 아래 하트를 눌러주세요. 구독을 눌러주시면 더 좋구요! 감사합니다.
이미지 출처
[1] https://en.wikipedia.org/wiki/Dog#/media/File:Dog_morphological_variation.png
[2] https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Royal_York_Hallway.JPG/220px-Royal_York_Hallway.JPG
[3] https://github.com/Guim3/IcGAN/blob/master/README.md