[YOLO] 축구 영상 객체 탐지 프로젝트: Nano vs Small 모델 성능 비교 분석

2026. 1. 10. 00:04·개념 정리 step2/멀티모달(Multi-modal)

축구 영상 객체 탐지 프로젝트: Nano vs Small 모델 성능 비교 분석

안녕하세요! 오늘은 축구 경기 데이터셋(SelectStar Fitogether)을 활용하여 YOLO 객체 탐지 모델을 학습시키고, 모델의 크기(Nano vs Small)에 따른 성능 차이를 심도 있게 분석해 보려 합니다.

이번 프로젝트는 Google Colab(L4 GPU) 환경과 로컬(RTX 4070 Ti) 환경을 병행하며 진행했습니다.


1. 데이터 전처리: JSON을 YOLO 포맷으로 변환

YOLO 모델은 이미지와 함께 각 객체의 클래스와 좌표가 적힌 .txt 파일이 필요합니다. 제공된 데이터는 JSON 포맷이었기에, 이를 YOLO 형식으로 변환하는 함수를 직접 구현했습니다.

핵심 코드: JSON to YOLO BBox

다각형(Polygon) 좌표에서 중심점($x$, $y$)과 너비($w$), 높이($h$)를 계산하고 전체 이미지 크기로 정규화하는 과정이 핵심입니다.

import json
import os

class_map = {"players": 0, "ball": 1, "others": 2}

def json_to_yolo_bbox(points, w, h):
    # 다각형 좌표에서 x, y 리스트 추출
    x_coords = [p[0] for p in points]
    y_coords = [p[1] for p in points]

    # 경계 상자(Bounding Box)의 최소/최대값 계산
    xmin, xmax = min(x_coords), max(x_coords)
    ymin, ymax = min(y_coords), max(y_coords)

    # YOLO 포맷으로 변환 (중심점 x, y, 너비, 높이) 및 정규화
    x_center = ((xmin + xmax) / 2) / w
    y_center = ((ymin + ymax) / 2) / h
    width = abs(xmax - xmin) / w
    height = abs(ymax - ymin) / h

    return [x_center, y_center, width, height]

이후 random.seed(2026)를 사용하여 데이터를 Train(80%), Valid(10%), Test(10%)로 나누어 저장했습니다.


2. 모델 학습: 환경에 따른 이원화 전략

모델의 크기와 학습 환경에 따라 설정을 다르게 하여 효율성을 높였습니다.

(1) Google Colab (Nano 모델)

가벼운 Nano 모델은 코랩의 T4/L4 GPU를 활용하여 빠르게 프로토타입을 제작했습니다.

# YOLO Nano 모델 학습 설정
model_n = YOLO('yolov8n.pt')
results_n = model_n.train(
    data='/content/fitogether.yaml',
    epochs=30,
    imgsz=416,      # 모델 크기를 고려하여 416 설정
    batch=16,
    device=0, 
    name='fit_nano_results'
)

(2) 로컬 환경 - RTX 4070 Ti (Small 모델)

더 정밀한 Small 모델은 로컬의 강력한 GPU 성능을 활용해 더 높은 해상도와 큰 배치 사이즈로 학습했습니다.

# YOLO Small 모델 학습 설정
model_s = YOLO('yolov8s.pt')
results_s = model_s.train(
    data='C:\Pyg\Fitogether-Soccer-Analytics-YOLOv8', # 로컬 경로
    epochs=40,      # 더 충분한 학습을 위해 40 Epoch
    imgsz=640,      # 고해상도 특징 추출을 위해 640 설정
    batch=64,       # RTX 4070 Ti의 VRAM 활용
    device=0, 
    amp=True,       # Mixed Precision 학습 활성화
    name='fit_small_results'
)

3. 성능 비교 분석

학습 완료 후, 검증 데이터셋을 통해 두 모델의 성능을 비교했습니다.

전체 지표 비교

지표 Nano (3M Params) Small (11M Params) 비고
mAP50 (전체) 0.559 0.732 31% 향상
mAP50-95 0.308 0.493 60% 향상 (정밀도 대폭 개선)
Ball 클래스 mAP50 0.000 0.232 Nano는 공을 아예 못 찾음

