YOLOv8과 함께하는 객체 탐지 모델 학습의 정석

최근 몇 년간 인공지능 기술의 발전은 비약적이다. 특히, 컴퓨터 비전 분야에서 객체 탐지(Object Detection) 기술은 자율주행, 제조 품질 관리, 리테일 분석, 스마트 농업 등 다양한 산업으로 빠르게 확장되고 있다. 그 중심에 있는 것이 바로 YOLO(You Only Look Once) 계열 모델이다. 이 글에서는 최신 YOLOv8을 기반으로, 사용자 정의 데이터셋으로 학습을 진행하고 실전 성능을 확보하는 전 과정을 실험을 바탕으로 풀어낸다.


YOLOv8의 기술적 특징

YOLOv8은 Ultralytics에서 개발한 최신 객체 탐지 프레임워크다. 기존 버전들과 비교했을 때 다음과 같은 특징이 있다.

  • Anchor-free 구조 도입으로 더 빠른 수렴과 높은 정확도
  • Flexible Task 지원: Detection, Segmentation, Classification을 하나의 프레임워크로 처리
  • PyTorch 기반 완전 모듈화된 구조로 커스터마이징 용이
  • 내장된 Ultralytics CLITrainer를 통한 손쉬운 학습 파이프라인

실험 결과를 통해 mAP(mean Average Precision)이 0.93 이상을 기록하는 등, 현실적인 데이터셋에서도 충분한 성능을 입증하고 있다.


사용자 정의 데이터셋 준비

객체 탐지에서 가장 핵심적인 요소는 정확하게 라벨링된 학습용 데이터셋이다. 실험에서는 다양한 음식 이미지를 포함하는 15개 이상의 클래스를 포함한 데이터셋을 기반으로 학습을 진행했다. 데이터는 다음의 형태로 구성되었다.

/dataset
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/
├── data.yaml

YOLO에서 요구하는 .txt 형식의 라벨 파일은 다음과 같은 형태를 갖는다.

<class_id> <x_center> <y_center> <width> <height>

여기서 좌표들은 모두 이미지 크기를 기준으로 0~1 사이의 정규화된 값이다. 바운딩 박스의 중심점과 크기를 직접 계산해야 하므로, 기존에 .json이나 .xml로 되어 있던 데이터를 변환하는 전처리 스크립트는 반드시 필요하다.


클래스 매핑 전략: 폴더명 기반 ID 부여

일반적인 객체 탐지 프로젝트에서는 클래스 정보를 어노테이션 내부의 문자열이나 ID로부터 추출하지만, 본 실험에서는 라벨 JSON 파일의 상위 폴더명을 기준으로 클래스 ID를 부여하는 방식을 채택했다. 이는 다음과 같은 장점이 있다:

  • 데이터 구조와 클래스 매핑이 직관적으로 연결됨
  • AI Hub 스타일처럼 Label 값이 불완전한 경우에도 대응 가능
  • 자동화 스크립트 설계가 간결해짐

이 방식은 특히 대량의 클래스(50개 이상)를 다룰 때 매우 효율적이다.


모델 학습 및 성능 분석

YOLOv8m을 사용하여 50 Epoch 기준 학습을 수행한 결과, 전체적인 성능은 다음과 같았다.

항목
Precision0.970
Recall0.968
mAP@0.50.986
mAP@0.5:0.950.931

클래스별로 살펴보면 양념치킨, 오이샐러드, 어묵탕 등 대부분 클래스에서 mAP@0.5:0.95 기준 0.95 이상의 높은 수치를 보였고, 찐빵, 짬뽕 등 일부 클래스는 상대적으로 낮은 수치를 기록해 개선 여지가 있는 것으로 나타났다.

특이사항으로는 학습 과정 중 matplotlib의 한글 폰트 경고가 있었으며, 이는 그래프 저장 시 한글 클래스명이 깨지는 현상으로 이어질 수 있다. 해당 문제는 시스템 글꼴 설치 또는 plt.rcParams['font.family'] 설정으로 쉽게 해결 가능하다.


Streamlit을 통한 추론 인터페이스 구성

모델이 완성된 이후, 실험 결과를 다양한 사용자에게 제공하거나 테스트하기 위한 도구로 Streamlit을 활용했다. Streamlit은 Python 코드 몇 줄만으로도 웹 기반 인터페이스를 빠르게 구성할 수 있도록 해주는 프레임워크다. 파일 업로드, 탐지 결과 시각화, 클래스 출력 등의 기능을 간단히 구현할 수 있고, 내부적으로 PyTorch 모델을 로드해 실시간 추론까지 가능하게 한다.


결론

YOLOv8은 객체 탐지 모델 구축에 있어 현시점에서 가장 손쉬우면서도 강력한 프레임워크다. 자체 데이터셋을 구축하고 클래스 정의를 명확히 한 후, 라벨 포맷만 정확히 맞춘다면 전문가 수준의 탐지 모델을 수일 내로 완성할 수 있다.
고해상도 이미지 처리, 클래스별 성능 분석, 추론 속도 최적화, 실시간 영상 적용 등 추가적인 확장은 매우 유연하다.
모든 객체 인식 기반 프로젝트에 YOLOv8은 여전히 가장 강력한 시작점이자, 실전 도구로 손색이 없다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다