İçeriğe geç

Özel Verileri Eğitin

📚 Bu kılavuzda kendi özel veri setinizi nasıl eğiteceğiniz açıklanmaktadır YOLOv5 🚀.

Başlamadan Önce

Repoyu klonlayın ve requirements.txt dosyasını bir Python>=3.8.0 ortamı dahil olmak üzere PyTorch>=1.8. Modeller ve veri setleri en son YOLOv5 sürümünden otomatik olarak indirilir.

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

Özel Veriler Üzerinde Eğitim

Ultralytics aktif öğrenme

Nesnelerinizi tespit etmek için özel bir model oluşturmak; görüntülerin toplanması ve düzenlenmesi, ilgilenilen nesnelerin etiketlenmesi, bir modelin eğitilmesi, tahminler yapmak için bu modelin vahşi doğaya yerleştirilmesi ve ardından tekrarlamak ve iyileştirmek için uç durum örneklerini toplamak üzere bu yerleştirilmiş modelin kullanılması gibi yinelemeli bir süreçtir.

Lisanslama

Ultralytics iki lisanslama seçeneği sunar:

Daha fazla ayrıntı için bkz. Ultralytics Lisanslama.

YOLOv5 modeller, bu verilerdeki nesnelerin sınıflarını öğrenmek için etiketlenmiş veriler üzerinde eğitilmelidir. Eğitime başlamadan önce veri kümenizi oluşturmak için iki seçenek vardır:

Seçenek 1: Bir Roboflow Veri Seti

1.1 Görüntüleri Toplayın

Modeliniz örnek alarak öğrenecektir. Doğada göreceklerine benzer görüntüler üzerinde eğitim almak son derece önemlidir. İdeal olarak, projenizi nihai olarak dağıtacağınız için aynı yapılandırmadan (kamera, açı, aydınlatma vb.) çok çeşitli görüntüler toplayacaksınız.

Bu mümkün değilse, ilk modelinizi eğitmek için herkese açık bir veri kümesinden başlayabilir ve ardından veri kümenizi ve modelinizi yinelemeli olarak geliştirmek için çıkarım sırasında doğal ortamdan görüntüler örnekleyebilirsiniz.

1.2 Etiket Oluşturma

Görüntüleri topladıktan sonra, modelinizin öğrenebileceği bir temel gerçek oluşturmak için ilgili nesnelere açıklama eklemeniz gerekecektir.

YOLOv5 doğruluklar

Roboflow Annotate, görüntülerinizi ekibinizle birlikte yönetmek, etiketlemek ve YOLOv5'un açıklama formatında dışa aktarmak için basit bir web tabanlı araçtır.

1.3 Veri Setini Şunlar İçin Hazırlayın YOLOv5

Görüntülerinizi Roboflow ile etiketleseniz de etiketlemeseniz de, veri kümenizi YOLO biçimine dönüştürmek, bir YOLOv5 YAML yapılandırma dosyası oluşturmak ve eğitim komut dosyanıza aktarmak üzere barındırmak için kullanabilirsiniz.

Ücretsiz bir Roboflow hesabı oluşturun ve veri kümenizi bir Public çalışma alanını açın, açıklamasız görüntüleri etiketleyin, ardından veri kümenizin bir sürümünü YOLOv5 Pytorch format.

Not: YOLOv5 eğitim sırasında çevrimiçi artırma yapar, bu nedenle YOLOv5 ile eğitim için Roboflow 'de herhangi bir artırma adımı uygulamanızı önermiyoruz. Ancak aşağıdaki ön işleme adımlarını uygulamanızı öneririz:

Önerilen Ön İşleme Adımları

  • Otomatik Yönlendirme - EXIF yönlendirmesini resimlerinizden çıkarmak için.
  • Yeniden Boyutlandır (Uzat) - modelinizin kare giriş boyutuna (640x640 YOLOv5 varsayılanıdır).

Bir sürüm oluşturmak size veri setinizin anlık görüntüsünü verecektir, böylece daha sonra daha fazla görüntü ekleseniz veya yapılandırmasını değiştirseniz bile her zaman geri dönebilir ve gelecekteki model eğitim çalışmalarınızı bununla karşılaştırabilirsiniz.

YOLOv5 Formatında Dışa Aktar

