해결된 질문
21.01.23 03:05 작성
·
345
0
1. 지금 예시에서 만들어진 바운딩 박스들은 예측된 박스이고 각 박스의 confidence score가 Bird 또는 FIsh 라는 class 정보 까지 제공하나요??
2. confidence score가 해당 바운딩 박스에 객체가 있을 가능성이라고 이해를 해도 될까요?
답변 4
2
2021. 01. 23. 20:21
안녕하십니까,
두분 질문 다 포함해서 아래에 답변 드립니다.
1. 예시에서 만들어진 바운딩 박스는 예측된 박스이며 각 박스의 confidence가 해당 box가 bird/fish인지의 확률입니다. 그리고 예측 분류는 confidence에 기반하여 bird/fish 레이블을 예측합니다. 만일 confidence에 대한 임계값이 높으면 filtering out 되어서 예측 자체를 하지 않습니다. 반대로 confidence 임계값이 낮으면 많은 오브젝트들의 레이블을 예측할 수 있지만 틀릴 가능성도 커집니다.
가령 물고기를 새라고 잘못 분류한 경우는 일반적으로 confidence가 작습니다. 물론 강한 확신(confidence)를 가지고 잘못 예측하는 경우도 있습니다. 예를 들어 confidence가 0.8 이상인것만 오브젝트 Detection 결과에 포함하라고 한다면 큰 새, 또는 작지만 명확한 새들의 경우는 높은 confidence를 가질 수 있으므로 예측 결과가 정확할 수 있습니다. 하지만 좀더 confidence가 낮은 대상도 최종 Object Detection 예측 결과에 포함 시키라고 한다면 confidence가 낮아서 틀릴 확률이 높은 대상이 더 증가 할 것입니다.
이처럼 AP는 개별 오브젝트들을 Detect한 confidence(해당 객체 예측 확률)을 기반으로 threshold(임계값을 낮춰가면서) Precision과 Recall을 계산하는 것입니다. 즉 높은 confidence만 예측 결과에 반영하면 크고, 확실한 객체들만 찾게 됩니다. 그렇게 되면 실제 목표로 하는 많은 객체들을 놓칠 수 있습니다. 즉 확실히 아는 답만 대답을 하는 것입니다. 이럴때는 Precision이 높을 수 밖에 없습니다. 하지만 Recall 이 더 중요한 지표입니다. confidence를 더 낮추면서 예상하는 오브젝트들을 다 검출하게 되면 Precision은 예측을 틀릴 횟수가 높아지게 때문에 낮아지고, Recall은 목표로 하는 오브젝트들을 찾기 때문에(틀리든 그렇지 않든) 상대적으로 높아집니다.
결국은 Precision, Recall 모두 높은 성능 지표를 가져야 하기 때문에 이처럼 confidence를 높은 순에서 낮은 순으로 내려 가면서 Precision, Recall을 다 조사해 가면서 평가를 하는 방식입니다.
2. 여기서 얘기하는 confidence 해당 bird또는 fish일 확률입니다. 강의에서 confidence score를 의미할때 해당 클래스의 확률, 즉 bird또는 fish일 확률이 아니라, 객체 인지 아닌지(즉 background)인지를 의미 할때가 있습니다. 좀 구분이 필요한 경우가 있습니다.
감사합니다.
0
2021. 01. 24. 11:52
confidence score란 의미가 YOLO와 NMS에는 객체가 있을 확률이라는 의미로 사용되어서 헷갈릴수 있습니다. confidence score는 mAP에서 사용되지 않습니다.
여기서 Confidence는 새냐, 물고기냐를 예측을 했는데, 그 예측한 확률이 얼마냐는 것입니다. 즉 어느정도의 확률을 가지고 이 오브젝트를 예측했느냐입니다. 예측은 했고, 어느정도의 확신을 가졌냐가 confidence입니다. 그래서 confidence를 구했다는 것은 예측을 했다는 것입니다. softmax로 계산된 특정 class일 확률로 생각하시면 됩니다.
0
빠른 답변 갑사합니다!!
제가 아직 이해가 부족한것같아 다시한번 질문드립니다.
제가 이해한대로 설명드리겠습니다.
일단 Bounding box를 예측합니다.
예측된 BB의 confidence score는 BB에 객체가 있는지 없는지 확률을 의미합니다.
confidence score 임계값을 넘은 박스는 label 예측(분류) 작업을 수행합니다. (넘지 못한 박스는 버립니다)
임계값에 따라 Precision, Recall 이 바뀌고 두 지표는 Trade off 관계이다.
이렇게 이해했습니다.
강사님 1번 답변에서
각 박스의 confidence가 bird/fish인지의 확률입니다. 그리고 예측 분류는 confidence에 기반하여 bird/fish 레이블을 예측합니다.
라고 하셨는데 구해지는 순서가 confidence -> label() 이 아닌가요?
객체가 존재할 확률 == confidence score (이진분류)
softmax로 계산된 특정 class일 확률 != confidence score (다중분류)
이 부분이 헷갈립니다