İçeriğe geç

YOLOv5 ' YOLOv5 Özel Veriler Üzerinde Eğitin

📚 Bu kılavuz, kendi özel veri kümenizi kullanarak nasıl eğiteceğinizi açıklamaktadır. YOLOv5 model 🚀. Özel modellerin eğitilmesi, bilgisayarla görme çözümlerinin genel nesne algılamanın ötesinde belirli gerçek dünya uygulamalarına uyarlanmasında temel bir adımdır.

Başlamadan Önce

İlk olarak, gerekli ortamı kurduğunuzdan emin olun. YOLOv5 deposunu klonlayın ve gerekli bağımlılıkları şuradan yükleyin requirements.txt. A Python.8.0 ile çevre PyTorch.8 çok önemlidir. Modeller ve veri setleri en son YOLOv5'ten otomatik olarak indirilir serbest bırakma yerel olarak bulunamazlarsa.

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

Özel Veriler Üzerinde Eğitim

Veri toplama, etiketleme, eğitim, dağıtım ve uç durum koleksiyonunu gösteren Ultralytics aktif öğrenme döngüsü diyagramı

Özel bir nesne algılama modeli geliştirmek yinelemeli bir süreçtir:

  1. Görüntüleri Toplayın ve Düzenleyin: Özel görevinizle ilgili görselleri toplayın. Yüksek kaliteli, çeşitli veriler çok önemlidir. Veri Toplama ve Ek Açıklama kılavuzumuza bakın.
  2. Nesneleri Etiketleyin: Görüntülerinizdeki ilgi çekici nesnelere doğru bir şekilde açıklama ekleyin.
  3. Bir Model Eğitin: YOLOv5 modelinizi eğitmek için etiketli verileri kullanın. Önceden eğitilmiş ağırlıklarla başlayarak transfer öğrenmeden yararlanın.
  4. Dağıtın ve Tahmin Edin: Yeni, görülmemiş veriler üzerinde çıkarım yapmak için eğitilmiş modeli kullanın.
  5. Uç Durumları Toplayın: Modelin kötü performans gösterdiği senaryoları(uç durumlar) belirleyin ve sağlamlığı artırmak için veri setinize benzer veriler ekleyin. Döngüyü tekrarlayın.

Ultralytics HUB, veri kümesi yönetimi, model eğitimi ve dağıtımı dahil olmak üzere tüm bu makine öğrenimi operasyonları (MLOps) döngüsü için kolaylaştırılmış, kodsuz bir çözüm sunar.

Lisanslama

Ultralytics , çeşitli kullanım senaryolarına uyum sağlamak için iki lisanslama seçeneği sunar:

  • AGPL-3.0 Lisansı: OSI onaylı bu açık kaynak lisansı, açık işbirliği ve bilgi paylaşımı konusunda tutkulu öğrenciler, araştırmacılar ve meraklılar için idealdir. Türetilmiş çalışmaların aynı lisans altında paylaşılmasını gerektirir. Tüm ayrıntılar için LICENSE dosyasına bakın.
  • Kurumsal Lisans: Ticari uygulamalar için tasarlanan bu lisans, Ultralytics yazılımının ve AI modellerinin AGPL-3.0'ın açık kaynak koşulları olmadan ticari ürün ve hizmetlere sorunsuz entegrasyonuna izin verir. Projeniz ticari dağıtım gerektiriyorsa, bir Kurumsal Lisans talep edin.

Ultralytics Lisanslama sayfasında lisanslama seçeneklerimizi daha fazla keşfedin.

Eğitime başlamadan önce veri kümesinin hazırlanması çok önemlidir.

1. Bir Veri Kümesi Oluşturun

YOLOv5 modelleri, nesne sınıflarının görsel özelliklerini öğrenmek için etiketli verilere ihtiyaç duyar. Veri setinizi doğru şekilde düzenlemek çok önemlidir.

