[YOLOv5] Custom Data Set 학습시키기 - colab 사용

정기용·2023년 1월 19일
1

lunalabs

목록 보기
1/5

1. 구글 드라이브 연결

from google.colab import drive
drive.mount('/content/drive')

  • 구글 드라이브를 연결합니다.
  • 저 버튼 누르면 자동으로 코드가 생깁니다.

2. 파일 업로드 및 압축해제

  • 구글 드라이브에 들어가서 이미지와 라벨 압축 파일을 업로드합니다.
  • 그냥 올려도 괜찮지만, 시간이 오래걸려서 압축파일로 업로드합니다.
# 압축파일들 풀 폴더 지정 (폴더 새로 안생기고 파일 바로 풀림 주의)
%cd /content/drive/MyDrive/yolov5/data/images   
!unzip -qq "/content/drive/MyDrive/temp/images.zip"

%cd /content/drive/MyDrive/yolov5/data/labels
!unzip -qq "/content/drive/MyDrive/temp/labels.zip"
  • 코드로 압축해제를 합니다.
  • %cd로 이동한 경로에 압축 파일이 풀립니다. (폴더가 따로 안생기니 미리 만든 폴더로 이동하세요.)
  • unzip -qq 뒤에 압축 해제할 파일 경로를 지정합니다.

잘못 풀린 파일 삭제하기

import os
import glob

[os.remove(f) for f in glob.glob('/content/drive/MyDrive/yolov5/data/*.jpg')] #jpg파일
[os.remove(f) for f in glob.glob('/content/drive/MyDrive/yolov5/data/*.txt')] #txt파일
  • 압축해제를 잘못한 경우 이 코드를 사용하면 됩니다.
  • 경로상의 jpg, txt 파일을 모두 삭제합니다. (데이터셋이 아닌 txt폴더, jpg폴더도 모두 삭제되니 주의하세요.)

파일 개수 확인하기

# 이미지 파일 개수 확인

import glob 

path = '/content/drive/MyDrive/yolov5/data/car+plate+carfront/images_1/*.jpg'
file = glob.glob(path)

print(len(file))
# 라벨 파일 개수 확인

import glob 

path = '/content/drive/MyDrive/yolov5/data/car+plate+carfront/labels_1/*.txt'
file = glob.glob(path)

print(len(file))
  • 압축이 잘 풀렸나 코드로 확인해봅니다.

3. YOLOv5 깃 클론하기 & 환경설정

YOLOv5 GitHub 바로가기

# YOLOv5 깃 클론

%cd /content/drive/MyDrive
!git clone https://github.com/ultralytics/yolov5  # clone repo
%cd yolov5
!git reset --hard fbe67e465375231474a2ad80a4389efc77ecff99  # YOLOv5 브랜치 설정
  • 깃헙에서 YOLOv5를 클론해옵니다.
  • YOLOv5도 계속 업데이트가 되기 때문에 에러를 방지하고자 브랜치를 임의로 설정합니다.
%cd /content/drive/MyDrive/yolov5/
!pip install -r requirements.txt
  • requirements.txt에 YOLOv5를 돌리기 위한 라이브러리들이 적혀있습니다.
  • 코드를 실행하면 필요한 파일을 전부 다운받습니다.

4. yaml파일 설정

%cat /content/drive/MyDrive/yolov5/data/data.yaml
  • yaml파일은 YOLOv5에게 학습시킬 파일과 class 등을 지정해주는 파일입니다.
  • 왼쪽 파일창에서 drive > MyDrive > yolov5 > data > data.yaml파일 을 더블클릭합니다.
  • 더블클릭하면 오른쪽에 메모장처럼 편집할 수 있는 창이 뜹니다.

  • names -> 라벨 이름 설정 (순서대로)
  • nc -> number of classes, class 개수
  • 밑에는 train, val 이미지 데이터 경로 설정

에러 주의

데이터 저장은 다음 사항을 준수해야합니다.
1. 이미지와 라벨은 이름이 같고 확장자만 달라야함. (img.jpg, img.txt)
2_1. 이미지와 라벨을 같은 폴더에 넣고 그걸 train, val 데이터 경로로 설정한다.
2_2. 같은 디렉토리 하위에 images폴더와 labels폴더를 만들고 그 안에 사진과 라벨을 저장한다(폴더이름 꼭 images, labels이어야함). 그리고 images폴더를 train, val 경로로 설정한다.

5. YOLOv5 학습

%cd /content/drive/MyDrive/yolov5
!python /content/drive/MyDrive/yolov5/train.py --epochs 50 --data /content/drive/MyDrive/yolov5/data/data.yaml --name car+carfront+plate
  • 첫번째 경로는 yolov5 하위의 train.py의 경로를 지정한다.
  • --epochs는 학습을 몇번 반복할지 결정한다.
  • --data는 yaml파일의 경로를 지정한다.
  • --name은 완성할 모델의 이름을 지정한다.
  • --weights는 시작할 기본 가중치 파일을 설정한다. 없으면 랜덤으로 정해진 값으로 시작한다.

6. 결과 확인하기

%load_ext tensorboard
%tensorboard --logdir /content/drive/MyDrive/yolov5/runs/train/carfront_basic
  • --logdir 뒤에 모델의 위치를 지정하면 멋진 그래프가 나온다.
profile
SKKU CS 23

0개의 댓글