Kitti Dataset을 이용하여 YOLOv8 모델을 학습하는 방법은 간단하다.
사용할 데이터셋을 다운로드 받을 수 있는 방법은 두 가지가 있다.
첫 번째는, 공식 사이트에서 다운받는 것이다.
Kitti Dataset은 아래 공식 링크에서 직접 다운받을 수 있다.
다운로드 받기 위해서는 로그인이 필요하다.
https://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=2d
12GB left color images of object data set
5MB training labels of object data set
두 가지를 다운로드 받아야한다.
또 다른 방법으로는 roboflow라는 사이트에서 공유해주는 데이터셋을 다운로드 받는 방법이다.
roboflow에서는 사용하는 YOLO version에 맞게 download format을 제공해준다. (매우 편리함)
YOLOv8의 Labeling format은 아래와 같아서 공식 사이트에서 다운로드해서 사용한다면 라벨링 format을 직접 변형해서 사용해야한다. (gpt한테 물어보면 어렵지 않게 할 수 있지만 매우 귀찮음)
https://docs.ultralytics.com/datasets/detect/#ultralytics-yolo-format
따라서 roboflow에서 dataset을 다운로드 받아서 모델을 학습하기로 결정했다.
Kitti Dataset을 제공해주는 roboflow 링크는 아래와 같다.
https://universe.roboflow.com/sebastian-krauss/kitti-9amcz/dataset/3
개인pc에서 모델을 처음에 학습시키려 했으나 매 epoch마다 evaluation할 때, loss, mAP등등이 모두 0으로 출력되는 에러?가 있어서 Colab으로 빠르게 모델 학습을 진행하였다.
구글링 해보니 CUDA와 Pytorch 버전이 호환이 안되면 이런 에러가 생기는 것 같다고 나와있었지만 해결 X
위에 공유한 링크에 들어가서 YOLOv8을 선택해주자.
VERSIONS에서는 640x640을 선택했다.
show download code로 continue
아래 빨간색 선에 적힌 URL을 복사한다.
이제 Colab으로 들어가 GPU 연결을 한 뒤 cell에 입력
!wget -O kitti_data.zip "복사한 URL"
import zipfile
with zipfile.ZipFile('/content/kitti_data.zip') as target_file:
target_file.extractall('/content/kitti_data/')
!cat /content/kitti_data/data.yaml
!pip install PyYAML
import yaml
data = { 'train' : '/content/kitti_data/train/images/',
'val' : '/content/kitti_data/valid/images/',
'test' : '/content/kitti_data/test/images',
'names' : ['Car', 'Cyclist', 'Misc', 'Pedestrian', 'Person_sitting', 'Tram', 'Truck', 'Van'],
'nc' : 8 }
with open('/content/kitti_data/data.yaml', 'w') as f:
yaml.dump(data,f)
with open('/content/kitti_data/data.yaml', 'r') as f:
kitti_yaml = yaml.safe_load(f)
display(kitti_yaml)
여기까지 하면 데이터셋 준비 완료
이제 ultralytics를 이용해 준비한 데이터셋으로 학습을 진행할 것이다.
!pip install ultralytics
import ultralytics
ultralytics.checks()
from ultralytics import YOLO
model = YOLO('yolov8s.pt')
model.train(data='/content/kitti_data/data.yaml', epochs=100, patience=30, batch=32, imgsz=640)
이런식으로 epoch마다 학습 결과가 출력된다면 잘 학습되고 있는 것이다.
Colab 폴더에 모델 학습 결과가 저장되는데 코랩 런타임이 끝나기 전에 다운로드 받아놔야 한다.
loss와 mAP에 대한 학습결과를 시각화한 .jpg도 제공해준다.
다운받은 데이터셋중 test dataset에 있는 임의의 이미지에 대해서 추론도 진행해봤다.
추후에 YOLOv8을 더 만지고 노는 글을 올려보겠다.