최근 AI 업계에서 가장 핫한 주제 중 하나는 바로 컴퓨터 비전입니다.
그래서 수많은 인기 라이브러리가 있는데요. 오늘은 그중에서도 Ultralytics의 최신 모델 YOLOv8을 소개하고자 합니다.
YOLOv8은 컴퓨터 비전 문제를 신속하고 정확하게 해결할 수 있는 강력한 툴이며, PyTorch 기반으로 쉽게 모델을 구축할 수 있도록 해줍니다.
이글에서는 YOLOv8 모델을 커스텀 데이터셋에 맞춰 훈련시키고 실행하는 방법을 알아 보겠습니다.
YOLOv8은 객체 감지 모델
YOLOv8은 사진이나 영상 속에 있는 사람, 자동차, 동물 같은 물체를 찾아내는 모델이라고 생각하면 됩니다.
YOLO는 ‘You Only Look Once’의 약자로, 사진을 한 번만 봐도 물체를 빠르고 정확하게 찾아낸다는 뜻입니다. YOLOv8은 이전 버전보다 더 똑똑해졌는데요. 더 많은 종류의 물체를 더 빠르고 정확하게 찾아낼 수 있습니다.
YOLOv8의 특징은 빠르고 정확합니다. 사진을 보고 물체를 찾아내는 속도가 매우 빠르면서도 정확도가 높죠.
사람뿐만 아니라 다양한 종류의 물체를 찾아낼 수 있고, 심지어 물체의 자세까지 알아낼 수도 있습니다.
이 모델은 활용도가 높은데요. 자율주행 자동차, 스마트 팩토리, 의료 분야 등 다양한 분야에서 활용되고 있습니다.
환경 설정 하기
YOLOv8 모델을 처음 훈련시키기 위해 가장 첫 단계는 적절한 환경을 선택하는 것입니다. 크게 로컬 기반 환경과 클라우드 기반 환경으로 나누어 사용 가능합니다.
- 로컬 기반: 만약 고성능의 NVIDIA GPU를 가진 시스템을 보유하고 있다면, 로컬 기반 환경이 적합합니다. Python API와 CLI 옵션 중 선택해 로컬에서 훈련을 진행할 수 있습니다.
- 클라우드 기반: 여기에 반해, 하드웨어 성능이 부족할 경우, 혹은 더 많은 연산 능력이 필요하다면 Google Colab과 같은 클라우드 플랫폼을 활용할 수 있습니다. Google Colab은 무료로 일부 컴퓨팅 리소스를 제공하며, 더 빠른 하드웨어 사용을 위한 업그레이드 옵션도 존재합니다.
데이터셋 준비하기
모델을 훈련하기 위해서는 충분한 데이터가 필요합니다. 객체 탐지 데이터셋은 다양한 객체의 이미지와 그 객체의 위치를 표시하는 바운딩 박스로 구성됩니다.
YOLOv8에 호환 가능한 데이터셋을 만들기 위해서는 구조화된 폴더 구조에 데이터를 저장해야 합니다.
- train, val, test 폴더로 나누어 각각 훈련, 검증, 테스트 이미지와 라벨을 포함합니다.
- 각 이미지에는 동일한 이름의 .txt 파일이 있어야 하며, 이 파일에는 해당 이미지 내 객체의 클래스와 위치 정보가 포함됩니다.
여기서는 CVAT를 이용해 직접 데이터셋을 만들거나, Kaggle에서 이미 존재하는 데이터셋을 가져오는 방법을 활용할 수 있습니다.
훈련 환경 세팅하기
1. 로컬 훈련
로컬에서 훈련을 진행할 경우, 파이썬 가상 환경을 설정하고 필요한 YOLOv8의 종속성을 설치합니다. 모델을 위한 config.yaml
파일을 생성해 데이터셋 정보와 훈련 세부 사항을 지정할 수 있습니다.
from ultralytics import YOLO
model = YOLO("yolov8n.yaml")
model.train(data="config.yaml", epochs=100)
지금 이 예제에서는 가장 빠른 모델인 yolov8n을 사용하여 새 모델을 처음부터 구축합니다. 적절한 에폭 수를 지정하고 훈련을 시작하시기 바랍니다.
2. Google Colab에서의 훈련
만약 클라우드에서 훈련하기로 결정했다면, Google Colab에 노트북을 생성하고 Kaggle 등에서 바로 데이터를 가져와 사용할 수 있습니다. 이후 가상 환경에서의 방법과 유사하게 config.yaml
을 설정하고 훈련을 진행합니다.
from ultralytics import YOLO
model = YOLO("best.pt")
results = model.train(data="config.yaml", epochs=100)
예측 모델 실행
훈련이 완료된 모델은 로컬에서 예측을 진행할 수 있습니다. best.pt
파일을 활용해 예측을 설정하고, 다양한 입력 소스를 활용할 수 있습니다.
from ultralytics import YOLO
model = YOLO("best.pt")
results = model(source="path/to/image.jpg", show=True, conf=0.25, save=True)
YOLOv8의 예측 결과는 텍스트로 된 유용한 데이터로 반환되며, 이는 프로젝트에 따라 여러 방식으로 활용될 수 있습니다.
마무리
이제 YOLOv8 모델을 데이터셋에 맞춰 훈련하고 실행할 준비가 되었습니다. 이제 더 심화된 주제로 확장하며, 머신 러닝과 컴퓨터 비전에 대한 관심을 지속적으로 키워가길 바랍니다.