Ultralytics YOLO27:
Get Started

머신러닝 실험 추적용 Comet ML 로고

Comet을 활용한 YOLOv5#

이 가이드에서는 머신러닝 실험을 추적, 비교, 최적화하는 강력한 도구인 Comet과 YOLOv5를 함께 사용하는 방법을 다룹니다.

Comet 소개#

Comet은 데이터 과학자, 엔지니어, 팀 리더가 머신러닝 및 딥러닝 모델을 더 빠르게 개발하고 최적화할 수 있도록 돕는 도구를 제공합니다.

모델 메트릭을 실시간으로 추적하고 시각화하며, 하이퍼파라미터, 데이터셋, 모델 체크포인트를 저장하고, Comet Custom Panels을 사용하여 모델 예측을 시각화하세요! Comet을 사용하면 작업 내역을 놓치지 않고, 모든 규모의 팀과 결과를 쉽게 공유하고 협업할 수 있습니다!

시작하기#

Comet 설치#

pip install comet_ml

Comet 인증 정보 구성#

YOLOv5에서 Comet을 구성하는 방법은 두 가지입니다.

환경 변수를 통해 인증 정보를 설정할 수 있습니다.

환경 변수

export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

또는 작업 디렉터리에 .comet.config 파일을 만들고 해당 파일에 인증 정보를 설정할 수 있습니다.

Comet 구성 파일

