콘텐츠로 건너뛰기

사용자 지정 데이터 훈련

이 가이드에서는 다음을 사용하여 사용자 지정 데이터 세트를 훈련하는 방법을 설명합니다. YOLOv5 🚀.

시작하기 전에

리포지토리를 복제하고 요구사항.txt를 설치합니다. Python>=3.8.0 환경을 포함하여 PyTorch>=1.8. 모델데이터 세트는 최신 YOLOv5 릴리스에서 자동으로 다운로드됩니다.

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

사용자 지정 데이터에 대한 교육

Ultralytics 능동적 학습

객체를 감지하는 사용자 지정 모델을 만드는 것은 이미지를 수집 및 정리하고, 관심 객체에 레이블을 지정하고, 모델을 학습시키고, 야생에 배포하여 예측을 수행한 다음, 배포된 모델을 사용하여 엣지 사례의 예를 수집하여 반복 및 개선하는 반복적인 프로세스입니다.

라이선스

Ultralytics 는 두 가지 라이선스 옵션을 제공합니다:

자세한 내용은 Ultralytics 라이선스를 참조하세요.

YOLOv5 모델은 해당 데이터에서 객체의 클래스를 학습하기 위해 레이블이 지정된 데이터에 대해 학습해야 합니다. 학습을 시작하기 전에 데이터 세트를 만드는 데는 두 가지 옵션이 있습니다:

옵션 1: 데이터 집합 만들기 Roboflow 데이터 집합

1.1 이미지 수집

모델은 모범을 통해 학습합니다. 실제와 유사한 이미지로 훈련하는 것이 가장 중요합니다. 최종적으로 프로젝트를 배포할 때와 동일한 구성(카메라, 각도, 조명 등)에서 다양한 이미지를 수집하는 것이 이상적입니다.

이것이 불가능하다면 공개 데이터 세트에서 시작하여 초기 모델을 훈련한 다음 추론하는 동안 야생에서 이미지를 샘플링하여 데이터 세트와 모델을 반복적으로 개선할 수 있습니다.

1.2 레이블 만들기

이미지를 수집한 후에는 관심 있는 객체에 주석을 달아 모델이 학습할 수 있는 근거 자료를 만들어야 합니다.

YOLOv5 정확성

Roboflow Annotate는 팀과 함께 이미지를 관리하고 라벨을 붙이고 YOLOv5 의 주석 형식으로 내보낼 수 있는 간단한 웹 기반 도구입니다.

1.3 다음 대상에 대한 데이터 세트 준비 YOLOv5

이미지에 Roboflow 레이블을 지정하든 지정하지 않든, 이를 사용하여 데이터 세트를 YOLO 형식으로 변환하고 YOLOv5 YAML 구성 파일을 생성한 다음 교육 스크립트로 가져오기 위해 호스팅할 수 있습니다.

무료 Roboflow 계정 만들기 를 클릭하고 데이터 집합을 Public 작업 영역에서 주석이 없는 이미지에 레이블을 지정한 다음 데이터 세트의 버전을 생성하고 내보내기 YOLOv5 Pytorch 형식입니다.

참고: YOLOv5 는 교육 중에 온라인 증강을 수행하므로 Roboflow 에서 YOLOv5 로 교육할 때 증강 단계를 적용하지 않는 것이 좋습니다. 하지만 다음 전처리 단계를 적용하는 것이 좋습니다:

권장 전처리 단계

  • 자동 방향 - 이미지에서 EXIF 방향을 제거합니다.
  • 크기 조정(늘이기) - 모델의 정사각형 입력 크기(640x640이 YOLOv5 기본값)로 조정합니다.

버전을 생성하면 데이터 세트의 스냅샷이 제공되므로 나중에 이미지를 더 추가하거나 구성을 변경하더라도 언제든지 돌아가서 향후 모델 학습 실행을 이 버전과 비교할 수 있습니다.

YOLOv5 형식으로 내보내기

내보내기 YOLOv5 Pytorch 형식의 스니펫을 교육 스크립트나 노트북에 복사하여 데이터 세트를 다운로드합니다.

Roboflow 데이터 세트 다운로드 스니펫

옵션 2: 수동 데이터 세트 만들기

2.1 만들기 dataset.yaml

