YOLO (v3) object detector in PyTorch: Part 4-Confidence Thresholding and Non-maximum Suppression

maroo·2022년 11월 10일
0

ML&DL

목록 보기
5/6

Prerequisites

-우리의 output: B x 10647 x 85의 tensor

  • B: batch 개수
  • 10647: image당 예측한 BB 개수
  • 85: BB attribute 개수
    -true detection을 얻기 위해서는 output이 object score thresholding, non-maximal suppression을 거치도록 해야 함
  • 이걸 위해 util.py에 write_results function 작성

Object Confidence Thresholding

-우리의 예측 tensor는 B x 10647 개의 BB에 대한 정보를 가진다.
-threshold아래의 objectness score를 가진 BB는 값을 0으로 만든다.

Note

-IoU(Intersection over union): 객체 인식의 성능 평가를 하는 지표

  • 어떤 영역들 사이에 intersection?: ground-truth와 proposed-region(prediction)
    - ground truth: 우리가 정한 정답(미묘하게 다르긴 하지만, label같은 개념)

    -NMS(non-maximum supression): 한 가지 object에 많은 BB가 생기는데, 가장 score가 높은 박스만 남기고 나머지를 제거하는 승자독식 과정
  • IoU값이 가장 큰 것을 남기는 과정인듯

Object Confidence Thresholding

Performing Non-maximum Suppression

-bounding box attributes: 중심좌표, height, width

  • 그런데, IoU를 계산하기 위해서는 BB의 꼭짓점 좌표를 이용하는 것이 편리함
  • (center x, center y, height, width)를 (top-left corner x, top-left corner y, right-bottom corner x, right-bottom corner y)로 transform
    -각 image마다 true detection의 개수는 다를 수 있음
  • 따라서 confidence thresholding, NMS는 별개 image마다 각각 수행해줘야 함(vectorize불가)
  • prediction의 첫번째 요소만큼 iterate해줘야 함
    -BB attributes중 class score가 max인 것 1개만 남기면 됨.
  • BB 85개의 row 중 class score에 해당하는 80row의 class score를 지우고, max값으로 바꿔준다.
    -NMS
  • 먼저 특정 class의 detection을 추출
  • NMS perform: bbox_iou function 사용
    • bbox_iou

Calculating the IoU

Writing the predictions

profile
할수이따 ~

0개의 댓글