Meet YOLO26: next-gen vision AI.

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

Link to this sectionComet과 함께하는 YOLOv5#

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

Link to this sectionComet 소개#

Comet은 데이터 과학자, 엔지니어, 팀 리더가 머신러닝딥러닝 모델을 가속화하고 최적화하도록 돕는 도구를 구축합니다.

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

Link to this section시작하기#

Link to this sectionComet 설치#

pip install comet_ml

Link to this sectionComet 자격 증명 구성#

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'

Link to this section학습 스크립트 실행#

# 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 대시보드

Link to this section예제를 체험해보세요!#

완료된 실행 예제를 확인해 보십시오.

아니면 더 나아가 Colab 노트북에서 직접 체험해 보십시오:

Open In Colab

Link to this section자동 기록#

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

Link to this section메트릭#

Link to this section매개변수#

  • 모델 하이퍼파라미터
  • 명령줄 옵션을 통해 전달된 모든 파라미터

Link to this section시각화#

  • 검증 데이터에 대한 모델 예측의 혼동 행렬(Confusion Matrix)
  • 모든 클래스에 걸친 PR 및 F1 곡선 플롯
  • 클래스 라벨의 상관관계도(Correlogram)

Link to this sectionComet 로깅 구성#

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_LEVEL_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

Link to this sectionComet으로 체크포인트 기록#

Comet에 대한 모델 기록은 기본적으로 비활성화되어 있습니다. 활성화하려면 save-period 인수를 학습 스크립트에 전달하십시오. 이는 save-period에서 제공된 간격 값에 따라 기록된 체크포인트를 Comet에 저장합니다:

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

Link to this section모델 예측 기록#

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

기록된 예측 및 관련 이미지의 빈도는 bbox_interval 명령줄 인수를 전달하여 제어할 수 있습니다. 예측은 Comet의 객체 탐지(Object Detection) Custom Panel을 사용하여 시각화할 수 있습니다. 이 빈도는 에포크(epoch)당 N번째 데이터 배치에 해당합니다. 아래 예제에서는 각 에포크마다 2번째 배치 데이터를 기록하고 있습니다.

참고: YOLOv5 검증 데이터 로더는 기본적으로 배치 크기(batch size)가 32로 설정되므로 이에 따라 로깅 빈도를 설정해야 합니다.

여기 패널을 사용한 프로젝트 예제가 있습니다.

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

Link to this sectionComet에 기록되는 예측 이미지 수 제어#

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

Link to this section클래스 수준 메트릭 기록#

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

Link to this sectionComet 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 작업 공간의 Artifacts 탭에서 찾을 수 있습니다:

데이터셋 버전 관리를 위한 Comet 아티팩트 패널

Comet UI에서 직접 데이터를 미리 볼 수 있습니다:

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

아티팩트는 버전이 지정되며 데이터셋에 대한 메타데이터 추가를 지원합니다. Comet은 데이터셋 yaml 파일에서 메타데이터를 자동으로 기록합니다:

Comet 아티팩트 메타데이터

Link to this section저장된 아티팩트 사용#

If you would like to use a dataset from Comet Artifacts, set the path variable in your dataset yaml file to point to the following Artifact resource 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

아티팩트를 사용하면 실험 워크플로 전반에서 데이터의 출처를 추적할 수도 있습니다. 여기에서 업로드된 데이터셋을 사용한 모든 실험을 보여주는 그래프를 볼 수 있습니다:

Comet 아티팩트 리니지 그래프

Link to this section학습 실행 재개#

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

Run Path는 comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID 형식을 가집니다.

이 작업은 체크포인트에서 모델 복원, 모든 하이퍼파라미터 및 학습 인수 복원, 원래 실행에서 사용된 Comet 데이터셋 아티팩트 다운로드를 포함하여 중단되기 전의 상태로 실행을 복원합니다. 재개된 실행은 Comet UI의 기존 실험에 계속해서 기록됩니다:

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

Link to this sectionComet Optimizer를 사용한 하이퍼파라미터 검색#

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

Link to this sectionOptimizer 스윕 구성#

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

Link to this section결과 시각화#

Comet은 스윕 결과를 시각화하는 다양한 방법을 제공합니다. 완료된 스윕이 포함된 프로젝트를 확인해 보십시오.

Comet 하이퍼파라미터 시각화

댓글