YOLO 버전 비교

yun·2024년 3월 4일
0

ML/DL

목록 보기
9/9

딥러닝 프로젝트(https://github.com/addinedu-ros-3rd/deeplearning-repo-4)에서 서로 다른 버전의 YOLO를 사용했고 그 중에 가장 성능이 좋았던 모델은 YOLOv5n으로 100회 학습한 모델이었다.

근데 버전별로 뭐가 다르냐고 묻는다면 안에 돌아가는 로직은 정말 모르는 상태. 논문과 공식 git 저장소 설명을 봐도 잘 이해가 되진 않습니다... Vision Transformer 써보고 싶었는데 잘 안 되어서 급히 객체인식을 했던 거기도 하고.

그래도 간략히 정리해 보자면,

  • YOLO이기 때문에 (CNN과 달리)이미지를 여러 장으로 분할해 해석하지 않고, (regional proposal과 classification을 동시에 하는)1-stage detector인 점은 같다.
  • YOLOv3에서는
    • backbone으로 DarkNet53을 사용하고, neck으로 FPN을 사용한다.
  • YOLOv5에서는
    • backbone으로 CSPNet을 사용했고(YOLOv4와 동일), 연산 bottleneck을 V3에 대비하여 80% 삭제했다.
  • YOLOv8에서는
    • backbone 구조에서 C3를 C2f로 변경하였다. C3에서는 마지막 bottleneck의 결과만 사용된 것에 반해, C2f에서는 bottleneck과정에서 발생한 모든 결과물을 병합한다.
    • anchor-free detection을 적용했다. anchor box의 offset을 사용하지 않고 객체의 중심을 직접 예측할 수 있게 되어 전보다 더 유연하고 효과적인 객체 인식이 가능해졌다.

버전별로 학습하는 구조가 다르기 때문에 데이터 학습 시 필요한 yaml 파일 포맷도 차이가 있다.

성능 면에서는, 전에 작성했던 포스트(https://velog.io/@yun5/yolo-v3-v5-v8-train)를 보면, mAP50-95 수치상 YOLOv8로 학습한 모델이 더 나았음에도 수치가 더 낮은 YOLOv5에서 학습한 모델의 성능이 나은 것으로 보였다. 즉, 사람 눈으로 봤을 때의 분류와 가장 일치한 것은 YOLOv8에서 학습한 모델이 아니었다. 데이터에 따라 맞는 모델은 다른 것 같다고 판단했지만, 학습 설정값을 더 조정했어야 했을 수도 있다.

[참고자료]

0개의 댓글

관련 채용 정보