분석 포인트

  1. 모델 크기와 정밀도: 파라미터가 약 3.7배 많은 Small 모델이 mAP50-95 지표에서 압도적인 차이를 보였습니다. 이는 단순히 객체를 찾는 것을 넘어, 객체의 위치를 훨씬 더 정확하게 잡아낸다는 뜻입니다.
  2. 작은 객체(Ball) 탐지의 한계: 축구공은 이미지 내에서 차지하는 픽셀이 매우 적습니다. Nano 모델(imgsz=416)은 이 특징을 포착하지 못해 검출에 실패했지만, Small 모델(imgsz=640)은 낮지만 의미 있는 수치를 보여주었습니다.
  3. 추론 속도: L4 GPU 기준 두 모델 모두 2ms 내외의 속도를 보여주었습니다. 하드웨어가 충분하다면 굳이 Nano를 고집하기보다 Small 이상의 모델을 쓰는 것이 성능 면에서 훨씬 유리함을 확인했습니다.

'개념 정리 step2 > 멀티모달(Multi-modal)' 카테고리의 다른 글

[Deep Learning] TensorFlow 기초와 날씨 분류 모델 실습  (0) 2026.01.12
[CV Archive] YOLOv8 Segmentation: 스타벅스 로고 추출하기  (0) 2026.01.11
YOLOv8을 이용한 이안류 탐지 및 Segmentation 기초  (0) 2026.01.08
[CV Archive] 컴퓨터 비전과 객체 탐지(Object Detection)  (0) 2026.01.07
[OpenCV] Open Source Computer Vision Library 개념 정리  (0) 2026.01.06
'개념 정리 step2/멀티모달(Multi-modal)' 카테고리의 다른 글
  • [Deep Learning] TensorFlow 기초와 날씨 분류 모델 실습
  • [CV Archive] YOLOv8 Segmentation: 스타벅스 로고 추출하기
  • YOLOv8을 이용한 이안류 탐지 및 Segmentation 기초
  • [CV Archive] 컴퓨터 비전과 객체 탐지(Object Detection)
고니3000원
고니3000원
공부 내용 정리, 자기발전 블로그 입니다. 기존 네이버 블로그에서 티스토리로 이전했습니다. https://blog.naver.com/pak1010pak
  • 고니3000원
    곤이의 공부 블로그
    고니3000원
  • 전체
    오늘
    어제
    • 분류 전체보기 (179) N
      • 1. AI 논문 + 모델 분석 (21) N
        • AI 논문 분석 (13)
        • AI 모델 분석 (8) N
      • 2. 자료구조와 알고리즘 (16)
        • 2-1 자료구조와 알고리즘 (13)
        • 2-2 강화학습 알고리즘 (3)
      • 3. 자습 & 메모(실전, 실습, 프로젝트) (25)
        • 3-1 문제 해석 (4)
        • 3-2 메모(실전, 프로젝트) (14)
        • 3-3 배포 실전 공부 (7)
      • 4. [팀] 프로젝트 및 공모전 (14)
        • 4-1 팀 프로젝트(메모, 공부) (1)
        • 4-2 Meat-A-Eye (6)
        • 4-3 RL-Tycoon-Agent (3)
        • 4-4 구조물 안정성 물리 추론 AI 경진대회(D.. (4)
      • 5. [개인] 프로젝트 및 공모전 (0)
        • 4-1 귀멸의칼날디펜스(자바스크립트 활용) (5)
        • 4-2 바탕화면 AI 펫 프로그램 (4)
        • 4-3 개인 프로젝트(기타) (3)
      • 개념 정리 step1 (32)
        • Python 기초 (7)
        • DBMS (1)
        • HTML | CSS (3)
        • Git | GitHub (1)
        • JavaScript (5)
        • Node.js (5)
        • React (1)
        • 데이터 분석 (6)
        • Python Engineering (3)
      • 개념 정리 step2 (57)
        • Machine | Deep Learning (15)
        • 멀티모달(Multi-modal) (23)
        • 강화 학습 (10)
        • AI Agent (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 곤이의 블로그(Naver->Tistory)
    • Github
  • 공지사항

  • 인기 글

  • 태그

    자료구조
    알고리즘
    강화학습
    구현
    bottleneck
    javascript
    공모전
    파이썬
    EfficientNet
    프로젝트
    ViT
    Ai
    학습
    파인튜닝
    OCR
    모델 분석
    html
    github
    Grad-CAM
    transformer
    Attention Is All You Need
    paddleocr
    귀칼
    Vision
    데이터분석
    논문 리뷰
    자바스크립트
    Python
    OCR학습
    pandas
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고니3000원
[YOLO] 축구 영상 객체 탐지 프로젝트: Nano vs Small 모델 성능 비교 분석
상단으로

티스토리툴바