YOLOv8 - CLASSIFICATION

2025.01.24 ~ 2025.03.21

image.png

배경

기상청이나 휴대폰의 날씨 앱들은 대부분 수치 데이터를 기반으로 정보를 제공하지만, 본 프로젝트는 이에 차별점을 두기 위해 YOLO모델을 사용해서 이미지 기반의 날씨 분류 모델을 개발하였습니다.

이를 통해 실시간 카메라 영상이나 사진 등을 가져와 날씨를 자동으로 분류할 수 있고, 효율적이고 직관적인 기상 정보를 제공할 수 있게 됩니다.


기존 방식 대비 차이점?

현재 기상청이 날씨를 예측하는 방법 중에는 관측소에서 데이터를 가져와 수치 예보 모델인 UM을 사용하여 물리 방정식을 계산해 미래 기상 상태를 예측합니다. 본 프로젝트에서는 예측이 아닌 분류로 구분하여, 실시간 구름의 양과 색을 분석하여 현재의 날씨를 분류합니다.

이때, 본 프로젝트에는 이미지 데이터를 사용하여 CLEAN(맑음), CLOUDY(흐림), RAINY(비) 3가지로 분류합니다.


사용한 데이터셋?

Pixabay, iStock 등등 무료 이미지 사이트를 돌아다니며 데이터들을 모았지만, 턱도 없이 부족하여 Kaggle, Hugging Face, Flickr와 같은 AI 관련 사이트에서 구름 데이터셋을 가져와 분류 후 사용하기도 했습니다.


훈련 과정

Desktop으로 훈련을 돌리는 것이 처음이기 때문에 Nvidia에서 제공하는 CUDA 서비스를 다운받아 훈련을 돌리려고 했지만, 이 과정에서 가상 환경이 여러개였던 탓에 충돌이 조금 있었습니다. 다행히 몇 시간 안돼서 해결하였고, GPU를 사용해서 훈련을 순조롭고 빠르게 진행할 수 있었습니다.

Set으로는 train, val, test 3가지를 사용했고, 각각 8:1:1 비율로 구성하였습니다. 각각 set에는 clean, cloudy, rainy 3가지 클래스가 있었고, 데이터는 각각 2~300개 있습니다. 특히 흐린 것과 비오는 것은 구분이 까다롭기 때문에, 300개 후반대로 데이터를 저장하였습니다.

하이퍼파라미터는

하이퍼파라미터 수치
에포크 150
이미지 사이즈 640
배치 사이즈 16