
Comet ile YOLOv5#
Bu kılavuzda, makine öğrenimi deneylerini takip etmek, karşılaştırmak ve optimize etmek için güçlü bir araç olan Comet ile YOLOv5'in nasıl kullanılacağı anlatılıyor.
Comet Hakkında#
Comet, veri bilimcilerin, mühendislerin ve ekip liderlerinin makine öğrenimi ve derin öğrenme modellerini geliştirmesine ve optimize etmesine yardımcı olan araçlar geliştirir.
Model metriklerini gerçek zamanlı olarak takip edip görselleştir, hiperparametrelerini, veri kümelerini ve model kontrol noktalarını kaydet ve model tahminlerini Comet Custom Panels ile görselleştir! Comet, çalışmalarının izini kaybetmemeni sağlar; sonuçları paylaşmayı ve her büyüklükteki ekipler arasında iş birliği yapmayı kolaylaştırır!
Başlarken#
Comet'i yükle#
pip install comet_mlComet Kimlik Bilgilerini Yapılandır#
Comet'i YOLOv5 ile yapılandırmanın iki yolu vardır.
Kimlik bilgilerini ortam değişkenleriyle ayarlayabilirsin:
Ortam Değişkenleri
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'Ya da çalışma dizininde bir .comet.config dosyası oluşturup kimlik bilgilerini bu dosyada ayarlayabilirsin:
Comet Yapılandırma Dosyası
[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'Eğitim Betiğini Çalıştır#
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.ptHepsi bu kadar! Comet; hiperparametrelerini, komut satırı bağımsız değişkenlerini, eğitim ve doğrulama metriklerini otomatik olarak kaydeder. Çalıştırmalarını Comet arayüzünde görselleştirip analiz edebilirsin.

Bir Örnek Dene!#
Tamamlanmış bir çalıştırma örneğine buradan göz at.
Daha da iyisi, bu Colab Notebook'ta kendin dene:
Otomatik Olarak Kaydet#
Comet varsayılan olarak aşağıdaki öğeleri kaydeder:
Metrikler#
- Eğitim ve doğrulama verileri için kutu kaybı, nesne kaybı ve sınıflandırma kaybı
- Doğrulama verileri için mAP_0.5 ve mAP_0.5:0.95 metrikleri
- Doğrulama verileri için Kesinlik ve Duyarlılık
Parametreler#
- Model Hiperparametreleri
- Komut satırı seçenekleriyle aktarılan tüm parametreler
Görselleştirmeler#
- Modelin doğrulama verileri üzerindeki tahminlerine ait Karışıklık Matrisi
- Tüm sınıflar için PR ve F1 eğrilerinin grafikleri
- Sınıf Etiketlerinin Korelogramı
Comet Günlük Kaydını Yapılandır#
Comet'i, eğitim betiğine aktarılan komut satırı bayrakları veya ortam değişkenleri aracılığıyla ek verileri kaydedecek şekilde yapılandırabilirsin:
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 predictionsKontrol Noktalarını Comet'e Kaydetme#
Modellerin Comet'e kaydedilmesi varsayılan olarak devre dışıdır. Etkinleştirmek için eğitim betiğine save-period bağımsız değişkenini aktar. Bu işlem, günlüğe kaydedilen kontrol noktalarını save-period ile belirtilen aralığa göre Comet'e kaydeder:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Model Tahminlerini Kaydetme#
Model tahminleri (görüntüler, gerçek değer etiketleri ve sınırlayıcı kutular) varsayılan olarak Comet'e kaydedilir.
Kaydedilen tahminlerin sıklığını ve ilişkili görüntüleri bbox_interval komut satırı bağımsız değişkenini aktararak denetleyebilirsin. Tahminler, Comet'in Nesne Algılama Custom Panel'ı kullanılarak görselleştirilebilir. Bu sıklık, her epoch başına her N'inci veri batch'ine karşılık gelir. Aşağıdaki örnekte her epoch için her 2. veri batch'ini kaydediyoruz.
Not: YOLOv5 doğrulama veri yükleyicisi, eğitim batch boyutunun iki katını kullanır (--batch 16 için 32); bu nedenle günlük kaydı sıklığını buna göre ayarlaman gerekir.
Panel'i kullanan örnek bir projeyi burada bulabilirsin.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2Comet'e Kaydedilen Tahmin Görüntülerinin Sayısını Denetleme#
YOLOv5'ten gelen tahminleri kaydederken Comet, her tahmin kümesiyle ilişkili görüntüleri de kaydeder. Varsayılan olarak en fazla 100 doğrulama görüntüsü kaydedilir. Bu sayıyı COMET_MAX_IMAGE_UPLOADS ortam değişkeniyle artırabilir veya azaltabilirsin:
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1Sınıf Düzeyindeki Metrikleri Kaydetme#
Her sınıf için mAP, kesinlik, duyarlılık ve f1 değerlerini kaydetmek için COMET_LOG_PER_CLASS_METRICS ortam değişkenini kullan:
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.ptVeri Kümesini Comet Artifacts'a Yükleme#
Verilerini Comet Artifacts kullanarak depolamak istersen upload_dataset bayrağını kullanabilirsin.
Veri kümesi, YOLOv5 belgelerinde açıklandığı şekilde düzenlenmelidir. Veri kümesi yapılandırma yaml dosyası, coco128.yaml dosyasıyla aynı biçimi izlemelidir.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_datasetYüklediğin veri kümesini Comet çalışma alanındaki Artifacts sekmesinde bulabilirsin:

Verileri doğrudan Comet arayüzünde önizleyebilirsin:

Artifacts sürümlenir ve veri kümesiyle ilgili meta verilerin eklenmesini de destekler. Comet, veri kümen yaml dosyasındaki meta verileri otomatik olarak kaydeder:

Kaydedilmiş Artifact Kullanma#
Comet Artifacts'taki bir veri kümesini kullanmak istersen veri kümen yaml dosyasındaki path değişkenini aşağıdaki Artifact kaynak URL'sini gösterecek şekilde ayarla:
# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"Ardından bu dosyayı aşağıdaki şekilde eğitim betiğine aktar:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptArtifacts, deney iş akışın boyunca verilerin izlediği yolu da takip etmene olanak tanır. Burada, yüklediğin veri kümesini kullanan tüm deneyleri gösteren bir grafik görebilirsin:

Eğitim Çalıştırmasını Sürdürme#
Eğitim çalıştırman herhangi bir nedenle, örneğin internet bağlantısının kesilmesi nedeniyle kesintiye uğrarsa, çalıştırmayı resume bayrağını ve Comet Run Path'i kullanarak sürdürebilirsin.
Run Path şu biçimdedir: comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.
Bu işlem, çalıştırmayı kesinti öncesindeki durumuna döndürür; buna modelin bir kontrol noktasından geri yüklenmesi, tüm hiperparametrelerin ve eğitim argümanlarının geri yüklenmesi ve özgün çalıştırmada kullanılmışlarsa Comet veri kümesi Artifact'larının indirilmesi dahildir. Sürdürülen çalıştırma, Comet kullanıcı arayüzünde mevcut Experiment'a günlük kaydı göndermeye devam eder:
python train.py \
--resume "comet://YOUR_RUN_PATH"Comet Optimizer ile Hiperparametre Araması#
YOLOv5, Comet'in Optimizer'ı ile de entegre olduğundan, hiperparametre taramalarını Comet kullanıcı arayüzünde kolayca görselleştirebilirsin.
Optimizer Taramasını Yapılandırma#
Comet Optimizer'ı yapılandırmak için taramayla ilgili bilgileri içeren bir JSON dosyası oluşturman gerekir. Örnek bir dosya utils/loggers/comet/optimizer_config.json konumunda sağlanmıştır:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"hpo.py betiği, train.py ile aynı argümanları kabul eder. Taramana ek argümanlar iletmek istiyorsan bunları betikten sonra eklemen yeterlidir:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1Sonuçları Görselleştirme#
Comet, taramanın sonuçlarını görselleştirmek için çeşitli yöntemler sunar. Tamamlanmış taramanın bulunduğu projeye buradan göz at.

Sık Sorulan Sorular#
comet.com adresinde ücretsiz bir hesap oluştur, hesap ayarlarını aç ve API anahtarını kopyala. Anahtarı
COMET_API_KEYolarak dışa aktar veyatrain.pydosyasının yanındaki bir.comet.configdosyasında sakla.Evet. Deneyi yerel bir arşive yazmak için
COMET_MODE=offlineayarını yap, ardından daha sonracomet upload path/to/archive.zipile yükle.Kontrol noktalarının kaydı varsayılan olarak kapalıdır.
train.pykomutuna--save-period 1(veya başka bir aralık) ilet; kaydedilen her kontrol noktası deneye yüklenir.Comet kullanıcı arayüzünden çalıştırma yolunu kopyala ve
python train.py --resume "comet://WORKSPACE/PROJECT/EXPERIMENT_ID"ile eğitimi başlat. YOLOv5; kontrol noktasını, hiperparametreleri ve Comet veri kümesi Artifact'ını geri yükler ve aynı Experiment'a günlük kaydı göndermeye devam eder.