YOLO 실습 환경 구축과 기본 추론: 실제로 객체를 탐지해보자
이전 포스팅에서 YOLO의 이론적 배경을 살펴봤다면, 이번에는 실제로 YOLO를 설치하고 사용해보는 방법을 알아보겠습니다. Google Colab 환경에서 간단하게 시작할 수 있으며, 몇 줄의 코드만으로도 놀라운 객체 탐지 결과를 확인할 수 있습니다.
YOLO 환경 구축하기
1. Ultralytics 패키지 설치
YOLO를 사용하기 위해서는 먼저 필요한 패키지를 설치해야 합니다. Ultralytics는 YOLOv8을 포함한 최신 YOLO 모델들을 쉽게 사용할 수 있게 해주는 라이브러리입니다.
# YOLO 모델을 사용할 수 있는 환경 구축
!pip install ultralytics
이 한 줄의 명령어로 YOLO 사용에 필요한 모든 종속성 패키지들이 자동으로 설치됩니다.
2. 기본 라이브러리 임포트
from ultralytics import YOLO
YOLO 모델 로딩과 기본 추론
YOLOv8 모델 로딩
YOLOv8은 현재 가장 인기 있는 YOLO 버전 중 하나입니다. 다양한 크기의 모델을 제공하며, 용도에 따라 선택할 수 있습니다:
- YOLOv8n (Nano): 가장 작고 빠른 모델
- YOLOv8s (Small): 소형 모델
- YOLOv8m (Medium): 중간 크기 모델
- YOLOv8l (Large): 대형 모델
- YOLOv8x (Extra Large): 가장 정확하지만 느린 모델
# YOLOv8 Nano 모델 로딩
model = YOLO("yolov8n.pt")
모델을 처음 로딩할 때는 사전 훈련된 가중치 파일을 자동으로 다운로드합니다. Nano 모델은 크기가 작아 빠르게 다운로드되고 실행됩니다.
이미지에서 객체 탐지하기
# 이미지 추론
results = model("https://ultralytics.com/images/bus.jpg")
# 결과 시각화
results[0].show()
이 코드는 온라인 이미지 URL을 직접 사용하여 객체 탐지를 수행합니다. 로컬 이미지 파일 경로도 사용할 수 있습니다.
학습 과정의 핵심 개념들
실제 모델을 커스터마이징하거나 성능을 개선하려면 학습 과정에서 사용되는 하이퍼파라미터들을 이해해야 합니다.
주요 하이퍼파라미터
최적화 관련 파라미터
- optimizer (Adam): 모델의 가중치를 업데이트하는 최적화 알고리즘
- learning rate (lr): 모델이 데이터로부터 배우는 속도
- 너무 높으면: 학습 중 주요 패턴을 놓칠 수 있음
- 너무 낮으면: 학습이 오래 걸리고 과적합 발생 가능
정규화 파라미터
- weight decay (W): 모델의 가중치가 커지는 것을 방지하여 과적합을 예방하는 정규화 정도
- momentum: optimizer가 파라미터를 업데이트할 때 이전 업데이트의 방향과 크기를 유지하는 정도
학습 설정 파라미터
- batch size: 한 번의 가중치 업데이트에 사용될 데이터 샘플의 개수
- epoch: 전체 학습 데이터셋이 모델을 통해 한 번 완전히 통과하는 횟수
손실 함수의 이해
YOLO에서 사용되는 주요 손실 함수들:
box loss
모델이 예측한 경계 상자(bounding box)와 실제 정답 경계 상자 간의 차이를 나타내는 손실 값입니다. 객체의 위치를 얼마나 정확하게 예측했는지를 측정합니다.
cls loss
모델이 각 경계 상자 안의 물체를 얼마나 정확하게 분류했는지를 나타내는 손실 값입니다. "이것이 사람인지, 자동차인지" 등의 분류 정확도를 측정합니다.
dlf loss
경계 상자의 위치를 이산적인 확률 분포로 모델링하여 더 정확한 위치 예측을 유도하는 손실 함수입니다. 최신 YOLO 버전에서 도입된 개선사항입니다.
간단한 학습 예제
실제로 모델을 학습시켜보는 간단한 예제를 살펴보겠습니다:
# 모델 학습 - COCO128 데이터셋으로 간단하게 학습
model.train(
data="coco128.yaml", # 내장된 작은 예제 데이터셋
epochs=5, # 학습 횟수 (5번만 실행)
imgsz=640, # 이미지 크기
name="yolov8_coco128" # 결과 저장 디렉터리 이름
)
학습 결과 확인하기
# 학습 과정에서 손실값, 정확도 등의 그래프 확인
from IPython.display import Image
Image(filename="runs/detect/yolov8_coco128/results.png")
학습이 완료되면 자동으로 다음과 같은 결과들이 생성됩니다:
- 손실 함수 변화 그래프
- 정확도(mAP) 변화 그래프
- 학습/검증 데이터에 대한 성능 비교
- 최적의 가중치 파일 (best.pt)
실제 활용 팁
1. 모델 선택 가이드
- 실시간 처리가 중요: YOLOv8n 또는 YOLOv8s 사용
- 정확도가 중요: YOLOv8l 또는 YOLOv8x 사용
- 균형잡힌 성능: YOLOv8m 사용
2. 이미지 크기 최적화
- 일반적으로 640x640 픽셀 사용
- 작은 객체 탐지 시: 더 큰 이미지 크기 (1280x1280) 고려
- 실시간 처리 시: 더 작은 이미지 크기 (320x320) 고려
3. 배치 크기 조정
- GPU 메모리에 따라 조정 (일반적으로 16, 32 사용)
- 메모리 부족 시 배치 크기를 줄이거나 이미지 크기 감소
다음 단계 예고
기본적인 YOLO 사용법을 익혔다면, 이제 더 실용적인 활용을 위해 다음 사항들을 학습해야 합니다:
- 커스텀 데이터셋 준비: 자신만의 객체 탐지 모델 만들기
- 데이터 증강 기법: 학습 데이터의 품질과 양 개선하기
- 성능 평가: 모델의 실제 성능 측정하고 개선하기
다음 포스팅에서는 YOLO에서 사용하는 데이터셋 구조와 효과적인 이미지 증강 기법에 대해 자세히 알아보겠습니다.
마무리
YOLO를 실제로 사용해보니 어떠셨나요? 몇 줄의 코드만으로도 강력한 객체 탐지 기능을 구현할 수 있다는 점이 YOLO의 가장 큰 매력입니다.
기본적인 사용법을 익혔다면, 이제 자신만의 데이터로 모델을 훈련시키고 실제 프로젝트에 적용해보세요. 다음 포스팅에서 더 고급 기능들을 살펴보겠습니다.
'프로그래밍 > 딥러닝 (완)' 카테고리의 다른 글
YOLO 모델 학습과 성능 평가: 완벽한 객체 탐지 모델 만들기 (114) (0) | 2025.07.02 |
---|---|
YOLO 데이터셋 구조와 이미지 증강 기법: 고품질 학습 데이터 만들기 (113) (0) | 2025.07.02 |
YOLO 기초 개념과 객체 탐지 이론: 딥러닝으로 한 번에 객체 찾기 (111) (2) | 2025.07.01 |
LLM 탈옥 기법 연구 - 6편: 종합 방어 메커니즘과 미래 연구 방향 (110) (4) | 2025.07.01 |
LLM 탈옥 기법 연구 - 5편: 탈옥 기법별 효과 분석 및 비교 (109) (0) | 2025.07.01 |