YOLOv8 custom 학습

chaenyang·2024년 12월 26일

self-driving

목록 보기
5/9
🔨 실행환경: Jetson Origin Nano 8GB

Labeling & Download

roboflow에서 라벨링함

Download Dataset 누르고 → Format: YOLOv8, Show download code 선택

주피터 코드 실행하면 데이터셋 다운로드됨

data.yaml 열어서 train이랑 test에 경로 맞게 넣기

Train

1. validation set 만들어줌

val 만들고 data.yaml가서 val 경로도 추가해줌

import os
import shutil
from sklearn.model_selection import train_test_split

# 경로 설정
train_images_dir = "/home/ircv/projects/deep_daiv/ultralytics/deepdrive_yolo_1/train/images"
train_labels_dir = "/home/ircv/projects/deep_daiv/ultralytics/deepdrive_yolo_1/train/labels"
val_images_dir = "/home/ircv/projects/deep_daiv/ultralytics/deepdrive_yolo_1/val/images"
val_labels_dir = "/home/ircv/projects/deep_daiv/ultralytics/deepdrive_yolo_1/val/labels"

# 폴더 생성
os.makedirs(val_images_dir, exist_ok=True)
os.makedirs(val_labels_dir, exist_ok=True)

# 이미지와 라벨 파일 리스트
image_files = sorted(os.listdir(train_images_dir))
label_files = sorted(os.listdir(train_labels_dir))

# 파일 쌍 확인
image_label_pairs = [
    (os.path.join(train_images_dir, img), os.path.join(train_labels_dir, img.replace('.jpg', '.txt')))
    for img in image_files
    if os.path.exists(os.path.join(train_labels_dir, img.replace('.jpg', '.txt')))
]

# 데이터 나누기 (80% train, 20% val)
train_split, val_split = train_test_split(image_label_pairs, test_size=0.2, random_state=42)

# val 데이터 이동
for image_path, label_path in val_split:
    shutil.move(image_path, os.path.join(val_images_dir, os.path.basename(image_path)))
    shutil.move(label_path, os.path.join(val_labels_dir, os.path.basename(label_path)))

print("Validation data has been created.")

2. 하이퍼파라미터 조정

/home/ircv/projects/deep_daiv/ultralytics/ultralytics/cfg/default.yaml 가면 조정할 수 있다.

batch 기본적으로 16으로 되어 있었는데 커널 충돌해서 학습 자꾸 끊겨서 8로 바꿨더니 돌아감.
epoch 기본적으로 100인데 20 정도로 설정했다.
fliplr 0으로 설정했다. (표지판 글씨 좌우반전 때문에)


3. train !

from ultralytics import YOLO

model = YOLO("yolov8s.pt")
model.train(data="/home/ircv/projects/deep_daiv/ultralytics/deepdrive_yolo_1/data.yaml")

data.yaml 경로 넣고 훈련시키기

profile
잉공지능

0개의 댓글