YOLOv5 와 함께 Comet
이 가이드에서는 다음에서 YOLOv5 사용하는 방법을 다룹니다. Comet과 함께 머신 러닝 실험을 추적, 비교, 최적화하는 강력한 도구를 사용하는 방법을 설명합니다.
정보 Comet
Comet 는 데이터 과학자, 엔지니어, 팀 리더가 머신러닝 및 딥러닝 모델을 가속화하고 최적화하는 데 도움이 되는 도구를 구축합니다.
실시간으로 모델 메트릭을 추적 및 시각화하고, 하이퍼파라미터, 데이터세트, 모델 체크포인트를 저장하고, Comet 사용자 지정 패널로 모델 예측을 시각화하세요! Comet 사용하면 작업 내용을 놓치지 않고 모든 규모의 팀에서 결과를 쉽게 공유하고 협업할 수 있습니다!
시작하기
설치 Comet
Comet 자격 증명 구성
Comet 를 YOLOv5 로 구성하는 두 가지 방법이 있습니다.
환경 변수를 통해 자격 증명을 설정할 수 있습니다:
환경 변수
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'
또는 .comet.config
파일을 작업 디렉토리에 넣고 거기에 자격 증명을 설정합니다:
Comet 구성 파일
교육 스크립트 실행
# 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에서 실행을 시각화하고 분석할 수 있습니다.
예제를 사용해 보세요!
여기에서 완료된 실행의 예를 확인하세요.
더 좋은 방법은 이 랩 노트에서 직접 사용해 보는 것입니다:
자동 로그
기본적으로 Comet 다음 항목을 기록합니다:
메트릭
매개변수
- 모델 하이퍼파라미터
- 명령줄 옵션을 통해 전달되는 모든 매개변수
시각화
- 유효성 검사 데이터에 대한 모델 예측의 혼동 행렬
- 모든 클래스의 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_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
다음을 사용하여 체크포인트 로깅 Comet
Comet 에 모델 로깅은 기본적으로 비활성화되어 있습니다. 활성화하려면 save-period
인수를 트레이닝 스크립트에 추가합니다. 그러면 다음에서 제공한 간격 값에 따라 기록된 체크포인트가 Comet 에 저장됩니다. save-period
:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
로깅 모델 예측
기본적으로 모델 예측(이미지, 실측 기준 레이블 및 바운딩 박스)은 Comet 에 기록됩니다.
로깅된 예측 및 관련 이미지의 빈도를 제어할 수 있습니다. bbox_interval
명령줄 인수를 사용할 수 있습니다. 예측은 Comet 의 물체 감지 사용자 지정 패널. 이 빈도는 데이터의 모든 N번째 배치에 해당합니다. epoch. 아래 예에서는 각 에포크에 대해 두 번째 데이터 배치마다 로깅하고 있습니다.
참고: YOLOv5 유효성 검사 데이터 로더는 기본적으로 배치 크기가 32로 설정되므로 그에 따라 로깅 빈도를 설정해야 합니다.
다음은 패널을 사용하는 프로젝트 예시입니다.
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 아티팩트에 데이터 세트 업로드하기
다음을 사용하여 데이터를 저장하려는 경우 Comet 아티팩트를 사용하여 upload_dataset
플래그.
데이터 세트는 다음 설명에 따라 구성해야 합니다. YOLOv5 문서. 데이터 세트 구성 yaml
파일과 동일한 형식을 따라야 합니다. coco128.yaml
파일을 만듭니다.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset
업로드된 데이터 세트는 Comet 워크스페이스의 아티팩트 탭에서 찾을 수 있습니다:
Comet UI에서 바로 데이터를 미리 볼 수 있습니다:
아티팩트는 버전이 관리되며 데이터 세트에 대한 메타데이터 추가도 지원합니다. Comet 은 데이터 세트의 메타데이터를 자동으로 기록합니다. yaml
파일을 만듭니다:
저장된 아티팩트 사용
Comet 아티팩트의 데이터 집합을 사용하려면 다음과 같이 설정합니다. path
변수 yaml
파일을 다음 아티팩트 리소스 URL을 가리키도록 변경합니다:
# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME>/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"
그런 다음 다음과 같은 방법으로 이 파일을 교육 스크립트에 전달합니다:
아티팩트를 사용하면 실험 워크플로우를 통해 데이터의 계보를 추적할 수도 있습니다. 여기에서 업로드한 데이터 집합을 사용한 모든 실험을 보여주는 그래프를 볼 수 있습니다:
훈련 실행 재개하기
인터넷 연결이 끊기는 등의 이유로 트레이닝 러닝이 중단된 경우 다음을 사용하여 러닝을 다시 시작할 수 있습니다. resume
플래그와 Comet 실행 경로를 사용합니다.
실행 경로의 형식은 다음과 같습니다. comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID
.
이렇게 하면 중단 전 상태로 실행이 복원되며, 여기에는 체크포인트에서 모델 복원, 모든 하이퍼파라미터 및 훈련 인수 복원, 원래 실행에 사용된 경우 Comet 데이터 세트 아티팩트 다운로드가 포함됩니다. 재개된 실행은 Comet UI의 기존 실험에 계속 로깅됩니다:
Comet 최적화 도구를 사용한 하이퍼파라미터 검색
또한 YOLOv5 Comet 옵티마이저와 통합되어 Comet UI에서 하이퍼파라미터 스윕을 간편하게 시각화할 수 있습니다.
옵티마이저 스윕 구성
Comet 옵티마이저를 구성하려면 스윕에 대한 정보가 포함된 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 스윕 결과를 시각화할 수 있는 다양한 방법을 제공합니다. 여기에서 스윕이 완료된 프로젝트를 살펴보세요.