-
카테고리
-
세부 분야
컴퓨터 비전
-
해결 여부
미해결
keras yolov3 트레이닝시 iou, score
21.06.17 14:17 작성 조회수 142
0
강사님? 안녕하세요. 좋은강의 항상 감사드립니다.
yolo 모델은 트레이닝으로 특징맵을 추출하고, NMS를 통해서 최종 detection을 수행하는것으로 알고있습니다.
질문1) iou와 score는 NMS에서만 사용되는 파라미터인가요? 아니면 트레이닝에서도 사용되는 부분이 있는가요? 사용되는부분이 있다면 qqwweee코드에서 어느부분인지 알 수 있을까요? (트레이닝시 loss가 계산될때 두 파라미터가 사용 될 것 같다고 생각했습니다...)
질문1-1) 트레이닝시 iou와 score 는 제가 따로 지정하지 않고 model.py의 def yolo_eval 에 score_threshold=.6, iou_threshold=.5 값이 디폴트로 들어가는건가요? 질문1)이 이 부분을 조정하면 해결되는 건가요...?
그리고 detection(NMS) 수행시 (예)racoon_yolo = YOLO(model_path=~, anchors_path=~, iou=0.3, score=0.9) 이런식으로 지정해 주면 yolo_eval에 default값이 아닌 제가 지정한 값이 들어가게 되는건가요?
질문2) iou는 ground truth(라벨 자료)와 비교하는건가요? confidence score(class probability)가 가장 높은 bbox와 비교하는건가요?
질문3) detection후에 output image가 input image를 -90도 회전하여 나오는데... 이부분을 확인하거나 수정할 수 있는 코드부분을 알 수 있을까요?
질문4) kmeans.py 코드를 활용해서 custom data를 분석해서 anchor_box 사이즈를 조정해보고 싶은데 참고할만한 것이 있을까요?
파이썬과 욜로를 깊게 이해하지 못한상태에서... qqwweee 코드분석이 너무 어려워서... 필요사항에 따라 이리저리 검색해가며 이용하고 있습니다. 질문이 너무 많아 죄송합니다 (ㅜ..ㅜ) 답변 부탁드리겠습니다. 감사합니다!!
[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
<삭제 예정> Keras-yolo3로 Google Open Image 기반의 데이터 세트 Training 및 Object Detection 실습 01
강의실 바로가기
답변을 작성해보세요.
0
권 철민
지식공유자2021.06.17
안녕하십니까,
질문 내용이 많아서 먼저 질문 내용중 qqwwee에 어디에서 코드가 사용되는지는 제가 답변드리기가 어려울 것 같습니다. 내용 확인하는데 너무 시간이 오래 걸립니다.
그리고, 아래와 같이 NMS 정리가 필요할 것 같습니다(이미 NMS를 잘 아시는것 같지만.... )
NMS는 모델 학습 시에는 적용되지 않습니다. 학습 후 모델이 예측할 때 최종 Layer에서 예측 된 값들중에 filtering으로 걸려낼때 사용됩니다.
이 때 iou threshold와 confidence threshold 기준을 적용하여 filtering out을 시킵니다.
질문1) iou와 score는 NMS에서만 사용되는 파라미터인가요? 아니면 트레이닝에서도 사용되는 부분이 있는가요? 사용되는부분이 있다면 qqwweee코드에서 어느부분인지 알 수 있을까요? (트레이닝시 loss가 계산될때 두 파라미터가 사용 될 것 같다고 생각했습니다...)
=>confidence와 iou가 학습시 loss식에 사용되는가는 애매한 부분이 있습니다. loss식은 크게 bbox 좌표값 MSE loss + bbox classification loss + object여부 loss + Non object loss 로 나눌 수 있습니다.
앞에서 Confidence라고 적어 주신게 명확하게 어떤 것인지는 모르지만, Yolo NMS에 사용되는 Confidence는 objectness * class확률입니다. 여기서 objectness가 loss에 사용됩니다. 또한 ground truth와 가장 높은 IOU가 가지는 Anchor box와의 loss식을 계산할때도 IOU가 적용됩니다.
질문1-1) 트레이닝시 iou와 score 는 제가 따로 지정하지 않고 model.py의 def yolo_eval 에 score_threshold=.6, iou_threshold=.5 값이 디폴트로 들어가는건가요? 질문1)이 이 부분을 조정하면 해결되는 건가요...?
=>yolo_eval 에 score_threshold=.6, iou_threshold=.5 이 질문 1의 무엇을 해결한다는 의미인지는 잘 모르지만, yolo_eval()함수는 최종 예측 단에서 NMS를 통해 예측 결과를 뽑아내는 로직입니다. 그리고 score_threshold=.6, iou_threshold=.5는 NMS에서 사용됩니다.
model.py의 208 라인 부터는 NMS로 filtering out 시키는 로직 입니다.
그리고 detection(NMS) 수행시 (예)racoon_yolo = YOLO(model_path=~, anchors_path=~, iou=0.3, score=0.9) 이런식으로 지정해 주면 yolo_eval에 default값이 아닌 제가 지정한 값이 들어가게 되는건가요?
=> 이건 소스코드를 직접 쫒아가 보시면 아실 수 있을 것 같습니다.
질문2) iou는 ground truth(라벨 자료)와 비교하는건가요? confidence score(class probability)가 가장 높은 bbox와 비교하는건가요?
=> iou는 ground truth와 비교합니다. 음 근데 confidence score가 가장 높은 bbox와 비교한다는 의미는 무엇인지요(IOU 질문이신지요?)
질문3) detection후에 output image가 input image를 -90도 회전하여 나오는데... 이부분을 확인하거나 수정할 수 있는 코드부분을 알 수 있을까요?
=> detection에서 input image를 회전 시킬일이 없습니다. detection은 bbox 정보만 끄집어 냅니다.
질문4) kmeans.py 코드를 활용해서 custom data를 분석해서 anchor_box 사이즈를 조정해보고 싶은데 참고할만한 것이 있을까요?
=> 음, 이부분은 retinanet에 해당 유틸리티가 있는데, 로직이 좀 달라서 적용이 어려울 것 같습니다만... 아뭏튼 어떻게 분석을 하고, 참조를 하기를 원하시는 좀 더 자세히 설명해 주셨으면, 제가 더 답을 찾아보겠습니다.
감사합니다.
답변 1