[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

학습 스크립트 실행#

# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

이제 설정이 완료되었습니다! Comet은 하이퍼파라미터, 명령줄 인수, 학습 및 검증 메트릭을 자동으로 기록합니다. Comet UI에서 실행 결과를 시각화하고 분석할 수 있습니다.

YOLOv5 학습 메트릭과 실험 추적을 보여주는 Comet 대시보드

예제를 사용해 보세요!#

완료된 실행 예제를 확인하세요.

또는 Colab Notebook에서 직접 사용해 보세요.

Colab에서 열기

자동 기록#

기본적으로 Comet은 다음 항목을 기록합니다.

메트릭#

  • 학습 데이터 및 검증 데이터의 Box Loss, Object Loss, Classification Loss
  • 검증 데이터의 mAP_0.5 및 mAP_0.5:0.95 메트릭
  • 검증 데이터의 정밀도 및 재현율

파라미터#

  • 모델 하이퍼파라미터
  • 명령줄 옵션으로 전달된 모든 파라미터

시각화#

  • 검증 데이터에 대한 모델 예측의 혼동 행렬
  • 모든 클래스의 PR 및 F1 곡선 그래프
  • 클래스 레이블의 상관도

Comet 로깅 구성#

학습 스크립트에 전달하는 명령줄 플래그 또는 환경 변수를 통해 Comet이 추가 데이터를 기록하도록 구성할 수 있습니다.

export COMET_MODE=online                           # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME="yolov5"                   # Set the name for the saved model. Defaults to yolov5
export COMET_LOG_CONFUSION_MATRIX=false            # Set to disable logging a Comet Confusion Matrix. Defaults to true
export COMET_MAX_IMAGE_UPLOADS=30                  # Controls how many total image predictions to log to Comet. Defaults to 100.
export COMET_LOG_PER_CLASS_METRICS=true            # Set to log evaluation metrics for each detected class at the end of training. Defaults to false
export COMET_DEFAULT_CHECKPOINT_FILENAME="last.pt" # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt'
export COMET_LOG_BATCH_METRICS=true                # Set this if you would like to log training metrics at the batch level. Defaults to false.
export COMET_LOG_PREDICTIONS=true                  # Set this to false to disable logging model predictions

Comet을 사용한 체크포인트 기록#

Comet에 모델을 기록하는 기능은 기본적으로 비활성화되어 있습니다. 이 기능을 활성화하려면 학습 스크립트에 save-period 인수를 전달하세요. 그러면 save-period로 지정한 간격 값에 따라 체크포인트가 Comet에 저장됩니다.

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --save-period 1

모델 예측 기록#

기본적으로 모델 예측(이미지, 정답 레이블 및 바운딩 박스)이 Comet에 기록됩니다.

bbox_interval 명령줄 인수를 전달하여 기록되는 예측 및 관련 이미지의 빈도를 제어할 수 있습니다. Comet의 객체 감지 Custom Panel을 사용하여 예측을 시각화할 수 있습니다. 이 빈도는 에폭마다 N번째 데이터 배치에 해당합니다. 아래 예제에서는 에폭마다 두 번째 데이터 배치를 기록합니다.

참고: YOLOv5 검증 데이터 로더는 학습 배치 크기의 두 배를 사용하므로(--batch 16의 경우 32), 이에 맞게 로깅 빈도를 설정해야 합니다.

Panel을 사용하는 예제 프로젝트는 여기에서 확인할 수 있습니다.

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 2

Comet에 기록할 예측 이미지 수 제어#

YOLOv5의 예측을 기록하면 Comet은 각 예측 세트와 관련된 이미지도 기록합니다. 기본적으로 검증 이미지는 최대 100개까지 기록됩니다. COMET_MAX_IMAGE_UPLOADS 환경 변수를 사용하여 이 수를 늘리거나 줄일 수 있습니다.

env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 1

클래스별 메트릭 기록#

COMET_LOG_PER_CLASS_METRICS 환경 변수를 사용하여 각 클래스의 mAP, 정밀도, 재현율, f1을 기록할 수 있습니다.

env COMET_LOG_PER_CLASS_METRICS=true python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt

데이터셋을 Comet Artifacts에 업로드#

Comet Artifacts를 사용하여 데이터를 저장하려면 upload_dataset 플래그를 사용하면 됩니다.

데이터셋은 YOLOv5 문서에 설명된 방식으로 구성해야 합니다. 데이터셋 구성 yaml 파일은 coco128.yaml 파일과 동일한 형식을 따라야 합니다.

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --upload_dataset

업로드된 데이터셋은 Comet Workspace의 Artifacts 탭에서 확인할 수 있습니다.

데이터셋 버전 관리를 위한 Comet Artifacts 패널

Comet UI에서 데이터를 바로 미리 볼 수 있습니다.

Comet 데이터셋 미리보기 및 버전 기록

Artifacts는 버전 관리가 가능하며 데이터셋에 관한 메타데이터 추가도 지원합니다. Comet은 데이터셋 yaml 파일의 메타데이터를 자동으로 기록합니다.

Comet Artifact 메타데이터

저장된 Artifact 사용#

Comet Artifacts의 데이터셋을 사용하려면 데이터셋 yaml 파일의 path 변수가 다음 Artifact 리소스 URL을 가리키도록 설정하세요.

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

그런 다음 다음과 같은 방식으로 이 파일을 학습 스크립트에 전달하세요.

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data artifact.yaml \
  --weights yolov5s.pt

Artifacts를 사용하면 실험 워크플로를 거쳐 데이터가 처리되는 과정의 계보도 추적할 수 있습니다. 아래 그래프에서 업로드한 데이터셋을 사용한 모든 실험을 확인할 수 있습니다.

Comet Artifact 계보 그래프

학습 실행 재개#

인터넷 연결 중단 등 어떤 이유로든 학습 실행이 중단된 경우, resume 플래그와 Comet Run Path를 사용하여 실행을 재개할 수 있습니다.

Run Path의 형식은 comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID입니다.

이렇게 하면 체크포인트에서 모델을 복원하고 모든 하이퍼파라미터와 학습 인수를 복원하며, 원래 실행에서 사용한 경우 Comet 데이터셋 Artifacts를 다운로드하는 등 중단 전 상태로 실행을 복원합니다. 재개된 실행은 Comet UI의 기존 Experiment에 계속 로그를 기록합니다:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Comet Optimizer를 사용한 하이퍼파라미터 탐색#

YOLOv5는 Comet의 Optimizer와도 통합되어 있어 Comet UI에서 하이퍼파라미터 스윕을 간편하게 시각화할 수 있습니다.

Optimizer 스윕 구성#

Comet Optimizer를 구성하려면 스윕 정보를 담은 JSON 파일을 만들어야 합니다. utils/loggers/comet/optimizer_config.json에 예시 파일이 제공되어 있습니다:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json"

hpo.py 스크립트는 train.py과 동일한 인수를 받습니다. 스윕에 추가 인수를 전달하려면 스크립트 뒤에 추가하면 됩니다:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
  --save-period 1 \
  --bbox_interval 1

결과 시각화#

Comet은 스윕 결과를 시각화하는 다양한 방법을 제공합니다. 스윕을 완료한 프로젝트를 여기에서 확인해 보세요.

Comet 하이퍼파라미터 시각화

자주 묻는 질문#

  • comet.com에서 무료 계정을 만들고 계정 설정을 연 다음 API 키를 복사하세요. 키를 COMET_API_KEY로 내보내거나 train.py 옆의 .comet.config 파일에 저장하세요.

  • 예. COMET_MODE=offline을 설정하여 실험을 로컬 아카이브에 기록한 다음, 나중에 comet upload path/to/archive.zip로 업로드하세요.

  • 체크포인트 로깅은 기본적으로 꺼져 있습니다. --save-period 1(또는 다른 간격)을 train.py에 전달하면 저장된 각 체크포인트가 실험에 업로드됩니다.

  • Comet UI에서 run path를 복사한 다음 python train.py --resume "comet://WORKSPACE/PROJECT/EXPERIMENT_ID"을 사용하여 학습을 시작하세요. YOLOv5는 체크포인트, 하이퍼파라미터 및 Comet 데이터셋 아티팩트(있는 경우)를 복원하고 동일한 실험에 계속 로그를 기록합니다.

댓글