Makine öğrenimi deney takibi için Comet ML logosu

Comet ile YOLOv5

Bu kılavuz, 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ğını ele alacaktır.

Comet Hakkında

Comet, veri bilimcilerin, 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 takip edip görselleştir, hiperparametrelerini, veri setlerini ve model kontrol noktalarını kaydet ve model tahminlerini Comet Custom Panels ile görselleştir! Comet, çalışmalarının takibini asla kaybetmemeni sağlar ve sonuçları paylaşmayı ve her boyuttaki ekiple iş birliği yapmayı kolaylaştırır!

Başlarken

Comet'i Kur

pip install comet_ml

Comet 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'

Ya da çalışma dizininde bir .comet.config dosyası oluşturup kimlik bilgilerini orada 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.pt

İşte bu kadar! Comet, hiperparametrelerini, komut satırı argümanlarını, eğitim ve doğrulama metriklerini otomatik olarak kaydedecektir. Çalışmalarını Comet arayüzünde görselleştirebilir ve analiz edebilirsin.

YOLOv5 eğitim metriklerini ve deney takibini gösteren Comet paneli

Bir Örneği Dene!

Tamamlanmış bir çalışmanın örneğine buradan göz at.

Ya da daha iyisi, bu Colab Notebook'ta kendin dene:

Colab'da Aç

Otomatik Olarak Kaydet

Varsayılan olarak, Comet aşağıdaki öğeleri kaydedecektir:

Metrikler

  • Eğitim ve doğrulama verileri için Box Loss, Object Loss, Classification Loss
  • Doğrulama verileri için mAP_0.5, mAP_0.5:0.95 metrikleri
  • Doğrulama verileri için Hassasiyet ve Anımsama

Parametreler

  • Model Hiperparametreleri
  • Komut satırı seçenekleri aracılığıyla iletilen tüm parametreler

Görselleştirmeler

  • Doğrulama verileri üzerindeki model tahminlerinin Karmaşıklık Matrisi
  • Tüm sınıflar genelinde PR ve F1 eğrileri için grafikler
  • Sınıf Etiketlerinin Korelogamı

Comet Günlüğünü Yapılandır

Comet, eğitim betiğine iletilen komut satırı bayrakları veya ortam değişkenleri aracılığıyla ek verileri 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 predictions

Kontrol Noktalarını Comet ile Kaydetme

Modellerin Comet'e kaydedilmesi varsayılan olarak devre dışıdır. Etkinleştirmek için eğitim betiğine save-period argümanını ilet. Bu, save-period tarafından sağlanan aralık değerine göre kaydedilen kontrol noktalarını Comet'e kaydedecektir:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --save-period 1

Model Tahminlerini Kaydetme

Varsayılan olarak, model tahminleri (görüntüler, gerçek etiketler ve sınırlayıcı kutular) Comet'e kaydedilir.

Kaydedilen tahminlerin ve ilişkili görüntülerin sıklığını bbox_interval komut satırı argümanını ileterek kontrol edebilirsin. Tahminler, Comet'in Nesne Algılama Özel Paneli kullanılarak görselleştirilebilir. Bu sıklık, her dönem başına N'inci veri kümesine karşılık gelir. Aşağıdaki örnekte, her dönem için her 2. veri kümesini kaydediyoruz.

Not: YOLOv5 doğrulama veri yükleyicisi varsayılan olarak 32 yığın boyutu kullanır, bu nedenle kayıt sıklığını buna göre ayarlaman gerekecektir.

İşte Paneli kullanan örnek bir 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üleri sayısını kontrol etme

YOLOv5'ten tahminleri kaydederken, Comet her tahmin setiyle ilişkili görüntüleri kaydeder. Varsayılan olarak, en fazla 100 doğrulama görüntüsü kaydedilir. COMET_MAX_IMAGE_UPLOADS ortam değişkenini kullanarak bu sayıyı 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 1

Sınıf Düzeyi Metriklerini Kaydetme

Her sınıf için mAP, hassasiyet, anımsama 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.pt

Comet Artifacts'e Veri Seti Yükleme

Verilerini Comet Artifacts kullanarak depolamak istersen, bunu upload_dataset bayrağını kullanarak yapabilirsin.

Veri seti, YOLOv5 belgelerinde açıklandığı gibi düzenlenmelidir. Veri seti 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_dataset

Yüklenen veri setini Comet Çalışma Alanındaki Artifacts sekmesinde bulabilirsin:

Veri seti sürümleme için Comet artifacts paneli

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

Comet veri seti önizleme ve sürüm geçmişi

Artifacts sürümlüdür ve ayrıca veri seti hakkında meta veri eklemeyi destekler. Comet, veri seti yaml dosyanızdan meta verileri otomatik olarak kaydedecektir:

Comet Artifact Meta Verileri

Kayıtlı bir Artifact kullanma

If you would like to use a dataset from Comet Artifacts, set the path variable in your dataset yaml file to point to the following Artifact resource URL:

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

Ardından bu dosyayı eğitim betiğine şu şekilde ilet:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data artifact.yaml \
  --weights yolov5s.pt

Artifacts ayrıca, deneme iş akışınız boyunca verilerin izini sürmenize olanak tanır. Burada, yüklenen veri setini kullanan tüm deneyleri gösteren bir grafiği görebilirsin:

Comet Artifact Soy Ağacı Grafiği

Eğitim Çalışmasını Devam Ettirme

Eğitim çalışman herhangi bir nedenle (örneğin kesintiye uğrayan internet bağlantısı) durdurulursa, resume bayrağını ve Comet Çalışma Yolunu kullanarak çalışmayı devam ettirebilirsin.

Çalışma Yolu şu biçimdedir: comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Bu, çalışmayı kesintiden önceki durumuna geri yükleyecektir; buna kontrol noktasından modeli geri yükleme, tüm hiperparametreleri ve eğitim argümanlarını geri yükleme ve orijinal çalışmada kullanılmışsa Comet veri seti Artifact'lerini indirme dahildir. Devam ettirilen çalışma, Comet arayüzündeki mevcut Deneye kayıt yapmaya devam edecektir:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Comet Optimizer ile Hiperparametre Araması

YOLOv5, Comet'in Optimizer özelliği ile de entegredir, bu da hiperparametre taramalarını Comet arayüzünde görselleştirmeyi basit hale getirir.

Optimizer Taramasını Yapılandırma

Comet Optimizer'ı yapılandırmak için, tarama hakkındaki bilgileri içeren bir JSON dosyası oluşturman gerekecektir. utils/loggers/comet/optimizer_config.json dosyasında örnek bir dosya 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. Taramanıza ek argümanlar iletmek istersen, 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 1

Sonuçları Görselleştirme

Comet, taramanızın sonuçlarını görselleştirmek için birçok yol sunar. Tamamlanmış bir taramaya sahip projeye buradan göz at.

Comet Hiperparametre Görselleştirmesi

Yorumlar