
Comet을 활용한 YOLOv5
이 가이드에서는 YOLOv5를 Comet과 함께 사용하는 방법을 다룹니다. Comet은 머신러닝 실험을 추적, 비교 및 최적화하는 도구입니다.
Comet 소개#
Comet은 데이터 과학자, 엔지니어, 팀 리더가 머신러닝 및 딥러닝 모델을 더 빠르게 개발하고 최적화할 수 있도록 돕는 도구를 제공합니다.
모델 메트릭을 실시간으로 추적하고 시각화하며, 하이퍼파라미터, 데이터셋 및 모델 체크포인트를 저장하고, Comet Custom Panels로 모델 예측을 시각화하세요. Comet은 작업 기록을 보관하므로 결과를 쉽게 공유하고 팀 간 협업을 진행할 수 있습니다.
시작하기#
Comet 설치#
pip install comet_mlComet 인증 정보 구성#
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.ptComet은 하이퍼파라미터, 명령줄 인수, 훈련 및 검증 메트릭을 자동으로 기록합니다. Comet UI에서 실행 결과를 시각화하고 분석할 수 있습니다.

예제를 사용해 보세요!#
완료된 실행의 예제를 확인하세요.
또는 다음 Colab 노트북에서 직접 시도해 보세요:
자동 기록#
기본적으로 Comet은 다음 항목을 기록합니다.
메트릭#
- 학습 데이터 및 검증 데이터의 Box Loss, Object Loss, Classification Loss
- 검증 데이터의 mAP50, mAP50-95 지표
- 검증 데이터의 정밀도 및 재현율
파라미터#
- 모델 하이퍼파라미터
- 명령줄 옵션으로 전달된 모든 파라미터
시각화#
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 predictionsComet을 사용한 체크포인트 기록#
기본적으로 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 2Comet에 기록할 예측 이미지 수 제어#
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클래스별 메트릭 기록#
각 클래스의 mAP, 정밀도, 재현율 및 F1을 기록하려면 COMET_LOG_PER_CLASS_METRICS 환경 변수를 사용하세요:
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 플래그를 사용하면 됩니다.
데이터셋은 사용자 지정 데이터 훈련 튜토리얼에 설명된 대로 구성해야 합니다. 데이터셋 설정 yaml 파일은 coco128.yaml 파일과 동일한 형식을 따라야 합니다.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset업로드된 데이터셋은 Comet Workspace의 Artifacts 탭에서 확인할 수 있습니다.

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

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

저장된 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.ptArtifacts를 사용하면 실험 워크플로를 거쳐 데이터가 처리되는 과정의 계보도 추적할 수 있습니다. 아래 그래프에서 업로드한 데이터셋을 사용한 모든 실험을 확인할 수 있습니다.

학습 실행 재개#
인터넷 연결 중단 등 어떤 이유로든 학습 실행이 중단된 경우, 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.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 데이터셋 아티팩트(있는 경우)를 복원하고 동일한 실험에 계속 로그를 기록합니다.
댓글
질문을 하거나 결과를 공유하거나 다른 사람을 도와주세요.