COCO128 의 첫 128개 이미지로 구성된 작은 튜토리얼 데이터 세트의 예시입니다. COCO train2017. These same 128 images are used for both training and validation to verify our training pipeline is capable of overfitting. data/coco128.yaml은 1) 데이터 세트 루트 디렉터리를 정의하는 데이터 세트 구성 파일입니다. path 에 대한 상대 경로와 train / val / test 이미지 디렉토리 (또는 *.txt 파일)과 2) 클래스 names 사전:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes (80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ...
    77: teddy bear
    78: hair drier
    79: toothbrush

2.2 레이블 만들기

주석 도구를 사용하여 이미지에 레이블을 지정한 후 레이블을 다음 주소로 내보냅니다. YOLO 형식하나로 *.txt 파일(이미지에 개체가 없는 경우, 이미지당 *.txt 파일이 필요합니다). 그리고 *.txt 파일 사양은 다음과 같습니다:

  • 개체당 한 행
  • 각 행은 class x_center y_center width height 형식입니다.
  • 상자 좌표는 정규화된 xywh 형식(0에서 1까지)을 사용합니다. 상자가 픽셀 단위로 되어 있으면 x_center 그리고 width 를 이미지 너비로, 그리고 y_center 그리고 height 이미지 높이를 기준으로 합니다.
  • 클래스 번호는 영 인덱싱됩니다(0부터 시작).

Roboflow 주석

위 이미지에 해당하는 라벨 파일에는 2인(클래스 0) 및 동점(클래스 27):

Roboflow 데이터 세트 전처리

2.3 디렉토리 정리

아래 예에 따라 기차 및 밸 이미지와 레이블을 구성합니다. YOLOv5 가정 /coco128/datasets 디렉토리 옆에/yolov5 디렉터리로 이동합니다. YOLOv5 각 이미지에 대해 자동으로 레이블을 찾습니다. 의 마지막 인스턴스를 대체하여 /images/ 를 사용하여 각 이미지 경로에 /labels/. 예를 들어

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 데이터 세트 구조

3. 모델 선택

훈련을 시작할 사전 훈련된 모델을 선택합니다. 여기서는 두 번째로 작고 빠른 모델인 YOLOv5s를 선택합니다. 모든 모델에 대한 전체 비교는 README 표를 참조하세요.

YOLOv5 모델

4. 기차

데이터 세트, 배치 크기, 이미지 크기 및 사전 학습된 다음 중 하나를 지정하여 COCO128에서 YOLOv5s 모델을 학습합니다. --weights yolov5s.pt (권장) 또는 무작위로 초기화 --weights '' --cfg yolov5s.yaml (권장하지 않음). 사전 학습된 가중치는 다음에서 자동으로 다운로드됩니다. 최신 YOLOv5 릴리스.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

💡 추가 --cache ram 또는 --cache disk 를 사용하여 교육 속도를 높일 수 있습니다(상당한 RAM/디스크 리소스가 필요함).

💡 항상 로컬 데이터 세트에서 학습하세요. Google 드라이브와 같은 마운트 또는 네트워크 드라이브는 매우 느립니다.

모든 교육 결과는 다음 주소로 저장됩니다. runs/train/ 실행 디렉터리가 증가함에 따라, 예를 들어 runs/train/exp2, runs/train/exp3 등 자세한 내용은 튜토리얼 노트북의 교육 섹션을 참조하세요. 콜랩에서 열기 캐글에서 열기

5. 시각화

Comet 로깅 및 시각화 🌟 신규

Comet 가 이제 YOLOv5 와 완전히 통합되었습니다. 실시간으로 모델 메트릭을 추적 및 시각화하고, 하이퍼파라미터, 데이터 세트 및 모델 체크포인트를 저장하고, Comet 사용자 지정 패널로 모델 예측을 시각화하세요! Comet 을 사용하면 작업 내용을 놓치지 않고 모든 규모의 팀에서 결과를 쉽게 공유하고 협업할 수 있습니다!

시작은 간단합니다:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

이 통합에서 지원되는 모든 Comet 기능에 대해 자세히 알아보려면 다음을 확인하세요. Comet 튜토리얼. 자세한 내용은 Comet 에서 확인하세요. 문서. 콜랩 노트북( Comet )을 사용해 보세요: 콜랩에서 열기

YOLO UI

ClearML 로깅 및 자동화 🌟 신규

ClearML 는 YOLOv5 에 완전히 통합되어 실험을 추적하고, 데이터 세트 버전을 관리하고, 원격으로 트레이닝 실행을 실행할 수도 있습니다. 활성화하려면 ClearML:

  • pip install clearml
  • 실행 clearml-init 를 클릭하여 ClearML 서버에 연결합니다.

실시간 업데이트, 모델 업로드, 실험 비교 등 실험 관리자에서 기대할 수 있는 모든 훌륭한 기능을 사용할 수 있지만 ClearML 에서는 커밋되지 않은 변경 사항과 설치된 패키지도 추적할 수 있습니다. 덕분에 ClearML 작업(우리가 실험이라고 부르는)도 다른 컴퓨터에서 재현할 수 있습니다! 단 한 줄만 추가하면 대기열에 YOLOv5 교육 작업을 예약하여 여러 명의 ClearML 에이전트(작업자)가 실행하도록 할 수 있습니다.

ClearML 데이터를 사용하여 데이터 집합을 버전업한 다음 고유 ID를 사용하여 YOLOv5 으로 전달할 수 있습니다. 이렇게 하면 번거로움 없이 데이터를 추적하는 데 도움이 됩니다. 자세한 내용은 ClearML 튜토리얼을 참조하세요!

ClearML 실험 관리 UI

로컬 로깅

교육 결과는 자동으로 다음과 같이 기록됩니다. 텐서보드 그리고 CSV 로거를 runs/train를 사용하여 각 새 교육에 대해 다음과 같이 새 실험 디렉터리를 생성합니다. runs/train/exp2, runs/train/exp3

This directory contains train and val statistics, mosaics, labels, predictions and augmented mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices.

로컬 로깅 결과

결과 파일 results.csv is updated after each epoch, and then plotted as results.png (아래)로 이동합니다. 또한 results.csv 파일을 수동으로 생성합니다:

from utils.plots import plot_results

plot_results("path/to/results.csv")  # plot 'results.csv' as 'results.png'

results.png

다음 단계

모델이 학습되면 최고의 체크포인트를 사용할 수 있습니다. best.pt 에:

지원 환경

Ultralytics 는 바로 사용할 수 있는 다양한 환경을 제공하며, 각 환경에는 다음과 같은 필수 종속성이 사전 설치되어 있습니다. CUDA, CUDNN, Python, 및 PyTorch와 같은 필수 종속 요소를 설치하여 프로젝트를 시작할 수 있습니다.

프로젝트 상태

YOLOv5 CI

이 배지는 모든 YOLOv5 GitHub Actions 지속적 통합(CI) 테스트가 성공적으로 통과되었음을 나타냅니다. 이러한 CI 테스트는 교육, 검증, 추론, 내보내기벤치마크 등 다양한 주요 측면에서 YOLOv5 의 기능과 성능을 엄격하게 확인합니다. 24시간마다 그리고 새로운 커밋이 있을 때마다 테스트를 수행하여 macOS, Windows 및 Ubuntu에서 일관되고 안정적인 작동을 보장합니다.

자주 묻는 질문

사용자 지정 데이터 집합에서 YOLOv5 을 어떻게 학습하나요?

사용자 지정 데이터 집합에 대한 YOLOv5 교육에는 여러 단계가 포함됩니다:

  1. 데이터 세트 준비하기: 이미지를 수집하고 라벨을 붙입니다. 같은 도구를 사용하여 Roboflow 와 같은 도구를 사용하여 데이터를 정리하고 YOLOv5 형식으로 내보냅니다.
  2. 설정 환경: YOLOv5 리포지토리를 복제하고 종속성을 설치합니다:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. 데이터 세트 구성 만들기: 쓰기 dataset.yaml 파일에 트레인/밸 경로와 클래스 이름을 정의합니다.
  4. 모델 훈련:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

YOLOv5 데이터 집합에 주석을 달려면 어떤 도구를 사용할 수 있나요?

이미지에 라벨을 붙일 수 있는 직관적인 웹 기반 도구인 Roboflow Annotate를 사용할 수 있습니다. 이 도구는 팀 협업과 YOLOv5 형식으로 내보내기를 지원합니다. 이미지를 수집한 후에는 Roboflow 을 사용해 주석을 효율적으로 만들고 관리하세요. 다른 옵션으로는 로컬 주석을 위한 LabelImg 및 CVAT와 같은 도구가 있습니다.

YOLO 모델 교육에 Ultralytics HUB를 사용해야 하는 이유는 무엇인가요?

Ultralytics HUB는 광범위한 코딩 기술 없이도 YOLO 모델을 교육, 배포 및 관리할 수 있는 엔드투엔드 플랫폼을 제공합니다. Ultralytics HUB를 사용하면 다음과 같은 이점이 있습니다:

  • 간편한 모델 훈련: 사전 구성된 환경으로 훈련 프로세스를 간소화합니다.
  • 데이터 관리: 데이터 세트와 버전 관리를 손쉽게 관리하세요.
  • 실시간 모니터링: 다음과 같은 도구를 통합하여 Comet 와 같은 도구를 통합하여 실시간 메트릭 추적 및 시각화를 지원합니다.
  • 협업: 리소스를 공유하고 쉽게 관리할 수 있는 팀 프로젝트에 이상적입니다.

주석이 달린 데이터를 YOLOv5 형식으로 변환하려면 어떻게 하나요?

주석이 달린 데이터를 Roboflow 을 사용하여 YOLOv5 형식으로 변환하려면:

  1. Roboflow 워크스페이스에 데이터 집합을 업로드합니다.
  2. 아직 레이블이 지정되지 않은 경우 이미지에 레이블을 지정합니다.
  3. 생성 및 내보내기 의 데이터 집합을 YOLOv5 Pytorch 형식으로 변경합니다. 정사각형 입력 크기(예: 640x640)로 자동 방향 및 크기 조정(늘이기)과 같은 전처리 단계가 적용되었는지 확인합니다.
  4. 데이터 세트를 다운로드하여 YOLOv5 교육 스크립트에 통합하세요.

상업용 애플리케이션에서 YOLOv5 을 사용하기 위한 라이선스 옵션은 무엇인가요?

Ultralytics 는 두 가지 라이선스 옵션을 제공합니다:

  • AGPL-3.0 라이선스: 비상업적 용도에 적합한 오픈 소스 라이선스로, 학생과 애호가에게 이상적입니다.
  • 엔터프라이즈 라이선스: YOLOv5 을 상업용 제품 및 서비스에 통합하려는 기업을 위한 맞춤형 라이선스입니다. 자세한 내용은 라이선스 페이지를 참조하세요.

자세한 내용은 Ultralytics 라이선스 가이드를 참조하세요.

📅 Created 11 months ago ✏️ Updated 4 days ago

댓글