Comet과 함께 Ultralytics YOLOv5를 사용하는 방법
Ultralytics가 Comet과 협력해 Ultralytics YOLOv5 모델을 최적화하는 방법을 알아보세요. 실시간 추적, 간소화된 협업 및 향상된 재현성을 제공합니다.

Ultralytics는 YOLOv5와 같은 훌륭한 오픈 소스 도구를 모두에게 무료로 제공하기 위한 연구 및 개발 자금을 마련하고자 다른 스타트업과 상업적 파트너십을 맺고 있습니다. 이 글에는 해당 파트너에 대한 제휴 링크가 포함될 수 있습니다.
최신 파트너사인 Comet은 데이터 과학자, 엔지니어, 팀 리더가 머신 러닝 및 딥 러닝 모델을 가속화하고 최적화하는 데 도움이 되는 도구를 개발합니다.
Comet은 모델, 데이터셋, 메트릭을 추적하는 강력한 도구입니다. 또한 재현성을 보장하고 각 실행에서 원활하게 디버깅할 수 있도록 시스템 및 환경 변수를 기록합니다. 이는 어떤 노트를 남겨야 하는지 마법처럼 알고 있는 가상 비서와 같습니다. 모델 메트릭을 실시간으로 추적하고 시각화하며, 하이퍼파라미터, 데이터셋, 모델 체크포인트를 저장하고, Comet Custom Panels을 사용하여 모델 예측을 시각화할 수 있습니다!
또한 Comet은 작업을 절대 놓치지 않도록 지원하며, 모든 규모의 팀에서 결과를 쉽게 공유하고 협업할 수 있도록 합니다!
YOLOv5는 컴퓨터 비전 여정을 시작하기에 훌륭한 출발점입니다. 모델 성능을 개선하고 프로덕션 환경에 바로 사용할 수 있도록 준비하려면 Comet과 같은 실험 추적 도구에 결과를 기록해야 합니다.
Comet과 YOLOv5의 통합은 3가지 주요 기능을 제공합니다:
- 자동 로깅 및 사용자 지정 로깅 기능
- 디버깅 및 재현성을 위해 데이터셋과 모델을 아티팩트로 저장
- Comet의 사용자 지정 패널로 화면 구성
이 가이드에서는 YOLOv5를 Comet과 함께 사용하는 방법을 다룹니다.
이제 실험을 실시간으로 추적할 준비가 되셨나요? 시작해 보겠습니다!
시작하기#
1. Comet 설치#
pip install comet_ml2. Comet 자격 증명 구성#
YOLOv5에서 Comet을 구성하는 방법은 두 가지입니다.
환경 변수를 통해 자격 증명을 설정하거나, 작업 디렉터리에 .comet.config 파일을 생성하고 그 안에 자격 증명을 설정할 수 있습니다.
환경 변수#
export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'Comet 구성 파일#
[comet]
api_key=<Your API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'3. 학습 스크립트 실행#
# 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에서 실행 결과를 시각화하고 분석할 수 있습니다.

직접 사용해 보세요!#
완료된 실행 예시를 확인해 보세요.
더 좋은 방법은 이 Colab Notebook에서 직접 사용해 보는 것입니다.
자동으로 기록하기#
기본적으로 Comet은 다음 항목을 기록합니다:
메트릭#
- 학습 및 검증 데이터의 Box Loss, Object Loss, Classification Loss
- 검증 데이터의 mAP_0.5, mAP_0.5:0.95 메트릭
- 검증 데이터의 Precision 및 Recall
파라미터#
- 모델 하이퍼파라미터
- 명령줄 옵션을 통해 전달된 모든 파라미터
시각화#
- 검증 데이터에 대한 모델 예측의 Confusion Matrix
- 모든 클래스에 대한 PR 및 F1 곡선 플롯
- 클래스 레이블의 Correlogram
Comet 로깅 구성#
학습 스크립트에 전달하는 명령줄 플래그 또는 환경 변수를 통해 Comet이 추가 데이터를 기록하도록 구성할 수 있습니다.
export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME=<your model name> # 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=<number of allowed images to upload to Comet> # 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=<your checkpoint filename> # 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 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모델 예측 기록하기#
기본적으로 모델 예측(이미지, ground truth 레이블, 바운딩 박스)은 Comet에 기록됩니다. bbox_interval 명령줄 인수를 전달하여 기록되는 예측 및 관련 이미지의 빈도를 제어할 수 있습니다. Comet의 Object Detection Custom Panel을 사용하여 예측을 시각화할 수 있습니다. 이 빈도는 에포크마다 N번째 데이터 배치마다 기록하는 것을 의미합니다. 아래 예시에서는 각 에포크의 2번째 데이터 배치마다 기록합니다.
참고: YOLOv5 검증 데이터 로더의 배치 크기는 기본적으로 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클래스 수준 메트릭 기록하기#
COMET_LOG_PER_CLASS_METRICS 환경 변수를 사용하여 각 클래스의 mAP, precision, recall, f1을 기록합니다.
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.ptComet 아티팩트에 데이터셋 업로드하기#
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 UI에서 데이터를 직접 미리 볼 수 있습니다.

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

저장된 아티팩트 사용하기#
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또한 아티팩트를 사용하면 데이터가 Experimentation 워크플로를 거치는 동안 데이터 계보를 추적할 수 있습니다. 여기에서는 업로드한 데이터셋을 사용한 모든 실험을 보여 주는 그래프를 확인할 수 있습니다.

학습 실행 재개하기#
인터넷 연결 중단 등 어떤 이유로든 학습 실행이 중단된 경우 resume 플래그와 Comet Run Path를 사용하여 실행을 재개할 수 있습니다.
Run Path의 형식은 다음과 같습니다: comet://<your workspace name>/<your project name>/<experiment id>.
이렇게 하면 중단 전 상태로 실행이 복원됩니다. 여기에는 체크포인트에서 모델 복원, 모든 하이퍼파라미터 및 학습 인수 복원, 원래 실행에서 사용한 경우 Comet 데이터셋 아티팩트 다운로드가 포함됩니다. 재개된 실행은 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 optimizer -j <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonComet은 스윕 결과를 시각화하는 다양한 방법을 제공합니다. 완료된 스윕이 있는 프로젝트를 확인해 보세요:

계속 소통하기#
Comet과의 통합을 사용하여 학습 실행부터 프로덕션 모니터링까지 YOLOv5 모델을 관리하고 시각화하며 최적화해 보세요.
물론 Ultralytics Community에 참여하여 YOLOv5 학습, 검증, 배포에 관한 질문을 하고 팁을 공유할 수도 있습니다.