1.1 Oluşturma dataset.yaml

Veri kümesi yapılandırma dosyası (örn, coco128.yaml) veri kümesinin yapısını, sınıf adlarını ve görüntü dizinlerine giden yolları ana hatlarıyla belirtir. COCO128 kapsamlı veri setinden ilk 128 görüntüyü içeren küçük bir örnek veri seti olarak hizmet vermektedir. COCO veri kümesi. Eğitim hattını hızlı bir şekilde test etmek ve aşağıdaki gibi olası sorunları teşhis etmek için kullanışlıdır aşırı uyum.

Bu dataset.yaml dosya yapısı şunları içerir:

  • path: Veri kümesini içeren kök dizin.
  • train, val, test: Göreceli yollar path Eğitim, doğrulama ve test setleri için görüntü yollarını listeleyen görüntüleri veya metin dosyalarını içeren dizinlere.
  • names: Sınıf indekslerini (0'dan başlayarak) karşılık gelen sınıf adlarıyla eşleyen bir sözlük.

Aşağıdakiler için yapı coco128.yaml (GitHub'da görüntüle):

# Dataset root directory relative to the yolov5 directory
path: ../datasets/coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

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

1.2 Otomatik Etiketleme için Modellerden Yararlanma

Araçları kullanarak manuel etiketleme yaygın bir yaklaşım olsa da, süreç zaman alıcı olabilir. Temel modellerdeki son gelişmeler, ek açıklama sürecini otomatikleştirmek veya yarı otomatikleştirmek için olanaklar sunmakta ve potansiyel olarak veri kümesi oluşturmayı önemli ölçüde hızlandırmaktadır. Etiket oluşturmaya yardımcı olabilecek birkaç model örneğini aşağıda bulabilirsiniz:

  • Google Gemini: Gemini gibi büyük multimodal modeller güçlü görüntü anlama yeteneklerine sahiptir. YOLO formatındaki etiketlere dönüştürülebilen sınırlayıcı kutular veya açıklamalar oluşturarak görüntülerdeki nesneleri tanımlamaları ve bulmaları istenebilir. Sağlanan eğitim not defterinde potansiyelini keşfedin.
  • SAM2 (Segment Anything Model 2): SAM2 gibi segmentasyona odaklanan temel modeller, nesneleri yüksek hassasiyetle tanımlayabilir ve tasvir edebilir. Öncelikle segmentasyon için olsa da, ortaya çıkan maskeler genellikle nesne algılama görevleri için uygun sınırlayıcı kutu ek açıklamalarına dönüştürülebilir.
  • YOLOWorld: Bu model açık kelime dağarcığı algılama yetenekleri sunar. İlgilendiğiniz nesnelerin metin açıklamalarını sağlayabilirsiniz ve YOLOWorld bu belirli sınıflar üzerinde önceden eğitim almadan bunları görüntülerde bulabilir. Bu, ilk etiketleri oluşturmak için bir başlangıç noktası olarak kullanılabilir ve daha sonra rafine edilebilir.

Bu modellerin kullanılması bir "ön etiketleme" adımı sağlayarak gereken manuel çabayı azaltabilir. Ancak, kalite eğitimli YOLOv5 modelinizin performansını doğrudan etkilediğinden, doğruluk ve tutarlılığı sağlamak için otomatik olarak oluşturulan etiketleri gözden geçirmek ve iyileştirmek çok önemlidir. Etiketlerinizi oluşturduktan (ve potansiyel olarak düzelttikten) sonra YOLO Biçim: bir *.txt olarak bir nesneyi temsil eden her bir satır ile görüntü başına dosya class_index x_center y_center width height (normalleştirilmiş koordinatlar, sıfır endeksli sınıf). Bir görüntüde ilgilenilen nesne yoksa, buna karşılık gelen *.txt dosyasına ihtiyaç vardır.

YOLO formatı *.txt dosya özellikleri kesindir:

  • Nesne sınırlayıcı kutusu başına bir satır.
  • Her satır şunları içermelidir: class_index x_center y_center width height.
  • Koordinatlar şu şekilde olmalıdır normalleştirilmiş piksel değerlerini 0 ile 1 arasında bir aralığa bölün. x_center ve width görüntünün toplam genişliğine bölün ve y_center ve height görüntünün toplam yüksekliği ile çarpılır.
  • Sınıf indeksleri sıfır indekslidir (yani, ilk sınıf şu şekilde temsil edilir 0ikincisi ise 1ve benzeri).

İki kişi ve kravat açıklamalı örnek görüntü

Yukarıdaki resme karşılık gelen ve iki 'kişi' nesnesi içeren etiket dosyası (sınıf indeksi 0) ve bir 'bağ' nesnesi (sınıf indeksi 27), şu şekilde görünecektir:

Açıklamalı görüntü için örnek YOLO biçimli etiket dosyası içeriği

1.3 Dizinleri Düzenleme

Kendinizi yapılandırın veri kümeleri dizinini aşağıda gösterildiği gibi ayarlar. Varsayılan olarak, YOLOv5 veri kümesi dizinini öngörür (örn, /coco128) içinde bulunması için /datasets bulunan klasör bitişiğinde ve /yolov5 depo dizini.

YOLOv5 , her bir görüntü için etiketleri otomatik olarak bulur. /images/ ile görüntü yolunda /labels/. Örneğin:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

Önerilen dizin yapısı şöyledir:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

Önerilen YOLOv5 veri kümesi dizin yapısını gösteren diyagram

2. Bir Model Seçin

Eğitim sürecini başlatmak için önceden eğitilmiş bir model seçin. Önceden eğitilmiş ağırlıklarla başlamak, sıfırdan eğitime kıyasla öğrenmeyi önemli ölçüde hızlandırır ve performansı artırır. YOLOv5 , her biri hız ve doğruluğu farklı şekilde dengeleyen çeşitli model boyutları sunar. Örneğin, YOLOv5s ikinci en küçük ve en hızlı modeldir ve kaynakların kısıtlı olduğu ortamlar için uygundur. Mevcut tüm modellerin ayrıntılı bir karşılaştırması için README tablosuna bakın.

Boyut, hız ve doğruluğu gösteren YOLOv5 modellerinin karşılaştırma tablosu

3. Tren

Başlayın model eği̇ti̇mi̇ kullanarak train.py senaryo. Temel argümanlar şunları içerir:

  • --img: Girişi tanımlar görüntü boyutu (örn, --img 640). Daha büyük boyutlar genellikle daha iyi doğruluk sağlar ancak daha fazla GPU belleği gerektirir.
  • --batch: Şunları belirler parti büyüklüğü (örn, --batch 16). GPU 'nuzun kaldırabileceği en büyük boyutu seçin.
  • --epochs: Toplam eğitim sayısını belirtir çağlar (örn, --epochs 100). Bir epok, tüm eğitim veri kümesi üzerinden tam bir geçişi temsil eder.
  • --data: Size giden yol dataset.yaml dosyası (örn, --data coco128.yaml).
  • --weights: Başlangıç ağırlıkları dosyasının yolu. Önceden eğitilmiş ağırlıkları kullanarak (örn, --weights yolov5s.pt) daha hızlı yakınsama ve üstün sonuçlar için şiddetle tavsiye edilir. Sıfırdan eğitmek için (çok büyük bir veri kümeniz ve özel ihtiyaçlarınız yoksa tavsiye edilmez) --weights '' --cfg yolov5s.yaml.

Önceden eğitilmiş ağırlıklar, yerel olarak bulunamazsa en son YOLOv5 sürümünden otomatik olarak indirilir.

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Antrenman Hızını Optimize Edin

💡 Çalışan --cache ram veya --cache disk veri kümesi görüntülerini önbelleğe almak için RAM veya yerel diske aktarır. Bu, özellikle veri kümesi I/O (Giriş/Çıkış) işlemleri darboğaz oluşturduğunda eğitimi önemli ölçüde hızlandırır. Bunun önemli miktarda RAM veya disk alanı gerektirdiğini unutmayın.

Yerel Veri Depolama

💡 Her zaman yerel olarak depolanan veri kümelerini kullanarak eğitim yapın. Ağ sürücülerinden ( Google Drive gibi) veya uzak depolama alanından verilere erişmek önemli ölçüde daha yavaş olabilir ve eğitim performansını engelleyebilir. Veri setinizi yerel bir SSD'ye kopyalamak genellikle en iyi uygulamadır.

Ağırlıklar ve günlükler de dahil olmak üzere tüm eğitim çıktıları runs/train/ dizinini oluşturur. Her eğitim oturumu yeni bir alt dizin oluşturur (örn, runs/train/exp, runs/train/exp2vb.). Etkileşimli, uygulamalı bir deneyim için resmi eğitim not defterlerimizdeki eğitim bölümünü keşfedin: Colab'da Aç Kaggle'da Aç

4. Görselleştirin

YOLOv5 , eğitim ilerlemesini görselleştirmek, sonuçları değerlendirmek ve performansı gerçek zamanlı olarak izlemek için çeşitli araçlarla sorunsuz bir şekilde entegre olur.

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

Comet kapsamlı deney takibi için tamamen entegre edilmiştir. Metrikleri canlı olarak görselleştirin, hiperparametreleri kaydedin, veri kümelerini ve model kontrol noktalarını yönetin ve etkileşimli Comet Özel Panellerini kullanarak model tahminlerini analiz edin.

Başlamak çok kolay:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

Desteklenen özellikleri daha derinlemesine incelemek için Comet Entegrasyon Kılavuzu. Comet'in yetenekleri hakkında daha fazla bilgiyi resmi dokümantasyon. Canlı bir demo için Comet Colab Notebook'u deneyin: Colab'da Aç

YOLOv5 eğitim metriklerini ve görselleştirmelerini gösteren Comet kullanıcı arayüzü

ClearML Loglama ve Otomasyon 🌟 YENİ

ClearML entegrasyonu, ayrıntılı deney takibi, veri seti sürüm yönetimi ve hatta eğitim çalışmalarının uzaktan yürütülmesini sağlar. ClearML 'yi bu basit adımlarla etkinleştirin:

  • Paketi yükleyin: pip install clearml
  • ClearML'yi başlatın: Çalıştır clearml-init ClearML sunucunuza bağlanmak için bir kez (kendi barındırdığınız veya ücretsiz katman).

ClearML , deney ayrıntılarını, model yüklemelerini, karşılaştırmaları, taahhüt edilmemiş kod değişikliklerini ve yüklü paketleri otomatik olarak yakalayarak tam tekrarlanabilirlik sağlar. ClearML Data'yı kullanarak uzak aracılarda eğitim görevlerini kolayca planlayabilir ve veri kümesi sürümlerini yönetebilirsiniz. Kapsamlı ayrıntılar için ClearML Entegrasyon Kılavuzu 'nu inceleyin.

Bir YOLOv5 eğitim çalışması için grafikleri ve günlükleri gösteren ClearML Deney Yönetimi UI'si

Yerel Günlük Kaydı

Eğitim sonuçları otomatik olarak TensorBoard ve şu şekilde kaydedilir CSV belirli bir deney dizini içindeki dosyalar (örn, runs/train/exp). Kaydedilen veriler şunları içerir:

  • Eğitim ve doğrulama kaybı ve performans ölçümleri.
  • Uygulanmış büyütmeleri gösteren örnek görüntüler (mozaikler gibi).
  • Görsel inceleme için model tahminlerinin yanı sıra temel gerçek etiketleri.
  • Hassasiyet-Tekrar Arama(PR) eğrileri gibi temel değerlendirme metrikleri.
  • Ayrıntılı sınıf bazlı performans analizi için karışıklık matrisleri.

YOLOv5 eğitiminden grafikler ve görüntü mozaikleri içeren yerel günlük kaydı sonuçlarına örnek

Bu results.csv dosyası her dönemden sonra güncellenir ve şu şekilde çizilir results.png eğitim sona erdiğinde. Ayrıca herhangi bir results.csv dosyasını sağlanan yardımcı program işlevini kullanarak manuel olarak açın:

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

Epoklar üzerinden mAP, precision, recall ve loss gibi eğitim metriklerini gösteren örnek results.png grafiği

5. Sonraki Adımlar

Eğitimin başarıyla tamamlanmasının ardından, en iyi performans gösteren model kontrol noktası (best.pt) kaydedilir ve dağıtım veya daha fazla iyileştirme için hazırdır. Potansiyel sonraki adımlar şunları içerir:

Desteklenen Ortamlar

Ultralytics , aşağıdaki gibi temel bağımlılıklarla donatılmış kullanıma hazır ortamlar sağlar CUDA, cuDNN, Pythonve PyTorchBu da sorunsuz bir başlangıcı kolaylaştırır.

Proje Durumu

YOLOv5 Sürekli Entegrasyon Durum Rozeti

Bu rozet, tüm YOLOv5 GitHub Actions Sürekli Entegrasyon (CI) testlerinin başarıyla geçtiğini gösterir. Bu titiz CI testleri, macOS, Windows ve Ubuntu işletim sistemlerinde eğitim, doğrulama, çıkarım, dışa aktarma ve kıyaslamalar dahil olmak üzere temel işlevleri kapsar. Testler her 24 saatte bir ve her kod işlendiğinde otomatik olarak yürütülür, böylece tutarlı kararlılık ve optimum performans sağlanır.

SSS

Sıkça Sorulan Sorular

YOLOv5 adresini özel veri kümem üzerinde nasıl eğitebilirim?

YOLOv5 'i özel bir veri kümesi üzerinde eğitmek birkaç önemli adım içerir:

  1. Veri Setinizi Hazırlayın: Görüntüleri toplayın ve bunlara açıklama ekleyin. Ek açıklamaların gereken şekilde olduğundan emin olun YOLO Biçim. Görüntüleri ve etiketleri şu şekilde düzenleyin train/ ve val/ (ve isteğe bağlı olarak test/) dizinleri. Aşağıdaki gibi modelleri kullanmayı düşünün Google Gemini, SAM2veya YOLOWorld etiketleme sürecine yardımcı olmak veya bu süreci otomatikleştirmek için (bkz. Bölüm 1.2).
  2. Ortamınızı Kurun: YOLOv5 deposunu klonlayın ve aşağıdakileri kullanarak bağımlılıkları yükleyin pip install -r requirements.txt.
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Veri Kümesi Yapılandırması Oluşturma: Veri kümesi yollarını, sınıf sayısını ve sınıf adlarını bir dataset.yaml Dosya.
  4. Eğitime Başlayın: Yürütmek train.py komut dosyasına yol sağlayarak dataset.yaml, istenen önceden eğitilmiş ağırlıklar (örn, yolov5s.pt), görüntü boyutu, yığın boyutu ve epok sayısı.
    python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
    

YOLO modellerimi eğitmek için neden Ultralytics HUB kullanmalıyım?

Ultralytics HUB, genellikle herhangi bir kod yazmaya gerek kalmadan tüm YOLO modeli geliştirme yaşam döngüsünü kolaylaştırmak için tasarlanmış kapsamlı bir platformdur. Temel faydaları şunlardır:

  • Basitleştirilmiş Eğitim: Önceden yapılandırılmış ortamları ve sezgisel bir kullanıcı arayüzünü kullanarak modelleri kolayca eğitin.
  • Entegre Veri Yönetimi: Veri kümelerinizi platform içinde yükleyin, sürüm kontrolü yapın ve verimli bir şekilde yönetin.
  • Gerçek Zamanlı İzleme: Eğitim ilerlemesini takip edin ve aşağıdaki gibi entegre araçları kullanarak performans ölçümlerini görselleştirin Comet veya TensorBoard.
  • İşbirliği Özellikleri: Paylaşılan kaynaklar, proje yönetim araçları ve kolay model paylaşımı sayesinde ekip çalışmasını kolaylaştırır.
  • Kodsuz Dağıtım: Eğitimli modelleri doğrudan çeşitli hedeflere dağıtın.

Pratik bir adım için blog yazımıza göz atın: Ultralytics HUB ile Özel Modellerinizi Nasıl Eğitirsiniz?

Açıklamalı verilerimi YOLOv5 formatına nasıl dönüştürebilirim?

İster manuel olarak açıklama ekleyin ister otomatik araçlar kullanın (Bölüm 1.2'de bahsedilenler gibi), nihai etiketler YOLOv5'in gerektirdiği özel YOLOv5 formatında olmalıdır:

  • Bir tane oluşturun .txt her görüntü için dosya. Dosya adı, görüntü dosya adıyla eşleşmelidir (örn, image1.jpg karşılık gelir image1.txt). Bu dosyaları bir labels/ dizinine paralel olarak images/ dizini (örn, ../datasets/mydataset/labels/train/).
  • İçindeki her satır .txt dosyası bir nesne ek açıklamasını temsil eder ve formatı izler: class_index center_x center_y width height.
  • Koordinatlar (center_x, center_y, width, height) olmalıdır normalleştirilmiş (0,0 ile 1,0 arasındaki değerler) görüntünün boyutlarına göre.
  • Sınıf endeksleri şunlardır sıfır tabanlı (birinci sınıf 0ikincisi ise 1vb.).

Birçok manuel açıklama aracı YOLO formatına doğrudan dışa aktarma imkanı sunar. Otomatik modeller kullanıyorsanız, çıktılarını (örneğin, sınırlayıcı kutu koordinatları, segmentasyon maskeleri) bu özel normalleştirilmiş metin formatına dönüştürmek için komut dosyalarına veya işlemlere ihtiyacınız olacaktır. Nihai veri kümesi yapınızın kılavuzda verilen örneğe uygun olduğundan emin olun. Daha fazla ayrıntı için Veri Toplama ve Açıklama Kılavuzumuza bakın.

Ticari uygulamalarda YOLOv5 kullanmak için lisanslama seçenekleri nelerdir?

Ultralytics , farklı ihtiyaçlara göre uyarlanmış esnek lisanslama sağlar:

  • AGPL-3.0 Lisansı: Bu açık kaynak lisansı akademik araştırmalar, kişisel projeler ve açık kaynak uyumluluğunun kabul edilebilir olduğu durumlar için uygundur. Değişikliklerin ve türev çalışmaların da AGPL-3.0 altında açık kaynaklı olmasını zorunlu kılar. AGPL-3.0 Lisans ayrıntılarını inceleyin.
  • Kurumsal Lisans: YOLOv5 'i tescilli ürünlere veya hizmetlere entegre eden işletmeler için tasarlanmış ticari bir lisans. Bu lisans, AGPL-3.0'ın açık kaynak yükümlülüklerini ortadan kaldırarak kapalı kaynak dağıtımına izin verir. Daha fazla bilgi almak veya Kurumsal Lisans talep etmek için Lisanslama sayfamızı ziyaret edin.

Projenizin gereksinimlerine ve dağıtım modeline en uygun lisansı seçin.



📅1 yıl önce oluşturuldu ✏️ 1 ay önce güncellendi

Yorumlar