해결된 질문
작성
·
184
0
안녕하세요. YOLOv3 논문을 읽고 정리하다가 궁금한 점이 생겨서 질문 드립니다. 해당 논문에 다음과 같은 문단이 나오는데요.
"YOLOv3 predicts an objectness score for each bounding box using logistic regression. This should be 1 if the bounding box prior overlaps a ground truth object by more than any other bounding box prior. If the bounding box prior is not the best but does overlap a ground truth object by more than some threshold we ignore the prediction, following [17]. We use the threshold of .5. Unlike [17] our system only assigns one bounding box prior for each ground truth object. If a bounding box prior is not assigned to a ground truth object it incurs no loss for coordinate or class predictions, only objectness."
[17]은 Faster R-CNN에 해당합니다.
YOLOv3의 경우 logistic regression을 이용하여 anchor box의 objectness를 예측하는데 ground truth와의 IoU가 최고인 anchor box의 경우에만 1을 할당하고 나머지 anchor box의 objectness score는 무시한다고 이해했습니다.
그러면 이미지에 객체가 하나가 있을 경우, 생성된 전체 anchor box 중에 객체의 ground truth와 IoU가 가장 높은 하나의 objectness score만 1이고 나머지 anchor box의 objectness score는 모두 0이 되는 건가요? 그리고 이 값을 이용해서 Object Confidence Loss가 계산되는건가요?
YOLOv1의 경우 나눠진 각 grid cell의 책임 BBox의 (Object일 확률 x ground truth와의 IoU값)으로 Object Confidence Loss가 계산된 걸로 아는데 너무 헷갈리네요 ㅜㅜ
답변 1
1
안녕하십니까?
YOLOv3의 경우 logistic regression을 이용하여 anchor box의 objectness를 예측하는데 ground truth와의 IoU가 최고인 anchor box의 경우에만 1을 할당하고 나머지 anchor box의 objectness score는 무시한다고 이해했습니다.
=> 네, 맞습니다. loss를 계산할 때 모든 grid에 있는 모든 anchor box에 대해서 loss를 계산하는 것이 아니라,
학습 데이터에서 Iou가 최고인 anchor box에 대해서 학습 시마다 어떻게 예측을 했는지, 그리고 그에 따른 loss값을 계산하는 방식으로 되어 있습니다. 다만 no object loss인 경우에는 이와 반대로 IOU가 최고인 anchor box를 제외한 나머지 anchor box들에 대해서 loss를 계산합니다.
그러면 이미지에 객체가 하나가 있을 경우, 생성된 전체 anchor box 중에 객체의 ground truth와 IoU가 가장 높은 하나의 objectness score만 1이고 나머지 anchor box의 objectness score는 모두 0이 되는 건가요? 그리고 이 값을 이용해서 Object Confidence Loss가 계산되는건가요?
=> 네 맞습니다. 객체가 하나만 있다면 해당 객체가 소속된 anchor box의 ground truth object score는 1입니다. 그리고 학습 모델이 해당 객체가 소속된 anchor box의 예측 object score값을 계산하는데, 이 차이가 바로 loss가 됩니다. 그리고 전체 object loss는 앞에서 말씀드린 ground truth에 해당하는 object loss + ground truth가 아닌 anchor들의 no obj loss의 총합으로 계산됩니다.
감사합니다.
친절한 답변 너무 감사드립니다!
YOLOv1에서 각 grid cell의 예측 confidence score가 더 큰 anchor box(98개 중 49개) 모두에 대해서 object loss로 계산되고 나머지 49개의 anchor box에 대해서 no object loss로 계산되는 줄 알았는데 그게 아니였군요!
객체의 center가 속하는 grid cell에서 예측한 anchor box들 중 ground truth와의 IoU가 가장 큰 anchor box에 대해서만 obj loss가 계산되고 나머지 모든 anchor box에 대해서는 no obj loss가 계산된다.
YOLOv3은 YOLOv1과는 다르게 ground truth와의 IoU가 0.5보다 크지만 최고는 아닌 anchor box의 경우에는 no obj loss 계산에 포함하지 않는다.
제가 이해한 것이 맞나요??