YOLOv8 KITTI Dataset Training

짱구·2024년 1월 18일
0

Kitti Dataset을 이용하여 YOLOv8 모델을 학습하는 방법은 간단하다.

1. 데이터셋 다운로드 준비

사용할 데이터셋을 다운로드 받을 수 있는 방법은 두 가지가 있다.

첫 번째는, 공식 사이트에서 다운받는 것이다.
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

2. Colab을 이용한 모델 학습 준비

개인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/')

  • 다운로드 받은 data.yaml파일 확인
!cat /content/kitti_data/data.yaml

  • PyYAML 설치
!pip install PyYAML

  • data.yaml 파일 수정
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)

여기까지 하면 데이터셋 준비 완료

3. YOLOv8 모델 학습

이제 ultralytics를 이용해 준비한 데이터셋으로 학습을 진행할 것이다.

  • ultralytics 설치
!pip install ultralytics

  • ultralytics 설치 확인
import ultralytics
ultralytics.checks()

  • YOLOv8 모델 학습 시작!!
    epochs, batch size 등등은 각자 원하는대로 설정
    100epoch 돌릴때 코랩에서 잠수탔는지 안탔는지 확인하는데 거기서 시간안에 확인안해주면 런타임이 끊긴다... 신경써야한다.
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마다 학습 결과가 출력된다면 잘 학습되고 있는 것이다.

4. YOLOv8 모델 학습 결과 확인

Colab 폴더에 모델 학습 결과가 저장되는데 코랩 런타임이 끝나기 전에 다운로드 받아놔야 한다.

best.pt, last.pt, data.yaml 다운로드는 필수다.

loss와 mAP에 대한 학습결과를 시각화한 .jpg도 제공해준다.

다운받은 데이터셋중 test dataset에 있는 임의의 이미지에 대해서 추론도 진행해봤다.

추후에 YOLOv8을 더 만지고 노는 글을 올려보겠다.

profile
화이팅

0개의 댓글