티스토리 뷰

bounding box의 위치와 너비, 높이를 regression 하기 위한 수식이 각각 다르다. PyTorch 로 구현하고자 한다면 수식을 잘 보고 구현해야함

 

https://alexeyab84.medium.com/scaled-yolo-v4-is-the-best-neural-network-for-object-detection-on-ms-coco-dataset-3

 

bx와 by는 YOLOv4 페이퍼에서 언급됐듯이 grid sensitivity 를 고려하여 수정된 것인데... bw와 bh가 왜 저렇게 바뀐지 이유는 못찾았다. YOLOv5 도 Scaled-YOLOv4 의 수식을 따라가는듯하다. 알고보니 Scaled-YOLOv4 가 YOLOv5를 따른 것...

 

https://github.com/ultralytics/yolov5/blob/e96c74b5a1c4a27934c5d8ad52cde778af248ed8/models/yolo.py#L31-L75

 

GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub.

github.com

 

생각해봤을때 exponential 연산은 입력에 따라 overflow가 나기 굉장히 쉬운 연산이다. 특히 mixed precision 으로 트레이닝 시킬때 exp 연산 들어가있으면 학습 도중 overflow가 날 가능성이 굉장히 크다. 반면 시그모이드 함수를 사용하면 출력값만 생각했을때 0~1로 범위가 제한된다. 그리고 YOLOv3와 YOLOv4의 bw, bh 는 범위가 (0, 무한대) 인 반면 Scaled-YOLOv4의 bw는 (0, 4pw), bh 는 (0, 4ph) 로 나름대로 합리적인 범위안으로 바운딩 박스의 크기가 계산되도록 출력 값의 범위에 대한 제한을 줄 수 있다. 참고로 여기서 pw랑 ph 는 anchor box의 너비와 높이이다.

 

jocher님 한테 여쭤봐야겠다.

https://github.com/ultralytics/yolov5/issues/4373

 

Bounding Box Regression Equation · Issue #4373 · ultralytics/yolov5

❔Question Hi, @glenn-jocher ! I have one question. As you know, the bounding box regression equation of yolov5 is different from yolov3 and yolov4. However, it is same with scaled-yolov4. Why do yo...

github.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함