작성
·
29
0
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.353
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.599
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.331
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.213
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.386
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.541
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.221
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.419
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.452
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.281
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.529
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.609
위의 성능지표는 Faster-RCNN을 훈련한 결과로 출력 된 성능 지표입니다.
Faster-RCNN과 YOLOv8의 성능을 비교해보기 위해서 성능 지표를 확인하려고 하는데
Faster-RCNN의 결과로 출력된 성능 지표가 YOLO의 성능지표랑 조금 다른거같아 어떻게 비교해야할지 궁금합니다.
YOLO는 훈련 후 결과가 Precision, Recall, mAP50, mAP50-95로 나오게 되는데
Faster-RCNN의 경우에는 위와 같이 Average Precision, Average Recall이 다양한 IOU 임계값에 따라 출력되는것으로 보이는데 여기서 YOLO 처럼 Precision,Recall,mAP50, mAP50-95 를 구할수 있는지 궁금합니다.
from detectron2.evaluation import COCOEvaluator, inference_on_dataset
from detectron2.data import build_detection_test_loader
from detectron2.engine import DefaultTrainer
import os
# 가중치 경로 설정
cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth")
# 학습된 모델 로드
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=True)
# 평가 진행
evaluator = COCOEvaluator("coco_test", cfg, False, output_dir="./output/")
val_loader = build_detection_test_loader(cfg, "coco_test")
results = inference_on_dataset(trainer.model, val_loader, evaluator)
# 결과 출력
print("Test 결과 (coco_test):", results)
위의 코드처럼 detectron2에서 Faster-RCNN 으로 훈련 시킨 후 가중치를 가지고와서 COCOEvalutator로 test한 결과 인데 Precision,Recall, mAP50을 YOLO와 동일하게 측정하고 싶습니다.
어떻게 해야할까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
이영규님, Faster-RCNN과 YOLO의 성능 지표를 비교하기 위해서는 두 모델 간에 통일된 기준을 사용하는 것이 중요합니다.
Faster-RCNN의 경우, COCOEvaluator
를 활용하여 다양한 IoU 임계값에서의 Average Precision(AP)과 Average Recall(AR)을 측정합니다. YOLO는 주로 mAP50, mAP50-95, Precision 및 Recall을 사용하여 성능을 평가합니다.
YOLO의 mAP50은 IoU 기준 0.50에서의 AP를 의미하고, mAP50-95는 IoU 0.50부터 0.95까지의 평균 AP입니다. Faster-RCNN의 결과에서도 이와 같은 방식의 mAP50을 직접 구할 수는 없지만, 다양한 IoU 설정에서의 AP를 통해 유사한 비교가 가능합니다.
다음은 기존 COCOEvaluator로부터 YOLO의 성능 지표와 통일된 결과를 얻을 수 있는 방법입니다:
1. COCOEvaluator
는 기본적으로 COCO의 모든 AP 및 AR 지표를 제공하므로, 측정된 결과에서 AP @[ IoU=0.50:0.95 | area=all ]와 AP @[ IoU=0.50 | area=all ]을 통해 YOLO의 mAP50-95와 mAP50에 해당하는 결과를 비교할 수 있습니다.
2. Precision과 Recall의 경우, COCOEvaluator를 사용하여 IoU 임계값을 0.50으로 설정한 후 데이터셋을 평가하면 됩니다.
이미 코드를 실행하고 결과를 얻으셨으므로, 이 결과에서 필요한 지표를 선택하여 YOLO와의 비교에 활용하시면 됩니다. 이러한 과정은 두 모델 간의 성능 차이를 이해하는 데 도움이 될 것입니다.
만약 추가적인 질문이 있으시거나 더 도움이 필요하시면 언제든지 말씀해 주세요!
정보 출처:
- COCO Evaluator 사용법
답변 감사드립니다.
추가로 질문드리고 싶은건 COCO 형식의 평가지표에서는 Precision,Recall을 알 수 없는지가 궁금합니나. AP(IoU=50)이 mAP50에 매칭되고 AP(IoU)=50:95가 mAp50-95에 매칭이되는데 Precision을 구하려고 IoU 임계값을 50으로 두고 평가를 하게 되면 mAP50과 Precision이 같아지는게 아닌지 궁금합니다