Comet ile YOLOv5
Bu kılavuz, 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ğını kapsayacaktır.
Comet Hakkında
Comet, veri bilimcilerinin, mühendislerin ve ekip liderlerinin makine öğrenimi ve derin öğrenme modellerini hızlandırmasına ve optimize etmesine yardımcı olan araçlar geliştirir.
Model metriklerini gerçek zamanlı olarak izleyin ve görselleştirin, hiperparametrelerinizi, veri kümelerinizi ve model kontrol noktalarınızı kaydedin ve model tahminlerinizi Comet Özel Panelleri ile görselleştirin! Comet, çalışmalarınızı asla kaybetmemenizi sağlar ve sonuçları paylaşmayı ve her boyuttaki ekipler arasında işbirliği yapmayı kolaylaştırır!
Başlarken
Comet'i Kur
pip install comet_ml
Comet Kimlik Bilgilerini Yapılandırma
YOLOv5 ile Comet'i yapılandırmanın iki yolu vardır.
Kimlik bilgilerinizi ortam değişkenleri aracılığıyla ayarlayabilirsiniz:
Ortam Değişkenleri
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'
Veya bir tane oluşturun .comet.config
dosyasını çalışma dizininizde bulundurun ve kimlik bilgilerinizi oraya ayarlayın:
Comet Yapılandırma Dosyası
[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'
Eğitim Komut Dosyasını Çalıştırın
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
İşte bu kadar! Comet, hiperparametrelerinizi, komut satırı argümanlarınızı, eğitim ve doğrulama metriklerinizi otomatik olarak günlüğe kaydedecektir. Çalışmalarınızı Comet UI'da görselleştirebilir ve analiz edebilirsiniz.
Bir Örnek Deneyin!
Burada tamamlanmış bir çalıştırma örneğine göz atın.
Ya da daha iyisi, bu Colab Not Defterinde kendiniz deneyin:
Otomatik olarak günlüğe kaydet
Varsayılan olarak, Comet aşağıdaki öğeleri günlüğe kaydeder:
Metrikler
- Eğitim ve doğrulama verileri için Kutu Kaybı, Nesne Kaybı, Sınıflandırma Kaybı
- Doğrulama verileri için mAP_0.5, mAP_0.5:0.95 metrikleri
- Doğrulama verileri için Hassasiyet ve Geri Çağırma
Parametreler
- Model Hiperparametreleri
- Komut satırı seçenekleri aracılığıyla iletilen tüm parametreler
Görselleştirmeler
- Doğrulama verileri üzerinde model tahminlerinin Karışıklık Matrisi
- Tüm sınıflar için PR ve F1 eğrileri çizimleri
- Sınıf Etiketlerinin Korelogramı
Comet Günlüğünü Yapılandırma
Comet, eğitim komut dosyasına iletilen komut satırı işaretleri veya ortam değişkenleri aracılığıyla ek verileri günlüğe kaydetmek için 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 predictions
Comet ile Kontrol Noktalarını Günlüğe Kaydetme
Modelleri Comet'e Günlüğe Kaydetme varsayılan olarak devre dışıdır. Etkinleştirmek için şunu iletin: save-period
eğitim komut dosyasına argüman. Bu, günlüğe kaydedilen kontrol noktalarını Comet'e, tarafından sağlanan aralık değerine göre kaydedecektir. save-period
:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
Model Tahminlerini Günlüğe Kaydetme
Varsayılan olarak, model tahminleri (görüntüler, temel doğruluk etiketleri ve sınırlayıcı kutular) Comet'e kaydedilecektir.
Kaydedilen tahminlerin ve ilgili görüntülerin sıklığını şunları geçirerek kontrol edebilirsiniz: bbox_interval
komut satırı argümanı. Tahminler, Comet'in kullanılarak görselleştirilebilir Nesne Algılama Özel Panel. Bu sıklık, her N'inci veri grubuna karşılık gelir. epok. Aşağıdaki örnekte, her epoch için her 2. veri öbeğini kaydediyoruz.
Not: YOLOv5 doğrulama veri yükleyicisi varsayılan olarak 32'lik bir batch size kullanır, bu nedenle günlük kaydı sıklığını buna göre ayarlamanız gerekecektir.
İşte Panel kullanan bir örnek proje
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2
Comet'e kaydedilen Tahmin Görüntülerinin sayısını kontrol etme
YOLOv5'ten tahminleri günlüğe kaydederken, Comet her tahmin kümesiyle ilişkili görüntüleri günlüğe kaydeder. Varsayılan olarak, maksimum 100 doğrulama görüntüsü günlüğe kaydedilir. Şunu kullanarak bu sayıyı artırabilir veya azaltabilirsiniz: COMET_MAX_IMAGE_UPLOADS
ortam değişkeni:
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1
Sınıf Seviyesi Metriklerini Günlüğe Kaydetme
Şunu kullanın: COMET_LOG_PER_CLASS_METRICS
Her sınıf için mAP, kesinlik, geri çağırma, f1'i günlüğe kaydetmek için ortam değişkeni:
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt
Comet Artifacts'e Veri Kümesi Yükleme
Verilerinizi kullanarak saklamak isterseniz Comet Artifacts, bunu şu yolu kullanarak yapabilirsiniz: upload_dataset
bayrağı.
Veri seti, şu bölümde açıklandığı gibi düzenlenmelidir: YOLOv5 dokümantasyonu. Veri kümesi yapılandırması yaml
dosyası, şununla aynı biçimde olmalıdır: coco128.yaml
dosyası.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset
Yüklenen veri kümesini Comet Çalışma Alanınızdaki Artifacts sekmesinde bulabilirsiniz:
Verileri doğrudan Comet UI'da önizleyebilirsiniz:
Artifact'ler sürüm kontrollüdür ve veri kümesi hakkında meta veri eklemeyi de destekler. Comet, veri kümenizdeki meta verileri otomatik olarak günlüğe kaydeder. yaml
dosyası:
Kaydedilmiş bir Artifact kullanmak
Comet Artifacts'ten bir veri kümesi kullanmak isterseniz, şunu ayarlayın path
veri kümenizdeki değişken yaml
dosyasının aşağıdaki Artifact kaynak URL'sini işaret etmesi için:
# 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 komut dosyanıza aktarın:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.pt
Artifact'ler ayrıca, verilerin deney iş akışınız boyunca akışının soyunu izlemenize olanak tanır. Burada, yüklediğiniz veri kümesini kullanan tüm deneyleri gösteren bir grafik görebilirsiniz:
Eğitim Çalışmasına Devam Etme
Eğitim çalıştırmanız herhangi bir nedenle kesintiye uğrarsa, örneğin internet bağlantısı kesilirse, çalıştırmaya şunu kullanarak devam edebilirsiniz: resume
bayrağı ve Comet Çalıştırma Yolu.
Çalıştırma Yolunun biçimi aşağıdaki gibidir comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID
.
Bu, çalıştırmayı kesintiden önceki durumuna geri döndürecektir; bu, modeli bir kontrol noktasından geri yüklemeyi, tüm hiperparametreleri ve eğitim argümanlarını geri yüklemeyi ve orijinal çalıştırmada kullanılmışlarsa Comet veri kümesi Artifact'lerini indirmeyi içerir. Devam ettirilen çalıştırma, Comet UI'daki mevcut Deney'e günlük kaydetmeye devam edecektir:
python train.py \
--resume "comet://YOUR_RUN_PATH"
Comet Optimizer ile Hiperparametre Arama
YOLOv5 ayrıca Comet'in Optimizer'ı ile entegre edilmiştir ve bu da Comet UI'da hiperparametre taramalarını görselleştirmeyi kolaylaştırır.
Bir İyileştirici Taraması Yapılandırma
Comet Optimizer'ı yapılandırmak için, sweep hakkındaki bilgileri içeren bir JSON dosyası oluşturmanız gerekir. Bir örnek dosya şurada sağlanmıştır: utils/loggers/comet/optimizer_config.json
:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"
hpo.py
komut dosyası, ile aynı argümanları kabul eder train.py
. Sweep'inize ek argümanlar geçirmek isterseniz, bunları komut dosyasından sonra eklemeniz yeterlidir:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1
Sonuçları Görselleştirme
Comet, sweep sonuçlarınızı görselleştirmenin çeşitli yollarını sunar. Tamamlanmış bir sweep içeren bir projeye buradan göz atın.