
Comet ile YOLOv5#
Bu kılavuzda, makine öğrenimi deneylerini izlemek, karşılaştırmak ve optimize etmek için güçlü bir araç olan Comet ile YOLOv5'in nasıl kullanılacağı ele alınmaktadır.
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 takibini asla kaybetmemenı sağlar ve her büyüklükteki ekipte sonuçları paylaşmayı ve 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şkenleri aracılığıyla 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'Alternatif olarak, çalışma dizininde bir .comet.config dosyası oluşturup kimlik bilgilerini burada 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 günlüğe kaydeder. Çalıştırmalarını Comet kullanıcı 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 günlüğe kaydet#
Comet varsayılan olarak aşağıdaki öğeleri günlüğe kaydeder:
Metrikler#
- Eğitim ve doğrulama verileri için Box Loss, Object Loss ve Classification Loss
- Doğrulama verileri için mAP_0.5 ve mAP_0.5:0.95 metrikleri
- Doğrulama verileri için Precision ve Recall
Parametreler#
- Model hiperparametreleri
- Komut satırı seçenekleri aracılığıyla iletilen tüm parametreler
Görselleştirmeler#
- Model tahminlerinin doğrulama verileri üzerindeki Confusion Matrix'i
- Tüm sınıflardaki PR ve F1 eğrileri için grafikler
- Sınıf etiketlerinin korelogramı
Comet günlüğünü yapılandırma#
Comet, eğitim betiğine iletilen komut satırı bayrakları veya ortam değişkenleri aracılığıyla ek verileri günlüğe kaydedecek şekilde yapılandırılabilir:
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 predictionsKontrol noktalarını Comet ile günlüğe kaydetme#
Modellerin Comet'e günlüğ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 ilet. Bu işlem, günlüğe kaydedilen kontrol noktalarını save-period ile sağlanan aralık değerine göre Comet'e kaydeder:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Model tahminlerini günlüğe kaydetme#
Varsayılan olarak model tahminleri (görüntüler, gerçek etiketler ve sınırlayıcı kutular) Comet'e günlüğe kaydedilir.
Günlüğe kaydedilen tahminlerin ve ilişkili görüntülerin sıklığını bbox_interval komut satırı bağımsız değişkenini ileterek denetleyebilirsin. Tahminler, Comet'in Object Detection Custom Panel'i kullanılarak görselleştirilebilir. Bu sıklık, epoch başına her N'inci veri yığınına karşılık gelir. Aşağıdaki örnekte, her epoch için her 2. veri yığınını günlüğe kaydediyoruz.
Not: YOLOv5 doğrulama veri yükleyicisi varsayılan olarak batch size değerini 32 olarak ayarlar; bu nedenle günlüğe kaydetme sıklığını buna göre ayarlaman gerekir.
Panel'i kullanan örnek bir projeye buradan göz atabilirsin.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2Comet'e günlüğe kaydedilen tahmin görüntülerinin sayısını denetleme#
YOLOv5'ten tahminleri günlüğe kaydederken Comet, her tahmin kümesiyle ilişkili görüntüleri de günlüğe kaydeder. Varsayılan olarak en fazla 100 doğrulama görüntüsü günlüğe kaydedilir. Bu sayıyı COMET_MAX_IMAGE_UPLOADS ortam değişkenini kullanarak 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 günlüğe kaydetme#
Her sınıf için mAP, precision, recall ve f1 değerlerini günlüğe kaydetmek üzere 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.ptBir veri kümesini Comet Artifacts'e yükleme#
Verilerini Comet Artifacts kullanarak depolamak istersen bunu upload_dataset bayrağıyla yapabilirsin.
Veri kümesi, YOLOv5 belgelerinde açıklanan ş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üklenen veri kümesini Comet Workspace'teki Artifacts sekmesinde bulabilirsin:

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

Artifacts sürümlendirilir ve veri kümesi hakkında meta veriler eklenmesini de destekler. Comet, veri kümesinin yaml dosyasındaki meta verileri otomatik olarak günlüğe kaydeder:

Kaydedilmiş bir Artifact'i kullanma#
Comet Artifacts'ten bir veri kümesi kullanmak istersen veri kümesinin 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ı eğitim betiğine aşağıdaki şekilde ilet:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptArtifacts, verilerin deney iş akışında ilerlerken kökenini de takip etmeni sağlar. Burada, yüklediğin veri kümesini kullanan tüm deneyleri gösteren bir grafik görebilirsin:

Bir eğitim çalıştırmasına devam etme#
Eğitim çalıştırman, örneğin internet bağlantısının kesilmesi gibi herhangi bir nedenle kesintiye uğrarsa resume bayrağını ve Comet Run Path'i kullanarak çalıştırmaya devam edebilirsin.
Run Path şu biçimdedir: comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.
Bu işlem, modelin bir kontrol noktasından geri yüklenmesi, tüm hiperparametrelerin ve eğitim bağımsız değişkenlerinin geri yüklenmesi ve ilk çalıştırmada kullanılmışsa Comet veri kümesi Artifact'lerinin indirilmesi dahil olmak üzere çalıştırmayı kesintiden önceki durumuna geri getirir. Devam eden çalıştırma, Comet kullanıcı arayüzündeki mevcut Experiment'a günlüğe kaydetmeyi sürdürecektir:
python train.py \
--resume "comet://YOUR_RUN_PATH"Comet Optimizer ile hiperparametre araması#
YOLOv5, Comet's Optimizer ile de entegredir; böylece 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 tarama bilgilerini 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ı bağımsız değişkenleri kabul eder. Taramana ek bağımsız değişkenler iletmek istersen bunları betikten sonra ekle:
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 yollar sunar. Tamamlanmış taramaya sahip bir projeye göz at.