İhracat YOLOv5 Pytorch biçiminde kopyalayın, ardından veri kümenizi indirmek için parçacığı eğitim komut dosyanıza veya not defterinize kopyalayın.

Roboflow veri kümesi indirme snippet'i

Seçenek 2: Manuel Veri Kümesi Oluşturma

2.1 Oluşturma dataset.yaml

COCO128 'deki ilk 128 görüntüden oluşan örnek bir küçük öğretici veri kümesidir. COCO train2017. Bu aynı 128 görüntü, eğitim hattımızın aşırı uyum sağlayabildiğini doğrulamak için hem eğitim hem de doğrulama için kullanılmıştır. data/coco128.yamlaşağıda gösterilen, 1) veri kümesi kök dizinini tanımlayan veri kümesi yapılandırma dosyasıdır path ve göreli yolları train / val / test görüntü dizinleri (veya *.txt görüntü yollarını içeren dosyalar) ve 2) bir sınıf names Sözlük:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

2.2 Etiket Oluşturma

Resimlerinizi etiketlemek için bir açıklama aracı kullandıktan sonra etiketlerinizi YOLO Biçimbir tane ile *.txt görüntü başına dosya (görüntüde nesne yoksa *.txt dosyası gereklidir). Bu dosya *.txt dosya özellikleri şunlardır:

  • Nesne başına bir satır
  • Her satır class x_center y_center width height format.
  • Kutu koordinatları normalleştirilmiş xywh biçiminde (0'dan 1'e kadar). Kutularınız piksel cinsinden ise x_center ve width görüntü genişliğine göre ve y_center ve height görüntü yüksekliğine göre.
  • Sınıf numaraları sıfır endekslidir (0'dan başlar).

Roboflow EK AÇIKLAMALAR

Yukarıdaki resme karşılık gelen etiket dosyası 2 kişi içerir (sınıf 0) ve bir beraberlik (sınıf 27):

Roboflow veri kümesi ön işleme

2.3 Dizinleri Düzenleme

Tren ve val resimlerinizi ve etiketlerinizi aşağıdaki örneğe göre düzenleyin. YOLOv5 varsayar /coco128 içinde bir /datasets dizin yanında ve /yolov5 dizin. YOLOv5 her görüntü için etiketleri otomatik olarak bulur 'nin son örneğini değiştirerek /images/ ile her görüntü yolunda /labels/. Örneğin:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 veri kümesi yapısı

3. Bir Model Seçin

Eğitime başlamak için önceden eğitilmiş bir model seçin. Burada, mevcut ikinci en küçük ve en hızlı model olan YOLOv5s'i seçiyoruz. Tüm modellerin tam bir karşılaştırması için README tablomuza bakın.

YOLOv5 modeller

4. Tren

Veri kümesi, yığın boyutu, görüntü boyutu ve ön eğitimli modellerden birini belirterek COCO128 üzerinde bir YOLOv5s modeli eğitin --weights yolov5s.pt (önerilir) veya rastgele başlatılmış --weights '' --cfg yolov5s.yaml (önerilmez). Önceden eğitilmiş ağırlıklar otomatik olarak en son YOLOv5 sürümü.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

İpucu

💡 Ekle --cache ram veya --cache disk eğitimi hızlandırmak için (önemli RAM/disk kaynakları gerektirir).

İpucu

💡 Her zaman yerel bir veri kümesinden eğitin. Google Drive gibi bağlanmış veya ağ sürücüleri çok yavaş olacaktır.

Tüm eğitim sonuçları şu adrese kaydedilir runs/train/ artan çalışma dizinleri ile, yani runs/train/exp2, runs/train/exp3 vb. Daha fazla ayrıntı için eğitim not defterimizin Eğitim bölümüne bakın. Colab'da Aç Kaggle'da Aç

5. Görselleştirin

Comet Günlüğe Kaydetme ve Görselleştirme 🌟 YENİ

Comet artık YOLOv5 ile tamamen entegre. Model ölçümlerini gerçek zamanlı olarak takip edin ve görselleştirin, hiperparametrelerinizi, veri kümelerinizi ve model kontrol noktalarınızı kaydedin ve Comet Özel Paneller ile model tahminlerinizi görselleştirin! Comet çalışmanızın izini asla kaybetmemenizi sağlar ve sonuçları paylaşmayı ve her büyüklükteki ekipler arasında işbirliği yapmayı kolaylaştırır!

Başlamak çok kolay:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

Bu entegrasyon için desteklenen tüm Comet özellikleri hakkında daha fazla bilgi edinmek için Comet Öğretici. Comet hakkında daha fazla bilgi edinmek isterseniz dokümantasyon. Comet Colab Notebook'u deneyerek başlayın: Colab'da Aç

YOLO UI

ClearML Loglama ve Otomasyon 🌟 YENİ

ClearML deneylerinizi takip etmek, veri seti sürümlerini yönetmek ve hatta eğitim çalışmalarını uzaktan yürütmek için YOLOv5 adresine tamamen entegre edilmiştir. Etkinleştirmek için ClearML:

  • pip install clearml
  • koşmak clearml-init ClearML sunucusuna bağlanmak için

Bir deney yöneticisinden beklenen tüm harika özellikleri elde edersiniz: canlı güncellemeler, model yükleme, deney karşılaştırma vb. ancak ClearML ayrıca taahhüt edilmemiş değişiklikleri ve örneğin yüklü paketleri de izler. Bu sayede ClearML Görevleri (deney dediğimiz şey) farklı makinelerde de tekrarlanabilir! Sadece 1 ekstra satırla, herhangi bir sayıda ClearML Aracı (işçi) tarafından yürütülecek bir kuyrukta bir YOLOv5 eğitim görevi planlayabiliriz.

Veri setinizi sürümlendirmek için ClearML Data'yı kullanabilir ve daha sonra sadece benzersiz kimliğini kullanarak YOLOv5 adresine aktarabilirsiniz. Bu, ekstra güçlük çıkarmadan verilerinizi takip etmenize yardımcı olacaktır. Ayrıntılar için ClearML Öğreticisini keşfedin!

ClearML Deney Yönetimi Kullanıcı Arayüzü

Yerel Günlük Kaydı

Eğitim sonuçları otomatik olarak Tensorboard ve CSV kaydediciler runs/trainolarak her yeni eğitim için oluşturulan yeni bir deney dizini ile runs/train/exp2, runs/train/exp3vb.

Bu dizinde train ve val istatistikleri, mozaikler, etiketler, tahminler ve artırılmış mozaiklerin yanı sıra hassasiyet-geri çağırma (PR) eğrileri ve karışıklık matrisleri gibi metrikler ve grafikler yer almaktadır.

Yerel kayıt sonuçları

Sonuçlar dosyası results.csv her dönemden sonra güncellenir ve ardından şu şekilde çizilir results.png (aşağıda) eğitim tamamlandıktan sonra. Ayrıca herhangi bir results.csv dosyasına manuel olarak erişebilirsiniz:

from utils.plots import plot_results

plot_results('path/to/results.csv')  # plot 'results.csv' as 'results.png'

sonuçlar.png

Sonraki Adımlar

Modeliniz eğitildikten sonra en iyi kontrol noktanızı kullanabilirsiniz best.pt için:

  • Koşmak CLI veya Python yeni görüntüler ve videolar üzerinde çıkarım
  • Eğitim, val ve test bölünmelerinde doğruluğu doğrulayın
  • TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML ve TensorRT formatlarına aktarın
  • Performansı artırmak için hiperparametreleri geliştirin
  • Gerçek dünya görüntülerini örnekleyerek ve veri setinize ekleyerek modelinizi geliştirin

Desteklenen Ortamlar

Ultralytics her biri CUDA, CUDNN gibi temel bağımlılıklarla önceden yüklenmiş bir dizi kullanıma hazır ortam sağlar, Pythonve PyTorchProjelerinizi başlatmak için.

Proje Durumu

YOLOv5 CI

Bu rozet, tüm YOLOv5 GitHub Actions Sürekli Entegrasyon (CI) testlerinin başarıyla geçtiğini gösterir. Bu CI testleri, YOLOv5 'un işlevselliğini ve performansını çeşitli temel yönlerden titizlikle kontrol eder: eğitim, doğrulama, çıkarım, dışa aktarma ve kıyaslamalar. Her 24 saatte bir ve her yeni işlemde yapılan testlerle macOS, Windows ve Ubuntu üzerinde tutarlı ve güvenilir çalışma sağlarlar.



Oluşturuldu 2023-11-12, Güncellendi 2024-01-21
Yazarlar: glenn-jocher (11)

Yorumlar